diff options
| -rw-r--r-- | dev-util/maturin/Manifest | 2 | ||||
| -rw-r--r-- | dev-util/maturin/maturin-1.9.6.ebuild | 154 |
2 files changed, 156 insertions, 0 deletions
diff --git a/dev-util/maturin/Manifest b/dev-util/maturin/Manifest index 4b582d7d3090..d1702c19d131 100644 --- a/dev-util/maturin/Manifest +++ b/dev-util/maturin/Manifest @@ -2,3 +2,5 @@ DIST maturin-1.9.4-vendor.tar.xz 15870760 BLAKE2B 8ea5a26d618fc2698ecf0a264a81d4 DIST maturin-1.9.4.gh.tar.gz 564039 BLAKE2B 968c3838ba27c358fca2d00c748ecc0b8a19ca4d0c2da61c6b2df9fb1a6387366bf9ff600a3850e9cc866fe1516e4be468f2eb229030a1d85a023e2d59106d02 SHA512 8fb6dcb1d75f47b41b3541b5084fdf3c64f4264b8f254a2767449963cde2f9f8dbef833273d245e87732ebfc8ff61139ef463b18888f422365361fc8fa966fca DIST maturin-1.9.5-vendor.tar.xz 15793068 BLAKE2B bf627f4cd57f8eca78090fbe6372678f1c2c21b69fd5482a2fa883c9d02ac351093278b66dbdf64894137deac6a610106f67b396255a394c5bdf5ef50247afca SHA512 0cf29ccc3a55f9f66bf0e75243d01ffa1a231c2f2be4e07d0f09cec3174a137aaaffbff23d35e9dc978d45c0c9b4a6dd4d2972d7e4970bef055135e91d973273 DIST maturin-1.9.5.gh.tar.gz 571851 BLAKE2B c884102228a2281303b11971150a2011ec50f8d64c8643229274866b336547e97ca43817ec55444d6fdf67eeecccf9d0b39c5e19c2d606db939fe5c36210a55a SHA512 afbd75a6f479b7ebf4e17efd3eb56e12ef313a686ba919962842437f4e2d2b381eb9a1fa287c222e4fabfa3f353db91aeb8429548d388819ed261a36f7fc1707 +DIST maturin-1.9.6-vendor.tar.xz 15789148 BLAKE2B 74b7b1b7ec6b0b0339f7833e6dbfe1ab77324edf6199a20e1820fb784da635ac5e60297201e225bc99b521a88eee75e9b45b8db447ad962585ee4cb158424fe1 SHA512 77a800cc9652529507628acbab7dd3c27fb80a3972499fd5c342054db4ae104c5e42d343f08d23fee56aa58d929c82a4f9c41c3cf172f4a3044b4f4279b1fe4a +DIST maturin-1.9.6.gh.tar.gz 571883 BLAKE2B f47d2fa2899d3e3f489985746afdc15854180915aaad1b365f16c11808e6338f7ea5d83792357bb907c81f59a78b872786d3d49365cd068112aea16e4b9aeb8c SHA512 6e1c43f2b81a5f13be11d5ab488a3f6614a447cedf7e1242006a1bcd738ef29482e04b9a255fa4b54f1893d7a534a9758977695c13d7261b0723dfe725367ff3 diff --git a/dev-util/maturin/maturin-1.9.6.ebuild b/dev-util/maturin/maturin-1.9.6.ebuild new file mode 100644 index 000000000000..9dbf6aa5ed2b --- /dev/null +++ b/dev-util/maturin/maturin-1.9.6.ebuild @@ -0,0 +1,154 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +DISTUTILS_UPSTREAM_PEP517=standalone +PYTHON_COMPAT=( pypy3_11 python3_{11..14} ) +RUST_MIN_VER=1.75.0 +inherit cargo distutils-r1 flag-o-matic shell-completion toolchain-funcs + +DESCRIPTION="Build and publish crates with pyo3, rust-cpython and cffi bindings" +HOMEPAGE="https://www.maturin.rs/" +SRC_URI=" + https://github.com/PyO3/maturin/archive/refs/tags/v${PV}.tar.gz + -> ${P}.gh.tar.gz + https://dev.gentoo.org/~ionen/distfiles/${P}-vendor.tar.xz +" +# ^ tarball also includes test-crates' Cargo.lock(s) crates for tests + +LICENSE="|| ( Apache-2.0 MIT ) doc? ( CC-BY-4.0 OFL-1.1 )" +LICENSE+=" + 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD Boost-1.0 MIT + MPL-2.0 Unicode-3.0 Unicode-DFS-2016 +" # crates +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="doc +ssl test" +RESTRICT="!test? ( test )" + +RDEPEND=" + app-arch/xz-utils + app-arch/zstd:= + ssl? ( dev-libs/openssl:= ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + doc? ( app-text/mdbook ) + test? ( + $(python_gen_cond_dep 'dev-python/cffi[${PYTHON_USEDEP}]' 'python*') + dev-python/boltons[${PYTHON_USEDEP}] + dev-python/virtualenv[${PYTHON_USEDEP}] + dev-vcs/git + elibc_musl? ( dev-util/patchelf ) + ) +" + +QA_FLAGS_IGNORED="usr/bin/${PN}" + +src_prepare() { + distutils-r1_src_prepare + + # we build the Rust executable (just once) via cargo_src_compile + sed -i -e '/setuptools_rust/d' -e '/rust_extensions/d' setup.py || die + + if use test; then + # used to prevent use of network during tests, and silence pip + # if it finds unrelated issues with system packages (bug #913613) + cat > "${T}"/pip.conf <<-EOF || die + [global] + quiet = 2 + + [install] + no-index = yes + no-dependencies = yes + EOF + + # uv does not work easily w/ network-sandbox, force virtualenv + sed -i 's/"uv"/"uv-not-found"/' tests/common/mod.rs || die + + # increase timeouts for tests (bug #950332) + sed -i '/^#\[timeout/s/secs(60)/secs(300)/' tests/run.rs || die + + # used by *git_sdist_generator tests + git init -q || die + git config --global user.email "larry@gentoo.org" || die + git config --global user.name "Larry the Cow" || die + git add . || die + git commit -qm init || die + fi +} + +src_configure() { + export OPENSSL_NO_VENDOR=1 + export ZSTD_SYS_USE_PKG_CONFIG=1 + + # https://github.com/rust-lang/stacker/issues/79 + use s390 && ! is-flagq '-march=*' && + append-cflags $(test-flags-CC -march=z10) + + local myfeatures=( + # like release.yml + native-tls for better platform support than rustls + full + password-storage + $(usev ssl native-tls) + ) + + cargo_src_configure --no-default-features +} + +python_compile_all() { + cargo_src_compile + + use !doc || mdbook build -d html guide || die + + if ! tc-is-cross-compiler; then + local maturin=$(cargo_target_dir)/maturin + "${maturin}" completions bash > "${T}"/${PN} || die + "${maturin}" completions fish > "${T}"/${PN}.fish || die + "${maturin}" completions zsh > "${T}"/_${PN} || die + else + ewarn "shell completion files were skipped due to cross-compilation" + fi +} + +python_test() { + local -x MATURIN_TEST_PYTHON=${EPYTHON} + local -x PIP_CONFIG_FILE=${T}/pip.conf + local -x VIRTUALENV_SYSTEM_SITE_PACKAGES=1 + + # need this for (new) python versions not yet recognized by pyo3 + local -x PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 + + local skip=( + # picky cli output test that easily benignly fail (bug #937992) + --skip cli_tests + # avoid need for wasm over a single hello world test + --skip integration_wasm_hello_world + # fragile depending on rust version, also wants libpypy*-c.so for pypy + --skip pyo3_no_extension_module + # unimportant tests that require uv, and not obvious to get it + # to work with network-sandbox (not worth the trouble) + --skip develop_hello_world::case_2 + --skip develop_pyo3_ffi_pure::case_2 + # compliance test using zig requires an old libc to pass (bug #946967) + --skip integration_pyo3_mixed_py_subdir + ) + + cargo_src_test -- "${skip[@]}" +} + +python_install_all() { + dobin "$(cargo_target_dir)"/maturin + + dodoc Changelog.md README.md + use doc && dodoc -r guide/html + + if ! tc-is-cross-compiler; then + dobashcomp "${T}"/${PN} + dofishcomp "${T}"/${PN}.fish + dozshcomp "${T}"/_${PN} + fi +} |
