diff --git a/_multibuild b/_multibuild index 6222fa7..fcc7b97 100644 --- a/_multibuild +++ b/_multibuild @@ -1,4 +1,3 @@ test - wheel diff --git a/allow-only-direct-compilation.patch b/allow-only-direct-compilation.patch deleted file mode 100644 index 39b5abc..0000000 --- a/allow-only-direct-compilation.patch +++ /dev/null @@ -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 ----------------------------------------------- diff --git a/fix-get-python-lib-python38.patch b/fix-get-python-lib-python38.patch deleted file mode 100644 index ed8888f..0000000 --- a/fix-get-python-lib-python38.patch +++ /dev/null @@ -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" diff --git a/python-setuptools.changes b/python-setuptools.changes index a55899a..f18208d 100644 --- a/python-setuptools.changes +++ b/python-setuptools.changes @@ -1,3 +1,62 @@ +------------------------------------------------------------------- +Tue May 28 05:20:31 UTC 2024 - Steve Kowalik + +- Update to 70.0.0: + * Features + + Emit a warning when [tools.setuptools] is present in pyproject.toml and + will be ignored. + + Improved AttributeError error message if pkg_resources.EntryPoint.require + is called without extras or distribution Gracefully "do nothing" when + trying to activate a pkg_resources.Distribution with a None location, + rather than raising a TypeError. + + Refresh unpinned vendored dependencies. + + Updated vendored packaging to version 24.0. + + Merged with pypa/distutils@55982565e. + + Support PEP 625 by canonicalizing package name and version in filenames. + + Explicitly use encoding="locale" for .pth files whenever possible, to + reduce EncodingWarnings. + + Updated and removed obsolete Python < 3.8 code and comments. + + Updated pkg_resources to use stdlib importlib.machinery instead of + importlib_machinery. + + Modernized and refactored VCS handling in package_index. + (bsc#1228105, CVE-2024-6345) + * Bugfixes + + In install command, use super to call the superclass methods. Avoids + race conditions when monkeypatching from _distutils_system_mod occurs + late. + + Fix finder template for lenient editable installs of implicit nested + namespaces constructed by using package_dir to reorganise directory + structure. + + Remove attempt to canonicalize the version. It's already canonical + enough. + + Clarify some pkg_resources methods return bytes, not str. Also return an + empty bytes in EmptyProvider._get. + + Return an empty list by default in + pkg_resources.ResourceManager.cleanup_resources. + + Made pkg_resoursces.NullProvider's has_metadata and metadata_isdir + methods return actual booleans like all other Providers. + + In tests, rely on pytest-home for reusable fixture. + + Explicitely marked as Protocol and fixed missing self argument in + interfaces pkg_resources.IMetadataProvider and + pkg_resources.IResourceProvider. + + Restored expectation that egg-link files would be named with dash + separators for compatibility with pip prior to version 24. +- Refresh patch sort-for-reproducibility.patch + +------------------------------------------------------------------- +Tue Jan 2 21:55:38 UTC 2024 - Dirk Müller + +- update to 69.0.3: + * Bugfixes - Retain valid names with underscores in egg_info. + +------------------------------------------------------------------- +Fri Dec 22 14:58:46 UTC 2023 - Ben Greiner + +- 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 diff --git a/python-setuptools.spec b/python-setuptools.spec index e2fdf0f..582880e 100644 --- a/python-setuptools.spec +++ b/python-setuptools.spec @@ -1,7 +1,7 @@ # -# spec file +# spec file for package python-setuptools # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,43 +21,32 @@ %if "%{flavor}" == "test" %define psuffix -test %bcond_without test -%bcond_with wheel -%endif -%if "%{flavor}" == "wheel" -%define psuffix -wheel -%bcond_with test -%bcond_without wheel %endif %if "%{flavor}" == "" %define psuffix %{nil} %bcond_with test -%bcond_with wheel %endif # in order to avoid rewriting for subpackage generator %define mypython python %{?sle15_python_module_pythons} Name: python-setuptools%{psuffix} -Version: 69.0.2 +Version: 70.0.0 Release: 0 Summary: Download, build, install, upgrade, and uninstall Python packages License: Apache-2.0 AND MIT AND BSD-2-Clause AND Python-2.0 URL: https://github.com/pypa/setuptools Source: https://files.pythonhosted.org/packages/source/s/setuptools/setuptools-%{version}.tar.gz Patch0: sort-for-reproducibility.patch -# PATCH-FIX-OPENSUSE fix-get-python-lib-python38.patch bsc#1204395 -Patch2: fix-get-python-lib-python38.patch -# PATCH-FIX-OPENSUSE Allow forcing direct compilation, see gh#pypa/setuptools#4164 -Patch3: allow-only-direct-compilation.patch -BuildRequires: %{python_module base >= 3.7} +# Bootstrap: Don't BuildRequire pip here! +BuildRequires: %{python_module base >= 3.9} +# The rpm python-wheel build is bootstrap friendly since 0.42 +BuildRequires: %{python_module wheel >= 0.42} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires(post): update-alternatives -Requires(postun):update-alternatives +Requires(postun): update-alternatives BuildArch: noarch -%if %{with wheel} -Requires: %mypython(abi) = %python_version -%endif %if %{with test} BuildRequires: %{python_module build} BuildRequires: %{python_module devel} @@ -66,23 +55,22 @@ BuildRequires: %{python_module ini2toml-lite >= 0.9} BuildRequires: %{python_module jaraco.develop >= 7.21} BuildRequires: %{python_module jaraco.envs >= 2.2} BuildRequires: %{python_module jaraco.path >= 3.2.0} +BuildRequires: %{python_module packaging} BuildRequires: %{python_module pip >= 19.1} BuildRequires: %{python_module pip-run >= 8.8} BuildRequires: %{python_module pytest >= 6} +BuildRequires: %{python_module pytest-home} +BuildRequires: %{python_module pytest-subprocess} BuildRequires: %{python_module pytest-timeout} BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module setuptools = %{version}} BuildRequires: %{python_module setuptools-wheel = %{version}} BuildRequires: %{python_module tomli-w >= 1.0.0} BuildRequires: %{python_module virtualenv >= 13.0.0} -BuildRequires: %{python_module wheel} %endif %if 0%{?suse_version} || 0%{?fedora_version} >= 24 Recommends: ca-certificates-mozilla %endif -%if %{with wheel} -BuildRequires: %{python_module wheel} -%endif %python_subpackages %description @@ -90,6 +78,14 @@ setuptools is a collection of enhancements to the Python distutils that allow you to build and distribute Python 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 %autosetup -p1 -n setuptools-%{version} @@ -97,26 +93,32 @@ especially ones that have dependencies on other packages. rm -f setuptools/*.exe %build -%if ! %{with wheel} -%python_build -%else -%python_exec setup.py bdist_wheel --universal +%if !%{with test} +%{python_expand # bootstrap with built-in pip +$python -m venv build/env +build/env/bin/python -m ensurepip +export PYTHONPATH=build/env/lib/python%{$python_bin_suffix}/site-packages +%{$python_pyproject_wheel} +} %endif %install -%if !%{with test} && !%{with wheel} -export SETUPTOOLS_FORCE_DIRECT=True -%python_install -%python_expand %fdupes %{buildroot}%{$python_sitelib} -%endif - -%if %{with wheel} -%python_expand install -D -m 0644 -t %{buildroot}%{$python_sitelib}/../wheels dist/*.whl +%if !%{with test} +%{python_expand # use pip bootstrapped above +export PYTHONPATH=build/env/lib/python%{$python_bin_suffix}/site-packages +%{$python_pyproject_install} +%fdupes %{buildroot}%{$python_sitelib} +install -D -m 0644 -t %{buildroot}%{$python_sitelib}/../wheels dist/*.whl +} %endif %check %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 # tests need imports from local source dir export PYTHONPATH=$(pwd) @@ -124,6 +126,10 @@ export PYTHONPATH=$(pwd) donttest="(test_apply_pyproject_equivalent_to_setupcfg and https)" # test_pbr_integration tries to install pbr from network using pip donttest+=" or test_pbr_integration" +# test_example_file_in_sdist wants wheel.whl +donttest+=" or test_example_file_in_sdist" +# Failing doctest: AttributeError: 'Path' object has no attribute 'iterdir' +donttest+=" or yield_top_level" %pytest -rfE -n auto -k "not ($donttest)" %endif @@ -133,17 +139,16 @@ donttest+=" or test_pbr_integration" %license LICENSE %doc NEWS.rst README.rst %{python_sitelib}/setuptools -%{python_sitelib}/setuptools-%{version}*-info +%{python_sitelib}/setuptools-%{version}.dist-info %dir %{python_sitelib}/pkg_resources %{python_sitelib}/pkg_resources/* %{python_sitelib}/_distutils_hack %{python_sitelib}/distutils-precedence.pth %endif -%if %{with wheel} +%files %{python_files wheel} %dir %{python_sitelib}/../wheels %{python_sitelib}/../wheels/* %endif -%endif %changelog diff --git a/setuptools-69.0.2.tar.gz b/setuptools-69.0.2.tar.gz deleted file mode 100644 index 0842f6e..0000000 --- a/setuptools-69.0.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6 -size 2219248 diff --git a/setuptools-70.0.0.tar.gz b/setuptools-70.0.0.tar.gz new file mode 100644 index 0000000..ffb428c --- /dev/null +++ b/setuptools-70.0.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0 +size 2265182 diff --git a/sort-for-reproducibility.patch b/sort-for-reproducibility.patch index 56ca4e9..6e74a88 100644 --- a/sort-for-reproducibility.patch +++ b/sort-for-reproducibility.patch @@ -6,11 +6,11 @@ setuptools/tests/test_wheel.py | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) -Index: setuptools-69.0.2/setuptools/command/easy_install.py +Index: setuptools-70.0.0/setuptools/command/easy_install.py =================================================================== ---- setuptools-69.0.2.orig/setuptools/command/easy_install.py -+++ setuptools-69.0.2/setuptools/command/easy_install.py -@@ -441,7 +441,7 @@ class easy_install(Command): +--- setuptools-70.0.0.orig/setuptools/command/easy_install.py ++++ setuptools-70.0.0/setuptools/command/easy_install.py +@@ -436,7 +436,7 @@ class easy_install(Command): for spec in self.args: self.easy_install(spec, not self.no_deps) if self.record: @@ -19,31 +19,31 @@ Index: setuptools-69.0.2/setuptools/command/easy_install.py if self.root: # strip any package prefix root_len = len(self.root) for counter in range(len(outputs)): -Index: setuptools-69.0.2/setuptools/tests/test_wheel.py +Index: setuptools-70.0.0/setuptools/tests/test_wheel.py =================================================================== ---- setuptools-69.0.2.orig/setuptools/tests/test_wheel.py -+++ setuptools-69.0.2/setuptools/tests/test_wheel.py -@@ -424,30 +424,30 @@ WHEEL_INSTALL_TESTS = ( +--- setuptools-70.0.0.orig/setuptools/tests/test_wheel.py ++++ setuptools-70.0.0/setuptools/tests/test_wheel.py +@@ -411,30 +411,30 @@ WHEEL_INSTALL_TESTS = ( dict( id='requires_ensure_order', - install_requires=''' + install_requires=""" - foo bar baz + foo qux - ''', + """, extras_require={ - 'extra': ''' + 'extra': """ - foobar>3 barbaz>4 bazqux>5 + foobar>3 quxzap>6 - ''', + """, }, requires_txt=DALS( - ''' + """ - foo bar baz @@ -56,5 +56,5 @@ Index: setuptools-69.0.2/setuptools/tests/test_wheel.py bazqux>5 + foobar>3 quxzap>6 - ''' + """ ),