*-devel ports

Rainer Müller raimue at macports.org
Sat Feb 2 16:49:44 PST 2008


Ryan Schmidt wrote:
> No port should depend on a -devel version of a port, unless it will only 
> work with the -devel version. Usually this will not be the case. 
> Usually, a port will work with the current version of a port and the 
> latest development version. A port wanting to accommodate this situation 
> should use a different syntax for declaring the dependency. For example, 
> php5 can use the MySQL libraries, but works fine with either mysql5 or 
> mysql5-devel. Instead of declaring the dependency as "port:mysql5", php5 
> should depend on a specific file installed by both mysql5 and 
> mysql5-devel, like this: "path:${prefix}/bin/mysql_config5:mysql5". This 
> says that php5 requires the file mysql_config5 to exist in the MacPorts 
> install prefix bin directory, and if it does not exist, then install the 
> mysql5 port. If the user wishes to use mysql5-devel instead, he simply 
> installs mysql5-devel beforehand, then installs php5, and php5 will 
> recognize that mysql5-devel satisfies the dependency. (I know php5 does 
> not do this yet; this is ticket #13469.)

This is just not good behaviour. Instead of defining dependencies on 
single files we should find a way to eventually support multiple 
versions per port. With this, php5 could depend on port:mysql5 and the 
mysql5 port provides stable or unstable. But it should not be limitde to 
just a few hardcoded versions. It should be possible to provide as many 
versions as needed for a single port.
Multiple port version could share some basics like name, homepage, 
description, variants and so on in a single file.

In my opinion if a port provides the same files and installs the same 
software (but in another version) it should be the same port.

Even more, we could extend the dependency syntax and allow depending on 
versions.
Examples:
     port:foo@>=1.0   (depend on any greater version)
     port:foo@=1.1    (depend exactly on a specific version)
     port:foo@<2.0    (depend on an earlier version)

Basically, any of <, <=, =, >=, > should be possible. It could also 
become possible to require specific variants with some syntax.

I know, there would be a lot of base work needed for something like this 
to be fully usable, but I think it would be the best solution for the 
future to solve all the problems with -devel ports.

Rainer


More information about the macports-dev mailing list