From owner-freebsd-ports@FreeBSD.ORG Thu Dec 14 15:50:01 2006 Return-Path: X-Original-To: ports@freebsd.org Delivered-To: freebsd-ports@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 509E216A51F for ; Thu, 14 Dec 2006 15:50:01 +0000 (UTC) (envelope-from bsd-unix@earthlink.net) Received: from pop-gadwall.atl.sa.earthlink.net (pop-gadwall.atl.sa.earthlink.net [207.69.195.61]) by mx1.FreeBSD.org (Postfix) with ESMTP id EC8B443D1F for ; Thu, 14 Dec 2006 15:47:58 +0000 (GMT) (envelope-from bsd-unix@earthlink.net) Received: from fl-71-54-28-212.dhcp.embarqhsd.net ([71.54.28.212] helo=kt.weeeble.com) by pop-gadwall.atl.sa.earthlink.net with smtp (Exim 3.36 #1) id 1Guspr-00039w-00 for ports@freebsd.org; Thu, 14 Dec 2006 10:49:27 -0500 Date: Thu, 14 Dec 2006 10:49:26 -0500 From: Randy Pratt To: ports@freebsd.org Message-Id: <20061214104926.80fd600a.bsd-unix@earthlink.net> X-Mailer: Sylpheed version 2.2.10 (GTK+ 2.10.6; i386-portbld-freebsd6.2) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: Subject: Portupgrade and /var/db/pkg/*/+CONTENTS X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Dec 2006 15:50:01 -0000 I've spent many hours in the past week or so trying to understand what I'm seeing. In the interest of brevity I've tried to omit non-relevant detail but this still ends up longer than I would like. It seems that portupgrade is "deleting" dependencies during the update process. This is happening for many ports and I only chose the recent upgrading 'curl-7.15.5_1' to 'curl-7.16.0' (ftp/curl) to demonstrate what I'm observing. As a reference I pulled these excerpts from a backup of my previous /var/db/pkg/* for ports that depended on ftp/curl: apsfilter-7.2.8/+CONTENTS:@pkgdep curl-7.15.5_1 apsfilter-7.2.8/+CONTENTS:@comment DEPORIGIN:ftp/curl curl-7.15.5_1/+CONTENTS:@name curl-7.15.5_1 curl-7.15.5_1/+CONTENTS:@comment ORIGIN:ftp/curl gnupg-1.4.6_1/+CONTENTS:@pkgdep curl-7.15.5_1 gnupg-1.4.6_1/+CONTENTS:@comment DEPORIGIN:ftp/curl gnupg-devel-1.9.22_1/+CONTENTS:@pkgdep curl-7.15.5_1 gnupg-devel-1.9.22_1/+CONTENTS:@comment DEPORIGIN:ftp/curl streamtuner-0.99.99_5/+CONTENTS:@pkgdep curl-7.15.5_1 streamtuner-0.99.99_5/+CONTENTS:@comment DEPORIGIN:ftp/curl sylpheed-2.2.10/+CONTENTS:@pkgdep curl-7.15.5_1 sylpheed-2.2.10/+CONTENTS:@comment DEPORIGIN:ftp/curl vorbis-tools-1.1.1_1,3/+CONTENTS:@pkgdep curl-7.15.5_1 vorbis-tools-1.1.1_1,3/+CONTENTS:@comment DEPORIGIN:ftp/curl wmweather-2.4.3/+CONTENTS:@pkgdep curl-7.15.5_1 wmweather-2.4.3/+CONTENTS:@comment DEPORIGIN:ftp/curl This is from my log of the updating of ftp/curl: pkg_delete: package 'curl-7.15.5_1' is required by these other packages and may not be deinstalled (but I'll delete it anyway): gnupg-1.4.6_1 streamtuner-0.99.99_5 vorbis-tools-1.1.1_1,3 wmweather-2.4.3 I noted that print/apsfilter, security/gnupg-devel and mail/sylpheed2 were missing. Checking /var/db/pkg does indeed show that their dependency on ftp/curl has been removed. This happens at the time that the 'but I'll delete it anyway' step occurs. $ grep DELETED /var/db/pkg/*/+CONTENTS /var/db/pkg/apsfilter-7.2.8/+CONTENTS:@comment DELETED:pkgdep curl-7.16.0 /var/db/pkg/apsfilter-7.2.8/+CONTENTS:@commentDELETED:DEPORIGIN:ftp/curl /var/db/pkg/gnupg-devel-1.9.22_1/+CONTENTS:@comment DELETED:pkgdep curl-7.16.0 /var/db/pkg/gnupg-devel-1.9.22_1/+CONTENTS:@comment DELETED:DEPORIGIN:ftp/curl /var/db/pkg/sylpheed-2.2.10/+CONTENTS:@comment DELETED:pkgdep curl-7.16.0 /var/db/pkg/sylpheed-2.2.10/+CONTENTS:@comment DELETED:DEPORIGIN:ftp/curl That is also reflected in checking for ports that now depend on ftp/curl: pkg_info -R curl-\* Information for curl-7.16.0: Required by: gnupg-1.4.6_2 streamtuner-0.99.99_6 vorbis-tools-1.1.1_2,3 wmweather-2.4.3_1 I decided to force an update of the ports which had dependencies on ftp/curl deleted: portupgrade -f apsfilter-7.2.8 gnupg-devel-1.9.22_1 sylpheed-2.2.10 All of the dependencies on ftp/curl were restored: pkg_info -R curl-\* Information for curl-7.16.0: Required by: apsfilter-7.2.8 gnupg-1.4.6_2 gnupg-devel-1.9.22_1 streamtuner-0.99.99_6 sylpheed-2.2.10 vorbis-tools-1.1.1_2,3 wmweather-2.4.3_1 I was then curious what would happen if I forced a portupgrade of ftp/curl. I thought it might remove the dependencies again but it did not. They all remained this time. Why did a portupgrade to a new version remove dependencies when a forced update of the same version did not? I'm probably not understanding the role of the "DELETED" notation in +CONTENTS . I decided to take a look at how dependences were noted in the ports tree with 'make'. I double checked for anything out of the ordinary in etc/make.conf: CFLAGS= -O -pipe PERL_VER=5.8.8 PERL_VERSION=5.8.8 This is the relevant portion of /usr/local/etc/pkgtools.conf for MAKE_ARGS since these have impact on portupgrade dependencies: 'print/apsfilter' => 'BATCH=yes APSFILTER_ALL=yes PAPERSIZE=letter', Each of the dependencies being deleted were checked with various incantations to display dependencies: cd /usr/ports/print/sylpheed make build-depends-list: returns nothing for curl. make pretty-print-build-depends-list: returns nothing for curl. make run-depends-list: returns nothing for curl. make pretty-print-run-depends-list: includes curl-7.16.0 make all-depends-list: includes /usr/ports/ftp/curl cd /usr/ports/security/gnupg-devel make build-depends-list: returns nothing for curl make pretty-print-build-depends-list: returns nothing for curl. make run-depends-list: returns nothing for curl. make pretty-print-run-depends-list: includes curl-7.16.0 make all-depends-list: includes /usr/ports/ftp/curl cd /usr/ports/print/apsfilter make BATCH=yes APSFILTER_ALL=yes PAPERSIZE=letter build-depends-list: returns nothing. make BATCH=yes APSFILTER_ALL=yes PAPERSIZE=letter pretty-print-run-depends-list: returns nothing. make BATCH=yes APSFILTER_ALL=yes PAPERSIZE=letter run-depends-list: returns nothing for curl. make BATCH=yes APSFILTER_ALL=yes PAPERSIZE=letter pretty-print-run-depends-list: returns nothing for curl. make BATCH=yes APSFILTER_ALL=yes PAPERSIZE=letter all-depends-list: returns /usr/ports/ftp/curl I had thought that only run dependencies were being recorded but it seems pretty obvious that I'm confused there. It seems to be the results of "make all-depends-list". If I were to go to any port directory, what command would determine what gets recorded in its /var/db/pkg/*/+CONTENTS ? I also get a little apprehensive when the dependencies listed by "pkg_info -R" are fluid since this is the same as what a "portupgrade -fr" would use and determines what ports would get rebuilt. Is a different criteria being used to determine dependencies during a version portupgrade than is used by 'make' during installation? Also, I made sure that pkgdb -F was good as well as portsdb -u. All ports are shown as up-to-date both before and after updating. Oh yes, this is on 6.2-PRERELEASE (Nov. 25 build). I sure would appreciate some kind soul directing me on the path to dependency enlightment. Or am I charging at windmills? ;-) Thanks, Randy --