#34 Recommend libcrypt.so.1 for manylinux1 compatibility
Merged 4 years ago by churchyard. Opened 4 years ago by pviktori.
rpms/ pviktori/python-pip crypt-compat  into  master

file modified
+27 -1
@@ -23,7 +23,7 @@ 

  # When updating, update the bundled libraries versions bellow!

  # You can use vendor_meta.sh in the dist git repo

  Version:        19.1.1

- Release:        2%{?dist}

+ Release:        3%{?dist}

  Summary:        A tool for installing and managing Python packages

  

  # We bundle a lot of libraries with pip, which itself is under MIT license.
@@ -155,6 +155,22 @@ 

  Provides: bundled(python%{1}dist(webencodings)) = 0.5.1

  }

  

+ # Some manylinux1 wheels need libcrypt.so.1.

+ # Manylinux1, a common (as of 2019) platform tag for binary wheels, relies

+ # on a glibc version that included ancient crypto functions, which were

+ # moved to libxcrypt and then removed in:

+ #  https://fedoraproject.org/wiki/Changes/FullyRemoveDeprecatedAndUnsafeFunctionsFromLibcrypt

+ # The manylinux1 standard assumed glibc would keep ABI compatibility,

+ # but that's only the case if libcrypt.so.1 (libxcrypt-compat) is around.

+ # This should be solved in the next manylinux standard (but it may be

+ # a long time until manylinux1 is phased out).

+ # See: https://github.com/pypa/manylinux/issues/305

+ # Note that manylinux is only applicable to x86 (both 32 and 64 bits)

+ %global crypt_compat_recommends() %{expand:

+ Recommends: (libcrypt.so.1()(64bit) if python%{1}(x86-64))

+ Recommends: (libcrypt.so.1 if python%{1}(x86-32))

+ }

+ 

  

  %if %{with python2}

  %package -n python2-%{srcname}
@@ -183,6 +199,8 @@ 

  

  %{?python_provide:%python_provide python2-%{srcname}}

  

+ %{crypt_compat_recommends 2}

+ 

  %description -n python2-%{srcname}

  pip is a package management system used to install and manage software packages

  written in Python. Many packages can be found in the Python Package Index
@@ -223,6 +241,8 @@ 

  

  %{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}}

  

+ %{crypt_compat_recommends 3}

+ 

  %description -n python%{python3_pkgversion}-%{srcname}

  pip is a package management system used to install and manage software packages

  written in Python. Many packages can be found in the Python Package Index
@@ -249,6 +269,9 @@ 

  %{bundled 2}

  %{bundled 3}

  

+ %{crypt_compat_recommends 2}

+ %{crypt_compat_recommends 3}

This in theory would need to be repeated for every Python we have, but I am quite confident that users of alternate Python interpreters have python3 installed.

+ 

  %description wheel

  A Python wheel of pip to use with venv.

  %endif
@@ -493,6 +516,9 @@ 

  %endif

  

  %changelog

+ * Mon Jul 15 2019 Petr Viktorin <pviktori@redhat.com> - 19.1.1-3

+ - Recommend libcrypt.so.1 for manylinux1 compatibility

+ 

  * Mon Jun 10 2019 Miro Hrončok <mhroncok@redhat.com> - 19.1.1-2

  - Fix root warning when pip is invoked via python -m pip

  - Remove a redundant second WARNING prefix form the abovementioned warning

See the comment.
Moving to pip according to discussion from https://src.fedoraproject.org/rpms/python3/pull-request/123. @churchyard, is this what you meant?

Yes. Except that the conditional on if python3 doesn't really make sense for python2 (unless we assume python3 is always installed - which we probably should for the wheel package).

Random idea: if it on glibc?

1 new commit added

  • Use correct Python versions
4 years ago

We can just use pythonX, as in the bundles macro.

This in theory would need to be repeated for every Python we have, but I am quite confident that users of alternate Python interpreters have python3 installed.

I'll wait for the CI, post the recommends here and merge if it looks good.

Metadata Update from @churchyard:
- Request assigned

4 years ago
$ rpm -qp --recommends python2-pip-19.1.1-3.fc31.noarch.rpm 
(libcrypt.so.1 if python2(x86-32))
(libcrypt.so.1()(64bit) if python2(x86-64))

$ rpm -qp --recommends python3-pip-19.1.1-3.fc31.noarch.rpm 
(libcrypt.so.1 if python3(x86-32))
(libcrypt.so.1()(64bit) if python3(x86-64))

$ rpm -qp --recommends python-pip-wheel-19.1.1-3.fc31.noarch.rpm 
(libcrypt.so.1 if python2(x86-32))
(libcrypt.so.1 if python3(x86-32))
(libcrypt.so.1()(64bit) if python2(x86-64))
(libcrypt.so.1()(64bit) if python3(x86-64))

Pull-Request has been merged by churchyard

4 years ago