Ports and their dependencies

Ryan Schmidt ryandesign at macports.org
Mon Jun 9 16:26:43 PDT 2008


On Jun 9, 2008, at 11:17, Tabitha McNerney wrote:

>> The man page says what lib,bin,path mean:
>>
>> > type:<filename>:<port>
>> >
>> >      may be used. Where type is "bin" if <filename> is a  
>> program, "lib"
>> >      if it is a library, or "path" if it is a path to an  
>> installed file.
>
> Reading this and also the previous posts, the condition of "path"  
> being a path to an "installed file" (and given Ryan's example in a  
> different thread whereby the php5 port with the mysql5 variant  
> added triggers the depends_lib of a path whose path value leads to  
> a possibly installed configuration file (but this configuration  
> file only exists if the mysql5_dev port has been installed)

I didn't say that: the situation is that either the mysql5 port or  
the mysql5-devel port can provide the mysql_config5 file (and indeed  
all the MySQL libraries) but only one of these two ports can be  
installed at a time. This is (or should be) the case for all -devel  
ports. The intention is that most users will use mysql5 but some will  
want to try the new features only available in mysql5-devel. To  
support this notion, all ports that depend on MySQL 5 functionality  
must declare their dependency on MySQL 5 not via a port:-style  
dependency (because that would unequivocally require the mysql5 port,  
not the mysql5-devel port), but instead via a path:-style dependency  
to a specific path within ${prefix}. The lib:-style dependency should  
not be used, because a MySQL library provided by the operating system  
(for example on Mac OS X Server) would also satisfy that dependency,  
but we don't want it to.

Maybe path:${prefix}/something:portname should be the preferred  
dependency style (instead of port:portname)? Unless we have a better  
plan for -devel ports (or the "slots" feature) in the future.

> kind of strikes me as a means to confusion because such a  
> dependency isn't really a "non-port" then right?

I too find the "non-port" terminology confusing and not entirely  
accurate.

> In other words, an "installed file" which has a path that only  
> exists if the port responsible for installing that file has itself  
> been built and installed, then really that's not a "non-port"  
> unlike a lib: or bin: which could be, say, an Apple Mac OS X  
> provided resource (library or binary). True? Granted, from a pure  
> syntactical standpoint, the "path: ..." is not the same as a  
> "port: ..." and thus I can see why its categorized as a "non-port".


More information about the macports-users mailing list