Opened 3 years ago

Closed 2 years ago

#63481 closed defect (fixed)

youtube-dl: can't install when system has py-cryptodome, due to conflict with py-crypto

Reported by: catap (Kirill A. Korinsky) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: xeron (Ivan Larionov), reneeotten (Renee Otten)
Port: youtube-dl, py-crypto, py-pycryptodome

Description (last modified by ryandesign (Ryan Carsten Schmidt))

Python has pycryptodome which is for of crypto.

youtube-dl port depends on py-crypto and it is impossible to install it on the system which has pycryptodome

Change History (10)

comment:1 Changed 3 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: xeron added
Description: modified (diff)
Port: youtube-dl py-crypto py-pycryptodome added

Ok, so I see that pycryptodome is a fork of pycrypto.

There are currently several ports that depend on pycrypto:

$ port echo depends:'\ypy..-crypto\y'
bzr
EGSimulation
py-crypto
py27-ezpycrypto
py27-keyczar
py27-recaptcha
py27-snmp
py35-snmp
py36-snmp
scapy
scapy-devel
volatility
youtube-dl

And a few that depend on pycryptodome:

$ port echo depends:'\ypy..-pycryptodome\y'
py-pycryptodome
salt
salt-api
salt-master
salt-minion
salt-syndic
streamlink

First question: do we need both in MacPorts? It is inconvenient to have conflicting ports. Could we remove one and switch all ports to depend on the other?

If we need to keep pycrypto, the port should be renamed from py-crypto to py-pycrypto. py-crypto was added in the early days of MacPorts before we had decided that all python ports should be named with the "py-" prefix followed by the upstream project name, even if that project name begins with "py".

If we need to keep pycryptodome, it looks like it can be installed two different ways: one that conflicts with pycrypto (this is apparently what we have now) and one that doesn't. Could we switch to the second installation method to avoid the conflict?

If we need to keep both ports and keep them conflicting, then we should modify all ports that depend on either of them so that either of them could be used (i.e. use a path: dependency rather than port:) and the ports should be marked as being conflicting.

comment:2 in reply to:  1 Changed 3 years ago by catap (Kirill A. Korinsky)

Replying to ryandesign:

First question: do we need both in MacPorts? It is inconvenient to have conflicting ports. Could we remove one and switch all ports to depend on the other?

Base on https://pycryptodome.readthedocs.io/en/latest/src/vs_pycrypto.html I'd like to say that pycrypto can be replaced by pycryptodome. Or at least we may try it.

comment:3 Changed 3 years ago by catap (Kirill A. Korinsky)

@ryandesign seems that py-crypto is dead: https://github.com/pycrypto/pycrypto/issues/301

comment:4 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy added

comment:5 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: reneeotten added

comment:6 Changed 2 years ago by mascguy (Christopher Nielsen)

Summary: Can't install youtube-dl when system has py-cryptodomeyoutube-dl: can't install when system has py-cryptodome, due to conflict with py-crypto

Just ran a quick test of both youtube-dl as well as subport yt-dlp, and both seem to work fine with py-cryptodome. No surprise, given that the latter is intended to be a drop-in replacement.

Overall, given that py-crypto is now at end-of-life, should we migrate everything to py-cryptodome instead? (With the caveat that we'll need to run some basic regression tests of each, to ensure everything still works.)

Renee, what do you think?

Version 0, edited 2 years ago by mascguy (Christopher Nielsen) (next)

comment:7 Changed 2 years ago by mascguy (Christopher Nielsen)

Owner: set to mascguy
Status: newassigned

comment:8 Changed 2 years ago by mascguy (Christopher Nielsen)

Cc: mascguy removed

comment:9 Changed 2 years ago by mascguy (Christopher Nielsen)

PR submitted to migrate dependents to py-pycryptodome, and obsolete py-crypto:

https://github.com/macports/macports-ports/pull/12813

comment:10 Changed 2 years ago by Christopher Nielsen <mascguy@…>

Resolution: fixed
Status: assignedclosed

In cde58461012d44a659d328b60174d763e4d91192/macports-ports (master):

py-crypto dependents: migrate to py-pycryptodome
Fixes: #63481

Note: See TracTickets for help on using tickets.