Ricardo Wurmus <[email protected]> skribis:
> Efraim Flashner <[email protected]> writes:
>
>> Guix build python2-cryptography builds fine, guix build python2-oauthlib
>> rebuilds python2-cryptography, and fails to build. Python2-cryptography has
>> an additional input of python2-ipaddress which doesn't get carried along when
>> python2-cryptography is an input and not the final build.
>
> I think that’s pretty normal. We have the same situation in
> ‘python2-openssl’ where we have to explicitly add ‘python2-cryptography’
> and remove ‘python-cryptography’.
Yes, and this is due to the fact that ‘python2-cryptography’ is not just
an automatically-translated package:
(define-public python2-cryptography
(let ((crypto (package-with-python2 python-cryptography)))
(package (inherit crypto)
(propagated-inputs
`(("python2-ipaddress" ,python2-ipaddress)
,@(package-propagated-inputs crypto))))))
If it were simply equal to (package-with-python2 python-cryptography),
there would be no need for the manual tweak in ‘python-pyopenssl’.
Efraim, could you apply the same strategy as for ‘python2-pyopenssl’ in
‘python2-oauthlib’?
> It would, of course, be nice if package-with-python2 could handle this
> automatically.
I think we would need a way to register “translation” results.
Currently ‘package-with-python2’ internally uses a hash table to memoize
conversion results. We could imagine adding something like:
(register-python2-variant PY3VARIANT PY2VARIANT)
to explicitly add a pair to that hash table.
The downside of this approach is that this would break referential
transparency.
WDYT?
Thanks,
Ludo’.