Date: Thu, 24 Jul 2008 10:45:29 -0500 (CDT) From: Michael Schout <mschout@gkg.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/125936: portupgrade -R fails if BUILD_DEP's are not installed. Message-ID: <200807241545.m6OFjT3f023145@deathstar.gkg.net> Resent-Message-ID: <200807241620.m6OGK3Ie055560@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 125936 >Category: ports >Synopsis: portupgrade -R fails if BUILD_DEP's are not installed. >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jul 24 16:20:03 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Michael Schout >Release: FreeBSD 6.2-RELEASE-p5 i386 >Organization: GKG.NET, Inc >Environment: System: FreeBSD bu1.gkg.net 6.2-RELEASE-p5 FreeBSD 6.2-RELEASE-p5 #0: Fri Jun 29 23:27:37 CDT 2007 mschout@bu1.gkg.net:/usr/obj/usr/src/sys/GKGGENERIC-SMP i386 >Description: If any BUILD_DEP's of a package have been removed, running portupgrade -R pkgname will fail with an exception. For example, if postgresql74-server is built, it has BUILD_DEP's that include bison and m4. If you then remove bison and m4 (because they are not runtime dependencies), then later try to portupgrade -R postgresql-server, then portupgrade fails like this: [Gathering depends for databases/postgresql74-server ... done] [Exclude up-to-date packages ...... done] /usr/local/lib/ruby/site_ruby/1.8/pkginfo.rb:74:in `initialize': : Not in due form: <name>-<version> (ArgumentError) from /usr/local/sbin/portupgrade:931:in `new' from /usr/local/sbin/portupgrade:931:in `do_upgrade' from /usr/local/sbin/portupgrade:815:in `main' from /usr/local/sbin/portupgrade:811:in `each' from /usr/local/sbin/portupgrade:811:in `main' from /usr/local/lib/ruby/1.8/optparse.rb:785:in `initialize' from /usr/local/sbin/portupgrade:229:in `new' from /usr/local/sbin/portupgrade:229:in `main' from /usr/local/sbin/portupgrade:2208 This error is raised because of this section in portupgrade: if $upward_recursive || $config dep = [] get_all_depends(origin).each do |d| dep << $pkgdb.deorigin(d).to_s end depends |= dep if $upward_recursive end The problem is that $pkgdb.deorigin(d).to_s returns an empty string if the dependency is not installed, which means you end up with a blank entry in the "depends" array. >How-To-Repeat: Build any port that has BUILD_DEP's, then uninstall one or more of the BUILD_DEP's, and do portupgrade -Rf portname >Fix: Probably add the missing build deps to the install tasks. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807241545.m6OFjT3f023145>