Opened 3 years ago

Last modified 2 years ago

#63481 closed defect

Can't install youtube-dl when system has py-cryptodome — at Version 1

Reported by: catap (Kirill A. Korinsky) Owned by:
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: xeron (Ivan Larionov)
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 (1)

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.

Note: See TracTickets for help on using tickets.