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: baseports
Keywords: uninstall inactive dependency replaced removed
Owner: set to pixilla
Port: py-s3transfer py-botocore added
Status: newassigned

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.

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:5 Changed 6 years ago by mf2k (Frank Schima)

Owner: pixilla deleted

See #57827

comment:6 Changed 6 years ago by reneeotten <reneeotten@…>

Owner: set to reneeotten <reneeotten@…>
Resolution: fixed
Status: assignedclosed

In 4fec1d8febd61ccdb674d8d709f32fe5735c2b9a/macports-ports (master):

py-s3transfer: remove py34 subport, dependencies missing

Closes: #56234

Note: See TracTickets for help on using tickets.