# RHEL does not have packaged rust libraries %bcond packaged_rust_libraries %{undefined rhel} # The integration tests depend on the presence of these libraries %bcond integration_tests %{with packaged_rust_libraries} # Regex of integration tests to skip. # * html-py-ever requires unpackaged rust crates %global integration_tests_exc '^(html-py-ever)' Name: python-setuptools-rust Version: 1.7.0 Release: %autorelease Summary: Setuptools Rust extension plugin License: MIT URL: https://github.com/PyO3/setuptools-rust Source0: %{pypi_source setuptools-rust} BuildArch: noarch BuildRequires: python3-devel BuildRequires: %{py3_dist pytest} %if 0%{?fedora} BuildRequires: rust-packaging %else # RHEL has rust-toolset and neither setuptools-scm nor wheel BuildRequires: rust-toolset >= 1.45 %endif %if %{with integration_tests} BuildRequires: %{py3_dist cffi} %endif %global _description %{expand: Setuptools helpers for Rust Python extensions. Compile and distribute Python extensions written in Rust as easily as if they were written in C.} %description %{_description} %package -n python3-setuptools-rust Summary: %{summary} %if 0%{?fedora} Requires: rust-packaging %else Requires: rust-toolset >= 1.45 %endif %description -n python3-setuptools-rust %{_description} %prep %autosetup -n setuptools-rust-%{version} %cargo_prep %if %{with integration_tests} for example in $(ls examples/ | grep -vE %{integration_tests_exc}); do cd "examples/${example}" %cargo_prep cd - done %endif %generate_buildrequires %pyproject_buildrequires %if %{with integration_tests} for example in $(ls examples/ | grep -vE %{integration_tests_exc}); do cd "examples/${example}" %cargo_generate_buildrequires cd - >&2 done %endif %build %pyproject_wheel %install %pyproject_install %pyproject_save_files setuptools_rust %check %pyproject_check_import # Disable tests that require internet access and/or test Windows functionality %global test_ignores %{shrink: not test_adjusted_local_rust_target_windows_msvc and not test_get_lib_name_namespace_package } %if %{without packaged_rust_libraries} %global test_ignores %{shrink:%{test_ignores} and not test_metadata_contents and not test_metadata_cargo_log } %endif %pytest tests/ setuptools_rust/ --import-mode importlib -k '%{test_ignores}' %if %{with integration_tests} export %{py3_test_envvars} for example in $(ls examples/ | grep -vE %{integration_tests_exc}); do cd "examples/${example}" %{python3} -c 'from setuptools.build_meta import build_wheel; build_wheel("dist")' if [ -d "tests/" ]; then %{python3} -m venv venv --system-site-packages ./venv/bin/pip install dist/*.whl ./venv/bin/python -Pm pytest tests/ fi cd - done %endif %files -n python3-setuptools-rust -f %{pyproject_files} %doc README.md CHANGELOG.md %license LICENSE %changelog %autochangelog