File python-maturin.spec of Package python-maturin

#
# spec file for package python-maturin
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           python-maturin
Version:        0.13.0
Release:        0
Summary:        Rust/Python Interoperability
License:        Apache-2.0 OR MIT
URL:            https://github.com/PyO3/maturin
Source:         https://github.com/PyO3/maturin/archive/refs/tags/v%{version}.tar.gz#/maturin-%{version}-gh.tar.gz
Source1:        vendor.tar.xz
Source2:        cargo_config
BuildRequires:  %{python_module base >= 3.7}
BuildRequires:  %{python_module cffi}
BuildRequires:  %{python_module pip}
BuildRequires:  %{python_module setuptools-rust >= 1.4.0}
BuildRequires:  %{python_module setuptools}
BuildRequires:  %{python_module tomli >= 1.1.0 if %python-base < 3.11}
BuildRequires:  %{python_module wheel >= 0.36.2}
BuildRequires:  ca-certificates
BuildRequires:  cargo-packaging
BuildRequires:  fdupes
BuildRequires:  python-rpm-macros
Requires(post): update-alternatives
Requires(postun):update-alternatives
%if 0%{?python_version_nodots} < 311
Requires:       python-tomli >= 1.1.0
%endif
%python_subpackages

%description
Build and publish crates with pyo3, rust-cpython and cffi bindings
as well as rust binaries as python packages.

This project is a zero-configuration replacement for
setuptools-rust milksnake. It supports building wheels for Python
3.6+, can upload them to PyPI and has basic PyPy support.

%prep
%autosetup -a1 -n maturin-%{version}
mkdir .cargo
cp %{SOURCE2} .cargo/config
sed -i '1{/env python/d}' maturin/__init__.py

%build
%pyproject_wheel

%install
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitearch}
%python_clone -a %{buildroot}%{_bindir}/maturin

%check
export PATH=$PWD/build/testinstall/%{_bindir}:$PATH
export RUST_BACKTRACE=1
%python_flavored_alternatives
%{python_expand # adapted from test-dockerfile.sh
export PYTHONPATH=%{buildroot}%{$python_sitearch}:$PWD/build/testinstall/%{$python_sitearch}
for test_crate in hello-world cffi-pure cffi-mixed pyo3-pure pyo3-mixed pyo3-mixed-submodule
do
  pushd test-crates/$test_crate
  mkdir .cargo
  cp %{SOURCE2} .cargo/config
  maturin build -i $python
  popd
  pip install $test_crate \
    --find-links test-crates/$test_crate/target/wheels/ \
    --root=$PWD/build/testinstall \
    --only-binary=:all: \
    --progress-bar off --no-deps --no-index --disable-pip-version-check
  [ $($python test-crates/$test_crate/check_installed/check_installed.py) = 'SUCCESS' ]
done
}

%post
%python_install_alternative maturin

%postun
%python_uninstall_alternative maturin

%files %{python_files}
%license license-apache license-mit
%doc Changelog.md Readme.md
%python_alternative %{_bindir}/maturin
%{python_sitearch}/maturin
%{python_sitearch}/maturin-%{version}*-info

%changelog
openSUSE Build Service is sponsored by