>> Is MacPorts supposed to work correctly if multiple repositories are added to >> the /opt/local/etc/macports/sources.conf file, each with a different version >> of the Portfile, but with the same port name? >> In such a scenario with multiple versions, I notice that things like the >> following do not appear to work as expected, i.e. the wrong version is >> selected or the dependencies are not followed: > > Yes, this is supported. Only one Portfile per port name will be > considered by MacPorts. The first ports tree that contains a port by > that name in the order listed in sources.conf will be used. All other > Portfiles in ports trees listed below that are not considered at all for > any port action.
OK, if it is supposed to work then either I seriously do not understand how the port command is supposed to work or there are bugs. Let me be more specific with my example. Lets say I start with a clean installation of MacPorts and have two repositories with the port "myport" (category "science"): ftp://my.server.org/repoA (this contains myport version 3.4) ftp://my.server.org/repoB (this contains myport version 1.2) I add both repositories on separate lines to the sources.conf file like so: ftp://my.server.org/repoA/ports.tar ftp://my.server.org/repoB/ports.tar I then run: sudo port sync At this point I refer back to my previous list of commands ... (see below) >> port install myport @1.2 > > This syntax is not supported for 'port install'. The port with this name > is installed, you cannot specify a version. OK, then given my specific example above, how do I install myport version 1.2 rather than version 3.4? Or conversely, how do I install version 3.4 rather than 1.2? It seems like you are telling me MacPorts will make a random selection and there is no way to control this. If that is the case then surely concurrent multiple versions of Portfiles from different repositories are not properly supported. >> port install myport version:1.2 > > These arguments actually form an expression which is expanded into a > list of ports: name:myport or version:1.2 > > "version:" is a pseudo-port that expands to all ports that match the > given expression, in this case treated as a regex. Therefore, this > expression actually matches a lot of ports. You can test this with 'port > echo'. OK, I misunderstood the selection mechanism of the port command. How about the following alternative, should that work? port install myport and version:1\.2 port activate myport and version:1\.2 >> port activate myport @1.2 >> port activate myport version:1.2 >> port uninstall --follow-dependencies myport @1.2 >> port uninstall --follow-dependencies myport version:1.2 > > Dependencies should be followed by what is specified in the Portfile at > the time the port was installed. > > The behavior you see is probably explained by the syntax of the > pseudo-port version: as explained above. The @version syntax should work > to choose the port in case multiple versions are installed. So if the command with the @version syntax is not following the dependencies when using the --follow-dependencies option, then I have a bug? Adjusting the second command alternative, should the following work also? port uninstall --follow-dependencies myport and version:1\.2 Cheers Artur _______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
