On Mar 3, 2011, at 16:11, Daniel J. Luke wrote: > On Mar 3, 2011, at 4:52 PM, Marko Käning wrote: >> > >> I want A to be dependent on either B-release or B-devel, exclusively! >> >> Say, the user has installed B-devel before installing port A: In that case I >> want to let port A accept B-devel as the default dep. >> If, however, B-release is installed, than that one should be accepted. >> >> How can I test in the portfile for already installed ports? > > Usually this is done with bin/lib/path style dependencies (instead of port) > > So, you pick something in B that port A needs to have there (a library, > binary, header file) and depend on that. > > MacPorts will install the port you choose (which should be B-release by > default) if the file isn't found. If the file is there (from either B-release > or B-devel), it won't install anything. > > You can have a variant which flips which port gets installed (or depends with > a port: style dependency instead) if you think that that will make things > easier for the end user as well. > > For example, if you want to depend on either mysql5 or mysql5-devel, you > could use: > > path:bin/mysql_config5:mysql5 > > (which says, look for mysql_config5 in $prefix/bin, if it's not there install > the mysql5 port). > > This could also be written as: > > bin:mysql_config5:mysql5 > > If you wanted to depend on libsdl.dylib from either libsdl or libsdl-devel, > you could use: > > lib:libsdl:libsdl
Do not use bin:- or lib:-style dependencies for this purpose; they would allow a file outside of the MacPorts prefix to satisfy the dependency, and we don't want that. Use only path:-style. _______________________________________________ macports-dev mailing list [email protected] http://lists.macosforge.org/mailman/listinfo.cgi/macports-dev
