Why don't p5-* ports mark their dependencies?

Ryan Schmidt ryandesign at macports.org
Thu Jun 10 13:54:53 UTC 2021


On Jun 6, 2021, at 12:41, Bill Cole wrote:

> Not sure where the bug is here, but it's evident in 'port reclaim'.
> 
> The p5-* ports are basically placeholders for the p5.##- ports. I *think* I've even worked out the right way to use that construct to make Perl upgrades simpler, so I use the p5-* ports:
> 
> 	$ sudo port install p5-net-cidr p5-term-readline p5-test-fatal
> 	--->  Computing dependencies for p5-net-cidr
> 	The following dependencies will be installed:  p5.30-net-cidr
> 	Continue? [Y/n]: y
> 	--->  Fetching archive for p5.30-net-cidr
> 	--->  Attempting to fetch p5.30-net-cidr-0.200.0_0.darwin_18.noarch.tbz2 from https://ywg.ca.packages.macports.org/mirror/macports/packages/p5.30-net-cidr
> 	--->  Attempting to fetch p5.30-net-cidr-0.200.0_0.darwin_18.noarch.tbz2.rmd160 from https://ywg.ca.packages.macports.org/mirror/macports/packages/p5.30-net-cidr
> 	--->  Installing p5.30-net-cidr @0.200.0_0
> 	--->  Activating p5.30-net-cidr @0.200.0_0
> 	--->  Cleaning p5.30-net-cidr
> 	--->  Cleaning p5-net-cidr
> 	--->  Computing dependencies for p5-term-readline
> 	The following dependencies will be installed:  p5.30-term-readline
> 	Continue? [Y/n]: y
> 	--->  Fetching archive for p5.30-term-readline
> 	--->  Attempting to fetch p5.30-term-readline-1.140.0_0.darwin_18.noarch.tbz2 from https://ywg.ca.packages.macports.org/mirror/macports/packages/p5.30-term-readline
> 	--->  Attempting to fetch p5.30-term-readline-1.140.0_0.darwin_18.noarch.tbz2.rmd160 from https://ywg.ca.packages.macports.org/mirror/macports/packages/p5.30-term-readline
> 	--->  Installing p5.30-term-readline @1.140.0_0
> 	--->  Activating p5.30-term-readline @1.140.0_0
> 	--->  Cleaning p5.30-term-readline
> 	--->  Cleaning p5-term-readline
> 	--->  Computing dependencies for p5-test-fatal
> 	The following dependencies will be installed:  p5.30-test-fatal
> 	Continue? [Y/n]: y
> 	--->  Fetching archive for p5.30-test-fatal
> 	--->  Attempting to fetch p5.30-test-fatal-0.16.0_0.darwin_18.noarch.tbz2 from https://ywg.ca.packages.macports.org/mirror/macports/packages/p5.30-test-fatal
> 	--->  Attempting to fetch p5.30-test-fatal-0.16.0_0.darwin_18.noarch.tbz2.rmd160 from https://ywg.ca.packages.macports.org/mirror/macports/packages/p5.30-test-fatal
> 	--->  Installing p5.30-test-fatal @0.16.0_0
> 	--->  Activating p5.30-test-fatal @0.16.0_0
> 	--->  Cleaning p5.30-test-fatal
> 	--->  Cleaning p5-test-fatal
> 	--->  Scanning binaries for linking errors
> 	--->  No broken files found.
> 	--->  No broken ports found.
> 
> Perfectly normal, right?
> 
> However, immediately after doing that, I did a reclaim and got a surprise:
> 
> 	$ sudo port -v reclaim
> 	--->  Checking for unnecessary unrequested ports
> 	Unrequested ports without requested dependents found:
> 	 p5.30-test-fatal  @0.16.0_0
> 	 p5.30-net-cidr  @0.200.0_0
> 	 p5.30-term-readline  @1.140.0_0
> 	Would you like to uninstall them? [Y/n]: n
> 
> And the dependency map is not reversible:
> 
> 	$ port deps p5-net-cidr
> 	Full Name: p5-net-cidr @0.200.0_0
> 	Library Dependencies: p5.30-net-cidr
> 	$ port rdependents p5.30-net-cidr
> 	p5.30-net-cidr has no dependents.

Yes, the p5 ports are a bit weird in that regard. The p5-* ports can be installed -- they install essentially nothing (a placeholder text file) themselves but depend on e.g. the corresponding p5.30-* port which then gets installed. But also, the p5-* ports are marked as being replaced_by the corresponding p5.30-* port. This is unusual. Normally, when a port uses the replaced_by feature, the port also prevents itself from being able to be installed. The php-* and python-* ports do not use the replaced_by feature in this way; maybe the p5-* ports shouldn't do that either. Maybe that would cure the issue you observed.


More information about the macports-users mailing list