From 3105a27479451a64587fa8df224e0e1fb4d7dce4 Mon Sep 17 00:00:00 2001 From: Toshaan Bharvani Date: Tue, 4 Apr 2023 22:30:14 +0200 Subject: [PATCH] iniital package creation Signed-off-by: Toshaan Bharvani --- ...lace-semantic_version-with-packaging.patch | 120 +++++++++++++++++ SPECS/python-setuptools-rust.spec | 125 ++++++++++++++++++ 2 files changed, 245 insertions(+) create mode 100644 SOURCES/0001-Replace-semantic_version-with-packaging.patch create mode 100644 SPECS/python-setuptools-rust.spec diff --git a/SOURCES/0001-Replace-semantic_version-with-packaging.patch b/SOURCES/0001-Replace-semantic_version-with-packaging.patch new file mode 100644 index 0000000..857e9d6 --- /dev/null +++ b/SOURCES/0001-Replace-semantic_version-with-packaging.patch @@ -0,0 +1,120 @@ +From 78965633be625fba3fee6fbbf3b24e22d9d349cc Mon Sep 17 00:00:00 2001 +From: Christian Heimes +Date: Mon, 26 Jul 2021 12:29:12 +0200 +Subject: [PATCH] Replace semantic_version with packaging + +Use the "packaging" package instead of semantic_version package to parse +Rust version and spec. Packaging is used by setuptools to parse version +strings and specs. + +This also solves a deprecation warning with semamtic_version. The +partial argument to Version() has been deprecated. + +Signed-off-by: Christian Heimes +--- + setup.cfg | 2 +- + setuptools_rust/check.py | 4 ++-- + setuptools_rust/extension.py | 4 ++-- + setuptools_rust/test.py | 4 ++-- + setuptools_rust/utils.py | 4 ++-- + 5 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/setup.cfg b/setup.cfg +index 5b6ddf0..19b2b84 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -26,7 +26,7 @@ classifiers = + [options] + packages = setuptools_rust + zip_safe = True +-install_requires = setuptools>=46.1; semantic_version>=2.6.0; toml>=0.9.0 ++install_requires = setuptools>=46.1; packaging; toml>=0.9.0 + setup_requires = setuptools>=46.1; setuptools_scm[toml]>=3.4.3 + python_requires = >=3.6 + +diff --git a/setuptools_rust/check.py b/setuptools_rust/check.py +index 4fe1d83..62e666b 100644 +--- a/setuptools_rust/check.py ++++ b/setuptools_rust/check.py +@@ -7,13 +7,13 @@ from distutils.errors import ( + DistutilsExecError, + ) + +-import semantic_version ++from packaging.specifiers import SpecifierSet + + from .command import RustCommand + from .extension import RustExtension + from .utils import rust_features + +-MIN_VERSION = semantic_version.Spec(">=1.16") ++MIN_VERSION = SpecifierSet(">=1.16") + + + class check_rust(RustCommand): +diff --git a/setuptools_rust/extension.py b/setuptools_rust/extension.py +index f8e7205..cc445cb 100644 +--- a/setuptools_rust/extension.py ++++ b/setuptools_rust/extension.py +@@ -4,7 +4,7 @@ from distutils.errors import DistutilsSetupError + from enum import IntEnum, auto + from typing import Dict, List, Optional, Union + +-import semantic_version ++from packaging.specifiers import SpecifierSet + + + class Binding(IntEnum): +@@ -149,7 +149,7 @@ class RustExtension: + if self.rust_version is None: + return None + try: +- return semantic_version.SimpleSpec.parse(self.rust_version) ++ return SpecifierSet(self.rust_version) + except ValueError: + raise DistutilsSetupError( + "Can not parse rust compiler version: %s", self.rust_version +diff --git a/setuptools_rust/test.py b/setuptools_rust/test.py +index 93beba1..1f5ce9a 100644 +--- a/setuptools_rust/test.py ++++ b/setuptools_rust/test.py +@@ -4,12 +4,12 @@ import subprocess + from distutils.cmd import Command + from distutils.errors import CompileError, DistutilsFileError, DistutilsExecError + +-import semantic_version ++from packaging.specifiers import SpecifierSet + + from .extension import RustExtension + from .utils import rust_features, get_rust_version + +-MIN_VERSION = semantic_version.Spec(">=1.15") ++MIN_VERSION = SpecifierSet(">=1.15") + + + class test_rust(Command): +diff --git a/setuptools_rust/utils.py b/setuptools_rust/utils.py +index 4b0220d..0564f26 100644 +--- a/setuptools_rust/utils.py ++++ b/setuptools_rust/utils.py +@@ -2,7 +2,7 @@ import sys + import subprocess + from distutils.errors import DistutilsPlatformError + +-import semantic_version ++from packaging.version import Version + + from .extension import Binding + +@@ -35,7 +35,7 @@ def rust_features(ext=True, binding=Binding.PyO3): + def get_rust_version(min_version=None): + try: + output = subprocess.check_output(["rustc", "-V"]).decode("latin-1") +- return semantic_version.Version(output.split(" ")[1], partial=True) ++ return Version(output.split(" ")[1]) + except (subprocess.CalledProcessError, OSError): + raise DistutilsPlatformError( + "can't find Rust compiler\n\n" +-- +2.31.1 + diff --git a/SPECS/python-setuptools-rust.spec b/SPECS/python-setuptools-rust.spec new file mode 100644 index 0000000..a1e7e0e --- /dev/null +++ b/SPECS/python-setuptools-rust.spec @@ -0,0 +1,125 @@ +%if 0%{?rhel} +%bcond_with tests +%else +%bcond_without tests +%endif + +Name: python-setuptools-rust +Version: 0.12.1 +Release: 4%{?dist} +Summary: Setuptools Rust extension plugin + +License: MIT +URL: https://github.com/PyO3/setuptools-rust +Source0: %{pypi_source setuptools-rust} +Patch0001: 0001-Replace-semantic_version-with-packaging.patch +BuildArch: noarch +ExclusiveArch: %{rust_arches} + +BuildRequires: python3-devel +BuildRequires: python3dist(setuptools) +BuildRequires: python3dist(packaging) +BuildRequires: python3dist(toml) >= 0.9.0 +%if 0%{?fedora} +BuildRequires: python3dist(setuptools-scm) >= 3.4.3 +BuildRequires: python3dist(wheel) +BuildRequires: rust-packaging >= 1.45 +%else +# RHEL has rust-toolset and neither setuptools-scm nor wheel +BuildRequires: rust-toolset >= 1.45 +%endif +%if %{with tests} +BuildRequires: rust-pyo3+default-devel +%endif + +%description +Setuptools helpers for Rust Python extensions. Compile and distribute Python +extensions written in Rust as easily as if they were written in C. + +%package -n python3-setuptools-rust +Summary: %{summary} +%if 0%{?fedora} +Requires: rust-packaging >= 1.45 +%else +Requires: rust-toolset >= 1.45 +%endif + +%description -n python3-setuptools-rust +Setuptools helpers for Rust Python extensions. Compile and distribute Python +extensions written in Rust as easily as if they were written in C. + +%prep +%autosetup -p1 -n setuptools-rust-%{version} +# Remove bundled egg-info +rm -rf setuptools-rust.egg-info + +%if ! 0%{?fedora} +# RHEL doesn't have setuptools-scm +# remove setuptools-scm +rm pyproject.toml +sed -i 's/setup_requires.*//' setup.cfg + +# create version.py without setuptools-scm +cat > setuptools_rust/version.py << EOF +version = '%{VERSION}' +version_tuple = ($(echo %{VERSION} | sed 's/\./, /g')) +EOF +%endif + + +%build +%py3_build + +%install +%py3_install + +%check +PYTHONPATH=%{buildroot}%{python3_sitelib} \ + %{__python3} -c "from setuptools_rust import RustExtension, version" + +%if %{with tests} +cd examples/tomlgen +%cargo_prep +sed -i 's/"0\.[0-9.]*"/"^0"/g' setup.cfg +PYTHONPATH=%{buildroot}%{python3_sitelib} %{__python3} setup.py build +cd ../.. +%endif + + +%files -n python3-setuptools-rust +%doc README.md CHANGELOG.md +%license LICENSE +%{python3_sitelib}/setuptools_rust/ +%{python3_sitelib}/setuptools_rust-%{version}-py%{python3_version}.egg-info/ + +%changelog +* Tue Aug 10 2021 Mohan Boddu - 0.12.1-4 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Mon Jul 26 2021 Christian Heimes - 0.12.1-3 +- Replace semantic_version with packaging +- Resolves: rhbz#1980994 + +* Fri Apr 16 2021 Mohan Boddu - 0.12.1-2 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Thu Mar 11 2021 Christian Heimes - 0.12.1-1 +- Update to 0.12.1 + +* Tue Mar 09 2021 Christian Heimes - 0.12.0-1 +- Update to 0.12.0 (#1936679) +- Run tomlgen example as test case + +* Thu Feb 11 2021 Christian Heimes - 0.11.6-4 +- Fix RHEL build: remove wheel build requirements, use rust-toolset + +* Thu Feb 11 2021 Christian Heimes - 0.11.6-3 +- Add RHEL packaging support + +* Wed Jan 27 2021 Fedora Release Engineering - 0.11.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Jan 14 2021 Christian Heimes - 0.11.6-1 +- Initial package. +- Resolves: rhbz#1906490