pythonPackages.ncclient: enable Python 3 support #68226
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation for this change
The actual code in the currently-packaged
ncclient
Python package, along with all its dependencies, support Python 3. But currently the way they're packaged breaks this:The problem is a broken dependency. The (interesting subset of the) actual code dependencies is like this (where P.foo means pythonPackages.foo):
so the ultimate dependency is on the plain old C libraries for
libxml2
andlibxslt
.Unfortunately, the Python
lxml
derivation fails to propagate the dependency on these two C libraries, and soncclient
tries to add them back. But it actually depends on the Python package wrappers, like this:and since
P.libxslt
doesn't support Python 3, unnecessarily breaks the chain.There is an issue to enable Python 3 support for
P.libxslt
. But simply fixing the dependencies seems a quick and correct fix for this case.Things done
sandbox
innix.conf
on non-NixOS)nix-shell -p nix-review --run "nix-review wip"
./result/bin/
)nix path-info -S
before and after)Test reproduction
If anyone wants to reproduce a test, then there is a simple standalone netconf server here. If you run that, and use this
client.py
code:then before this fix, python3 fails as above. With the fix, both
give the correct output:
Notify maintainers
cc @sjourdois @xnaveira