From e70215a02b1de1a852cf3421666098165da02182 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Mon, 26 Jul 2021 13:27:34 +0200 Subject: [PATCH] Replace semantic_version with packaging Resolves: rhbz#1980994 --- ...lace-semantic_version-with-packaging.patch | 120 ++++++++++++++++++ python-setuptools-rust.spec | 11 +- 2 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 0001-Replace-semantic_version-with-packaging.patch diff --git a/0001-Replace-semantic_version-with-packaging.patch b/0001-Replace-semantic_version-with-packaging.patch new file mode 100644 index 0000000..857e9d6 --- /dev/null +++ b/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/python-setuptools-rust.spec b/python-setuptools-rust.spec index 4e1d13c..31ff27c 100644 --- a/python-setuptools-rust.spec +++ b/python-setuptools-rust.spec @@ -6,18 +6,19 @@ Name: python-setuptools-rust Version: 0.12.1 -Release: 2%{?dist} +Release: 3%{?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(semantic-version) >= 2.6 +BuildRequires: python3dist(packaging) BuildRequires: python3dist(toml) >= 0.9.0 %if 0%{?fedora} BuildRequires: python3dist(setuptools-scm) >= 3.4.3 @@ -48,7 +49,7 @@ 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 -n setuptools-rust-%{version} +%autosetup -p1 -n setuptools-rust-%{version} # Remove bundled egg-info rm -rf setuptools-rust.egg-info @@ -92,6 +93,10 @@ cd ../.. %{python3_sitelib}/setuptools_rust-%{version}-py%{python3_version}.egg-info/ %changelog +* 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