bin/145100: [patch] pkg_add(1) - remove hardcoded versioning data from add/main.c

Garrett Cooper gcooper at FreeBSD.org
Sun Mar 28 19:10:12 UTC 2010


The following reply was made to PR bin/145100; it has been noted by GNATS.

From: Garrett Cooper <gcooper at FreeBSD.org>
To: Garrett Cooper <gcooper at freebsd.org>
Cc: bug-followup at freebsd.org, freebsd-bugs at freebsd.org
Subject: Re: bin/145100: [patch] pkg_add(1) - remove hardcoded versioning data 
	from add/main.c
Date: Sun, 28 Mar 2010 12:07:07 -0700

 Hi Ken,
 
 On Sun, Mar 28, 2010 at 2:17 AM, Garrett Cooper <gcooper at freebsd.org> wrote=
 :
 > On Sun, Mar 28, 2010 at 2:13 AM, Garrett Cooper <gcooper at freebsd.org> wro=
 te:
 >> On Sun, Mar 28, 2010 at 1:50 AM, =A0<FreeBSD-gnats-submit at freebsd.org> w=
 rote:
 >>> Thank you very much for your problem report.
 >>> It has the internal identification `bin/145100'.
 >>> The individual assigned to look at your
 >>> report is: freebsd-bugs.
 >>>
 >>> You can access the state of your problem report at any time
 >>> via this link:
 >>>
 >>> http://www.freebsd.org/cgi/query-pr.cgi?pr=3D145100
 >>>
 >>>>Category: =A0 =A0 =A0 bin
 >>>>Responsible: =A0 =A0freebsd-bugs
 >>>>Synopsis: =A0 =A0 =A0 [patch] pkg_add(1) - remove hardcoded versioning =
 data from add/main.c
 >>>>Arrival-Date: =A0 Sun Mar 28 08:50:02 UTC 2010
 >>
 >> Supported hierarchies are done like:
 >>
 >> =A0 =A0/<machine>/packages-<release-lowercase>
 >>
 >> Corrected with this diff.
 >
 > =A0 =A0One other minor sidenote: this patch requires minor a basename(3)
 > addition to pkg_add(1) as described in bin/121165 . It's relatively
 > trivial to add, and only needs to be done for lib/lib.h and add/main.c
 > ; so either I can yank the diagnostic message, or add the minor change
 > to the diff -- whichever is more preferred.
 
 > There are a couple of issues this patch doesn't seen to address.
 > Here is an example of what's in the uname structure on a machine
 > that's had two patches applied to it (SA/EN as published by the
 > Security Team):
 >
 > bauer 11 % cat uname.c
 > #include <stdio.h>
 > #include <stdlib.h>
 > #include <sys/utsname.h>
 >
 > int
 > main(int argc, char *argv[])
 > {
 >        struct utsname un;
 >
 >        if (uname(&un)) {
 >                perror("uname");
 >                exit (1);
 >        }
 >        printf("sysname: %s\n", un.sysname);
 >        printf("nodename: %s\n", un.nodename);
 >        printf("release: %s\n", un.release);
 >        printf("version: %s\n", un.version);
 >        printf("machine: %s\n", un.machine);
 > }
 > bauer 12 % ./uname
 > sysname: FreeBSD
 > nodename: bauer.cse.buffalo.edu
 > release: 8.0-RELEASE-p2
 > version: FreeBSD 8.0-RELEASE-p2 #0: Fri Mar 26 16:58:16 EDT 2010
 > root at bauer.cse.buffalo.edu:/usr/obj/usr/src/sys/FIREWALL
 > machine: amd64
 > bauer 13 %
 >
 > So unless I'm mis-reading your patch it would be looking for
 > packages in
 >
 >  /ftp/pub/FreeBSD/ports/amd64/packages-8.0-release-p2
 >
 > which doesn't exist.
 >
 > That problem isn't too hard to solve but the other problem is.
 > There are times during release cycles that branches wind up
 > with even weirder names than just tacking -p<something> on to
 > the end of the name.  For example during the 7.3 release cycle
 > the stable/7 branch was named 7.3-PRERELEASE during the entire
 > cycle.  Once it got created the releng/7.3 branch was named
 > 7.3-RC1, and progressed to 7.3-RC2.  And take a look at what
 > a system installed from one of the Monthly Snapshots gives for
 > uname output, I don't have one handy at the moment but if I
 > recall correctly it has the snapshot's name embedded in the
 > uname output.  The mechanism that does that is what I use to
 > name the BETA releases as well, I never actually commit the
 > BETA1, BETA2, etc. names to a stable branch because it tends
 > to freak out people using those branches (we wind up getting
 > mail saying "Hey, RELENG_7 is a stable branch!  Why does
 > a machine updated today on RELENG_7 say it's *BETA1*???")
 > during release cycles; the PRERELEASE thing is an attempt
 > to avoid that...).  If you do a release build specifying
 > BUILDNAME on the command line it will use that as what gets
 > put into sys/conf/newvers.sh as the $RELEASE.  And that's
 > the source of what uname gives as the release field.
 
     Ouch. You pointed out a flaw in my assumptions that would
 definitely invalidate this proposed change. Now I'm teetering between
 whether or not it's wise to actually make this change.
 
     Here are some questions though:
 
 1. What happens if compat libraries are used with a specifically built
 copy of pkg_install? Game over, right -- because the __FreeBSD_version
 is encoded in the binary?
 2. Should prereleases really be allowed to use release-based packages?
 Probably not right -- generally the functionality is fixed in each
 release, but it can change dramatically before the official release is
 made, correct (take the 7.0-RELEASE for example...)?
 3. What also happens if FreeBSD developer goes and messes up a package
 before the release 7.2-RC2, but it was working in 7.2-RC1 -- the
 individual will be toast right because they'll `automatically upgrade'
 to the latest version and can't go back to the earlier version without
 grabbing the CD, correct?
 
 Thanks,
 -Garrett


More information about the freebsd-bugs mailing list