Accepting request 1134666 from home:bnavigator:branches:devel:languages:python

- Drop fix-get-python-lib-python38.patch: No Python <3.9 built
- Drop ugly allow-only-direct-compilation.patch in favor of proper
  PEP517 compliant bootstrap, using a built-in pip and the wheel
  package

OBS-URL: https://build.opensuse.org/request/show/1134666
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-setuptools?expand=0&rev=259
This commit is contained in:
Matej Cepl 2024-01-02 17:38:05 +00:00 committed by Git OBS Bridge
parent 32e544bfcd
commit 0cd64b5191
5 changed files with 41 additions and 90 deletions

View File

@ -1,4 +1,3 @@
<multibuild> <multibuild>
<package>test</package> <package>test</package>
<package>wheel</package>
</multibuild> </multibuild>

View File

@ -1,33 +0,0 @@
Index: setuptools-69.0.2/setuptools/_distutils/command/install_lib.py
===================================================================
--- setuptools-69.0.2.orig/setuptools/_distutils/command/install_lib.py
+++ setuptools-69.0.2/setuptools/_distutils/command/install_lib.py
@@ -133,6 +133,12 @@ class install_lib(Command):
# should at least generate usable bytecode in RPM distributions.
install_root = self.get_finalized_command('install').root
+ # UGLY HACK WARNING. Indirect compilation requires distutils, which
+ # means Python 3.11 or less. If and only if an environment variable
+ # is set, do we force direct compilation.
+ # See also https://github.com/pypa/setuptools/issues/4164
+ direct = os.environ.get('SETUPTOOLS_FORCE_DIRECT', None)
+
if self.compile:
byte_compile(
files,
@@ -140,6 +146,7 @@ class install_lib(Command):
force=self.force,
prefix=install_root,
dry_run=self.dry_run,
+ direct=direct,
)
if self.optimize > 0:
byte_compile(
@@ -149,6 +156,7 @@ class install_lib(Command):
prefix=install_root,
verbose=self.verbose,
dry_run=self.dry_run,
+ direct=direct,
)
# -- Utility methods -----------------------------------------------

View File

