# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CARGO_OPTIONAL=yes DISTUTILS_USE_PEP517=setuptools PYTHON_COMPAT=( python3_{10..12} pypy3 ) CRATES=" autocfg@1.1.0 bitflags@1.3.2 byteorder@1.4.3 cfg-if@1.0.0 convert_case@0.4.0 cssparser-macros@0.6.0 cssparser@0.27.2 derive_more@0.99.17 dtoa-short@0.3.3 dtoa@0.4.8 futf@0.1.5 fxhash@0.2.1 getrandom@0.1.16 heck@0.4.1 html5ever@0.25.1 indoc@2.0.4 instant@0.1.12 itoa@0.4.8 kuchiki@0.8.1 lazy_static@1.4.0 libc@0.2.121 libc@0.2.147 lock_api@0.4.10 lock_api@0.4.6 log@0.4.14 mac@0.1.1 markup5ever@0.10.1 matches@0.1.9 memoffset@0.9.0 new_debug_unreachable@1.0.4 nodrop@0.1.14 once_cell@1.10.0 once_cell@1.18.0 parking_lot@0.11.2 parking_lot@0.12.1 parking_lot_core@0.8.5 parking_lot_core@0.9.8 phf@0.8.0 phf_codegen@0.8.0 phf_generator@0.8.0 phf_macros@0.8.0 phf_shared@0.10.0 phf_shared@0.8.0 portable-atomic@1.6.0 ppv-lite86@0.2.16 precomputed-hash@0.1.1 proc-macro-hack@0.5.19 proc-macro2@1.0.66 proc-macro2@1.0.69 pyo3-build-config@0.20.3 pyo3-ffi@0.20.3 pyo3-macros-backend@0.20.3 pyo3-macros@0.20.3 pyo3@0.20.3 quote@1.0.32 quote@1.0.33 rand@0.7.3 rand_chacha@0.2.2 rand_core@0.5.1 rand_hc@0.2.0 rand_pcg@0.2.1 redox_syscall@0.2.11 redox_syscall@0.3.5 rustc_version@0.4.0 scopeguard@1.1.0 scopeguard@1.2.0 selectors@0.22.0 semver@1.0.6 serde@1.0.136 servo_arc@0.1.1 siphasher@0.3.10 smallvec@1.11.0 smallvec@1.8.0 stable_deref_trait@1.2.0 string_cache@0.8.3 string_cache_codegen@0.5.1 syn@1.0.89 syn@2.0.32 syn@2.0.38 target-lexicon@0.12.11 target-lexicon@0.12.3 tendril@0.4.3 thin-slice@0.1.1 unicode-ident@1.0.11 unicode-ident@1.0.12 unicode-xid@0.2.2 unindent@0.2.3 utf-8@0.7.6 wasi@0.9.0+wasi-snapshot-preview1 winapi-i686-pc-windows-gnu@0.4.0 winapi-x86_64-pc-windows-gnu@0.4.0 winapi@0.3.9 windows-targets@0.48.1 windows-targets@0.48.5 windows_aarch64_gnullvm@0.48.0 windows_aarch64_gnullvm@0.48.5 windows_aarch64_msvc@0.48.0 windows_aarch64_msvc@0.48.5 windows_i686_gnu@0.48.0 windows_i686_gnu@0.48.5 windows_i686_msvc@0.48.0 windows_i686_msvc@0.48.5 windows_x86_64_gnu@0.48.0 windows_x86_64_gnu@0.48.5 windows_x86_64_gnullvm@0.48.0 windows_x86_64_gnullvm@0.48.5 windows_x86_64_msvc@0.48.0 windows_x86_64_msvc@0.48.5 " inherit distutils-r1 cargo DESCRIPTION="A plugin for setuptools to build Rust Python extensions" HOMEPAGE=" https://github.com/PyO3/setuptools-rust/ https://pypi.org/project/setuptools-rust/ " SRC_URI=" https://github.com/PyO3/setuptools-rust/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz test? ( ${CARGO_CRATE_URIS} ) " # crates are used at test time only, update via pycargoebuild -L -i ... LICENSE="MIT" SLOT="0" KEYWORDS="amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86" IUSE="test" RESTRICT="!test? ( test )" RDEPEND=" virtual/rust =dev-python/semantic-version-2.8.2[${PYTHON_USEDEP}] >=dev-python/setuptools-62.4[${PYTHON_USEDEP}] " BDEPEND=" >=dev-python/setuptools-62.4[${PYTHON_USEDEP}] test? ( ${RDEPEND} dev-python/beautifulsoup4[${PYTHON_USEDEP}] $(python_gen_cond_dep ' dev-python/cffi[${PYTHON_USEDEP}] ' 'python*') dev-python/lxml[${PYTHON_USEDEP}] dev-python/pytest[${PYTHON_USEDEP}] ) " src_unpack() { cargo_src_unpack } python_test() { local examples=( html-py-ever namespace_package rust_with_cffi ) for example_dir in ${examples[@]}; do pushd examples/${example_dir} >/dev/null || die einfo "Running ${example_dir} test" esetup.py build --build-lib=build/lib case ${example_dir} in html-py-ever) pushd tests >/dev/null || die local -x PYTHONPATH=../build/lib ${EPYTHON} run_all.py || die "Tests failed with ${EPYTHON}" popd >/dev/null || die ;; *) pushd build/lib >/dev/null || die epytest ../../tests popd >/dev/null || die ;; esac rm -rf build || die popd >/dev/null || die done }