Opened 7 years ago
Closed 6 years ago
#56234 closed defect (fixed)
Inactive port can't be uninstalled after replacement is installed
Reported by: | ShadSterling (Shad Sterling) | Owned by: | reneeotten <reneeotten@…> |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.4.2 |
Keywords: | Cc: | ||
Port: | py-s3transfer py-botocore |
Description
It looks like port upgrade outdated
replaced py34-botocore
with py35-botocore
, making py34-botocore
inactive, but it can't be uninstalled because py34-s3transfer
depends on it.
Why is is possible for a port that can't be uninstalled to be made inactive? If the replacement doesn't satisfy the dependency, the original should not be made inactive. If it does satisfy the dependency, the original should be uninstallable.
$ sudo port uninstall inactive ---> Unable to uninstall py34-botocore @1.9.11_0, the following ports depend on it: ---> py34-s3transfer @0.1.13_0 Error: Failed to uninstall py34-botocore: Please uninstall the ports that depend on py34-botocore first. Error: See /opt/local/var/macports/logs/_opt_local_var_macports_registry_portfiles_py34-botocore-1.9.11_0_3d269263cf4e21e7ad3c6ceab9f307a76509a8f2a0d22bc9dfac4dd9516c97f8-1158/py34-botocore/main.log for details. Warning: Failed to execute portfile from registry for py34-botocore @1.9.11_0 ---> Unable to uninstall py34-botocore @1.9.11_0, the following ports depend on it: ---> py34-s3transfer @0.1.13_0 Error: port uninstall failed: Please uninstall the ports that depend on py34-botocore first.
$ sudo port upgrade py34-s3transfer ---> py34-botocore is replaced by py35-botocore ---> Computing dependencies for py35-botocore ---> Cleaning py35-botocore ---> Scanning binaries for linking errors ---> No broken files found.
Change History (6)
comment:1 Changed 7 years ago by mf2k (Frank Schima)
Component: | base → ports |
---|---|
Keywords: | uninstall inactive dependency replaced removed |
Owner: | set to pixilla |
Port: | py-s3transfer py-botocore added |
Status: | new → assigned |
comment:2 Changed 7 years ago by ShadSterling (Shad Sterling)
py34-botocore was not removed, it was deactivated by port upgrade outdated
. port upgrade outdated
either did something it shouldn't have, or didn't do something it should have.
comment:3 Changed 7 years ago by emcrisostomo (Enrico Maria Crisostomo)
I think what Frank meant was that py34-botocore was removed by me from the available ports the last time py-botocore was updated as part of the effort of removing support for python 3.4. Personally, since the py34 subport has been removed from py-awscli, py-botocore and py-boto3, I would simply remove py34-s3transfer. I've just performed a quick check on the current master and there aren't any other python ports depending on that one.
comment:4 Changed 7 years ago by raimue (Rainer Müller)
MacPorts does not resolve dependencies fully for replaced_by
, but trusts the author that added that option. I think your expectation was that replaced_by
would also change the dependency in all dependents. However, as seen in this case, this would be incorrect, as py34-botocore
cannot satisfy the dependency on py34-s3transfer.
The issue is that replaced_by
was added to py34-botocore without making sure that there are no dependents of this port anymore. You can only add such a replaced_by
to a pyXY-* port if you also do it recursively for all dependents upwards in the dependency tree.
comment:6 Changed 6 years ago by reneeotten <reneeotten@…>
Owner: | set to reneeotten <reneeotten@…> |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
This is not a base issue. The problem is that py34-botocore was removed and py34-s3transfer requires it. So either py34-s3transfer should also be removed or py34-botocore needs to be re-added.