Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Nov 2006 10:20:17 -0800
From:      Doug Barton <dougb@FreeBSD.org>
To:        Vivek Khera <vivek@khera.org>
Cc:        ports@freebsd.org
Subject:   Re: stale dependencies and portupgrade
Message-ID:  <456C7DE1.5060204@FreeBSD.org>
In-Reply-To: <5D017181-7215-4CB6-A459-4A40751AB39A@khera.org>
References:  <5D017181-7215-4CB6-A459-4A40751AB39A@khera.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Vivek Khera wrote:
> I've been using portupgrade for a long time now.  Recently I've been 
> noticing (though I'm sure it has been happening all along) that 
> dependencies are not cleanly propagated to other ports.
> 
> Example:  p5-Expect used to depend on p5-IO-Stty which was removed from 
> ports recently.  rt36 depends on p5-Expect, so got a transitive 
> dependency to this dead port.  Upgrading p5-Expect using "portupgrade 
> -Rr" took care of the direct dependency, but the upstream ports still 
> had the registered dependency to p5-IO-Stty.  I had to force-uninstall 
> that port then run "pkgdb -F" to remove that dependency.
> 
> Similarly, with a portupgrade of portupgrade itself, most of my machines 
> lost the dependency to ruby18-bdb1 package.  The only way out of that 
> was to do a delete of portupgrade and run a fresh make install in the 
> port directory.
> 
> I suppose the bug is that I expected portupgrade -Rr to recompute the 
> dependency lists of the upstream ports to take into account any changing 
> dependencies of the updated port.
> 
> Do other port manager utilities take this type of change into account?  
> At this point, I'm not sure any of my dependencies are accurate on the 
> complex ports like RT.

This type of complexity is one of the reasons why portmaster does not 
use an "extra" database to track dependencies. It instead relies on 
/var/db/pkg and the ports framework to do that, and updates the 
+CONTENTS files themselves when needed.

To more precisely answer your question, in /var/db/pkg the derived 
dependency on p5-IO-Stty wouldn't exist, so you wouldn't have the 
problem you described.

You can get a quick and dirty look at whether or not the ports you 
have installed are up to date by doing 'pkg_version -v'. If you'd like 
to recurse through all your dependencies for RT you could try 
installing sysutils/portmaster and do one of the following:

portmaster rt36

which will first recurse through all of RT's direct dependencies, make 
sure they are up to date, then rebuild RT itself; or

portmaster -f rt36

which will rebuild all of RT's dependencies first (and therefore 
recurse through each dependent port's dependencies), then rebuilt RT.

You might also want to give the man page a look before you do that, 
and you'll probably want to at least add the -v flag your first few 
times using it.

hth,

Doug

-- 

     This .signature sanitized for your protection



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?456C7DE1.5060204>