Ticket #14796 (pike): please commit

Jordan K. Hubbard jkh at apple.com
Tue Apr 1 02:02:57 PDT 2008


On Apr 1, 2008, at 1:27 AM, Florian Ebeling wrote:

> Maybe I'm too ignorant, but isn't also the fact that dependencies  
> are version-agnostic one major cause of build fails and probably a  
> cost-effective gain to change?

Not ignorant at all, yes, this is a well-known shortcoming of  
dependencies.  No way to specify minimum version, maximum version,  
range of versions, and so on.  Package systems like RPM do, but  
lacking this in the base system means MacPorts can't make more  
intelligent dependency decisions and it can't pass those on to the  
packaging system, which will need to make the same decision if the  
user uses packages to install instead.  I think "new dependency  
engine" has even been on the task list for for several years now.

> I'm rather new to macports, but I was delighted to find that it can  
> keep multiple versions installed, with only a single one active  
> (usually) -- only to learn later then that it is otherwise not using  
> this feature, really.

This is sadly somewhat controversial.  I think dependencies should  
definitely be directed at the depot location, e.g. something that  
links with, say, jpeg version 6.2, shouldn't link to /usr/lib/libjpeg. 
62.dylib but rather /opt/local/var/macports/software/jpeg/6b_2/opt/ 
local/lib/libjpeg.62.dylib, and so on and so forth for any absolute- 
path dependencies.  Then whether something is "active" or not has  
nothing to do with whether it can be depended on.  Every time the  
subject comes up, however, various people rapidly get the creeping  
crawlies and we lose the courage to actually attempt this.

To be fair, and make no mistake, it's actually pretty hard to get this  
right.  Smashing everything together in a common $prefix and assuming  
that all your deps are part of $prefix at any given time is a hugely  
simplifying assumption, too.  For most ports, a simple -I${prefix}/ 
include and -L${prefix}/lib is all the stands between their vanilla  
state and working properly with MacPorts.  In a true multiple-version  
world, each and every dependency potentially adds to the search paths.

- Jordan



More information about the macports-dev mailing list