Alexey Luchko wrote:
I've decided to switch python from 3.5 to 3.6 and after a time, run a
command

$ sudo port uninstall --no-exec --follow-dependents python35

To my surprise were removed not only py35- packages and explicit python35
dependents like httpie, but also a number of py27- and py36- packages.
<...>
Naturally, py27-packaging for example has no dependency on python35:
$ port info py27-packaging
py27-packaging @16.8 (python)

Description:          Core utilities for Python packages
Homepage:             https://pypi.python.org/pypi/packaging/

Library Dependencies: python27, py27-parsing, py27-six

What matters here is not the dependencies specified in the current version of the port, but those that were recorded in the registry at installation time. I can see how this is a surprising result, but the uninstall code involved is pretty straightforward and literally just loops through the ports that the registry says are dependents of the one being uninstalled.

To get to the bottom of what happened, you would need to look at 'port rdependents python35' -- but unfortunately you'd have to do that before the uninstall happened. (Since uninstall --follow-dependents is a fairly big hammer it's worth getting into the habit of looking at the rdependents beforehand anyway.)

So there are 3 possibilities: either the uninstall code is doing the wrong thing, or the dependents reported by the registry are wrong, or there really was some strange chain of dependencies such that this was technically correct. If you can come up with a reproducible test case that demonstrates that there is a bug, please do file a ticket.

- Josh

Reply via email to