@ -1,21 +0,0 @@
Index: setuptools-68.0.0/setuptools/_distutils/sysconfig.py
===================================================================
--- setuptools-68.0.0.orig/setuptools/_distutils/sysconfig.py
+++ setuptools-68.0.0/setuptools/_distutils/sysconfig.py
@@ -246,9 +246,13 @@ def get_python_lib(plat_specific=0, stan
if os.name == "posix":
if plat_specific or standard_lib:
- # Platform-specific modules (any module from a non-pure-Python
- # module distribution) or standard Python library modules.
- libdir = getattr(sys, "platlibdir", "lib")
+ # Python 3.8 doesn't have sys.platlibdir
+ if sys.version_info < (3, 9):
+ libdir = get_config_var("platsubdir") or "lib"
+ else:
+ # Platform-specific modules (any module from a non-pure-Python
+ # module distribution) or standard Python library modules.
+ libdir = getattr(sys, "platlibdir", "lib")
else:
# Pure Python
libdir = "lib"

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Fri Dec 22 14:58:46 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Drop fix-get-python-lib-python38.patch: No Python <3.9 built
- Drop ugly allow-only-direct-compilation.patch in favor of proper
PEP517 compliant bootstrap, using a built-in pip and the wheel
package
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Dec 22 04:10:44 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com> Fri Dec 22 04:10:44 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com>

View File

@ -21,17 +21,10 @@
%if "%{flavor}" == "test" %if "%{flavor}" == "test"
%define psuffix -test %define psuffix -test
%bcond_without test %bcond_without test
%bcond_with wheel
%endif
%if "%{flavor}" == "wheel"
%define psuffix -wheel
%bcond_with test
%bcond_without wheel
%endif %endif
%if "%{flavor}" == "" %if "%{flavor}" == ""
%define psuffix %{nil} %define psuffix %{nil}
%bcond_with test %bcond_with test
%bcond_with wheel
%endif %endif
# in order to avoid rewriting for subpackage generator # in order to avoid rewriting for subpackage generator
@ -45,19 +38,15 @@ License: Apache-2.0 AND MIT AND BSD-2-Clause AND Python-2.0
URL: https://github.com/pypa/setuptools URL: https://github.com/pypa/setuptools
Source: https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-%{version}.tar.gz Source: https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-%{version}.tar.gz
Patch0: sort-for-reproducibility.patch Patch0: sort-for-reproducibility.patch
# PATCH-FIX-OPENSUSE fix-get-python-lib-python38.patch bsc#1204395 # Bootstrap: Don't BuildRequire pip here!
Patch2: fix-get-python-lib-python38.patch BuildRequires: %{python_module base >= 3.9}
# PATCH-FIX-OPENSUSE Allow forcing direct compilation, see gh#pypa/setuptools#4164 # The rpm python-wheel build is bootstrap friendly since 0.42
Patch3: allow-only-direct-compilation.patch BuildRequires: %{python_module wheel >= 0.42}
BuildRequires: %{python_module base >= 3.7}
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: python-rpm-macros BuildRequires: python-rpm-macros
Requires(post): update-alternatives Requires(post): update-alternatives
Requires(postun):update-alternatives Requires(postun):update-alternatives
BuildArch: noarch BuildArch: noarch
%if %{with wheel}
Requires: %mypython(abi) = %python_version
%endif
%if %{with test} %if %{with test}
BuildRequires: %{python_module build} BuildRequires: %{python_module build}
BuildRequires: %{python_module devel} BuildRequires: %{python_module devel}
@ -75,14 +64,10 @@ BuildRequires: %{python_module setuptools = %{version}}
BuildRequires: %{python_module setuptools-wheel = %{version}} BuildRequires: %{python_module setuptools-wheel = %{version}}
BuildRequires: %{python_module tomli-w >= 1.0.0} BuildRequires: %{python_module tomli-w >= 1.0.0}
BuildRequires: %{python_module virtualenv >= 13.0.0} BuildRequires: %{python_module virtualenv >= 13.0.0}
BuildRequires: %{python_module wheel}
%endif %endif
%if 0%{?suse_version} || 0%{?fedora_version} >= 24 %if 0%{?suse_version} || 0%{?fedora_version} >= 24
Recommends: ca-certificates-mozilla Recommends: ca-certificates-mozilla
%endif %endif
%if %{with wheel}
BuildRequires: %{python_module wheel}
%endif
%python_subpackages %python_subpackages
%description %description
@ -90,6 +75,14 @@ setuptools is a collection of enhancements to the Python distutils that
allow you to build and distribute Python packages, allow you to build and distribute Python packages,
especially ones that have dependencies on other packages. especially ones that have dependencies on other packages.
%package wheel
Summary: The setuptools wheel for custom tests and install requirements
Requires: %mypython(abi) = %python_version
%description wheel
This packages provides the setuptools wheel as separate file for cases where
the wheel needs to be used directly in test or install setups
%prep %prep
%autosetup -p1 -n setuptools-%{version} %autosetup -p1 -n setuptools-%{version}
@ -97,26 +90,32 @@ especially ones that have dependencies on other packages.
rm -f setuptools/*.exe rm -f setuptools/*.exe
%build %build
%if ! %{with wheel} %if !%{with test}
%python_build %{python_expand # bootstrap with built-in pip
%else $python -m venv build/env
%python_exec setup.py bdist_wheel --universal build/env/bin/python -m ensurepip
export PYTHONPATH=build/env/lib/python%{$python_bin_suffix}/site-packages
%{$python_pyproject_wheel}
}
%endif %endif
%install %install
%if !%{with test} && !%{with wheel} %if !%{with test}
export SETUPTOOLS_FORCE_DIRECT=True %{python_expand # use pip bootstrapped above
%python_install export PYTHONPATH=build/env/lib/python%{$python_bin_suffix}/site-packages
%python_expand %fdupes %{buildroot}%{$python_sitelib} %{$python_pyproject_install}
%endif %fdupes %{buildroot}%{$python_sitelib}
install -D -m 0644 -t %{buildroot}%{$python_sitelib}/../wheels dist/*.whl
%if %{with wheel} }
%python_expand install -D -m 0644 -t %{buildroot}%{$python_sitelib}/../wheels dist/*.whl
%endif %endif
%check %check
%if %{with test} %if %{with test}
%python_expand export PRE_BUILT_SETUPTOOLS_WHEEL=%{$python_sitelib}/../wheels/setuptools-%{version}-py2.py3-none-any.whl %{python_expand # just use the last one from the expansion, they're all the same
mkdir -p dist/
cp %{$python_sitelib}/../wheels/setuptools-%{version}-py3-none-any.whl $PWD/dist/
}
export PRE_BUILT_SETUPTOOLS_WHEEL=$PWD/dist/setuptools-%{version}-py3-none-any.whl
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
# tests need imports from local source dir # tests need imports from local source dir
export PYTHONPATH=$(pwd) export PYTHONPATH=$(pwd)
@ -133,17 +132,16 @@ donttest+=" or test_pbr_integration"
%license LICENSE %license LICENSE
%doc NEWS.rst README.rst %doc NEWS.rst README.rst
%{python_sitelib}/setuptools %{python_sitelib}/setuptools
%{python_sitelib}/setuptools-%{version}*-info %{python_sitelib}/setuptools-%{version}.dist-info
%dir %{python_sitelib}/pkg_resources %dir %{python_sitelib}/pkg_resources
%{python_sitelib}/pkg_resources/* %{python_sitelib}/pkg_resources/*
%{python_sitelib}/_distutils_hack %{python_sitelib}/_distutils_hack
%{python_sitelib}/distutils-precedence.pth %{python_sitelib}/distutils-precedence.pth
%endif %endif
%if %{with wheel} %files %{python_files wheel}
%dir %{python_sitelib}/../wheels %dir %{python_sitelib}/../wheels
%{python_sitelib}/../wheels/* %{python_sitelib}/../wheels/*
%endif %endif
%endif
%changelog %changelog