diff --git a/dev-python/uv/Manifest b/dev-python/uv/Manifest index 3e4d601acc034..4f4307a3a9573 100644 --- a/dev-python/uv/Manifest +++ b/dev-python/uv/Manifest @@ -2,6 +2,8 @@ DIST uv-0.10.10-crates.tar.xz 41709176 BLAKE2B b37f5b1f94c697866885418071c268fe9 DIST uv-0.10.10.gh.tar.gz 5085650 BLAKE2B 98a1a3d9cef9f54977a9da42bd02b163185ca4181f0f7c73b09a3d3c2a7fe600f9ee65fa6e9f792bcaa6ea1676480e82c2aeda89719115214095a7937b40b069 SHA512 b95ad2534ecc57f2a4e4235d632c006283cdf0ccb8c629be880f45137cbc17ed2ee3b0a6459bbedc0603ee9b044044495a67752c549daabd9e49484afc343635 DIST uv-0.10.11-crates.tar.xz 40537708 BLAKE2B 42e719e3f2f7c8c1b73850c244c80567fbbe3b58faa1b158e7f8a81428690dfd35f3443a08aeebb9252574e451df01db608ad6c844556d6be9b0cdee103d09ac SHA512 5ceba4ebd0f0edb565edf0124b1dc3a44c60201a146a0df2c354639476653b7d78ed7520d96c8e4767552e14811ce94292ccbec47d2cd53ef17eff881aa94883 DIST uv-0.10.11.gh.tar.gz 5088616 BLAKE2B 5014aa9166d1ab8d259c828b7010380f238f8eb0608e45035715ab10cdb5a2d68fed806220bd6fed7c96656b7c1c1b32bbe29ccae3732443c0fa87b505edad73 SHA512 d6ae4c6b0be58505322ed6815f47b43b68e6e671a1a5c29e40e200bf2c5582f28e7714c3aed52e5314566f2ceab8fde9f316f592e43d9903b001bf048ccf9340 +DIST uv-0.10.12-crates.tar.xz 40530280 BLAKE2B f7c133c5f82124ef860f8e143a4955cf8f3196c8dcdea77ebba6b34d592e1184abe1af5e11085754e04601867ce080f6a4962aabd0457324eb9284bd4a7a6ca1 SHA512 44d8b0bf2f5792aa273e51f4a51a32ffb692b71f8554a7f04743a3cee19f678ef92581384d5e7317ba810ac8dcce77c04d4e88c2731aa5ffcc22865cdad7e3ab +DIST uv-0.10.12.gh.tar.gz 5104534 BLAKE2B 46888f0e7dbdb5b4d92bf0267168a72b77680193acfb6d79cf2e9ef625592fc07d6f4e926d52cd470ae71359cde317cabdb1d6f4b625115cf420b7d69935713e SHA512 e8274cd353e9964981a1befcd8c3f9533e37831f0c3288d6c7ec2232b0c1017a4a9d5fb7960e93edfabb8c7add1d1c500b0309d2e6be59164b61a4baee1ad7b8 DIST uv-0.10.2-crates.tar.xz 40488272 BLAKE2B 7b60ce55ac335b4f22c14e4029451e5931a52d2fbd2342d53d444a84ea50383ba79c5152b0f394d49937dd5e0d7449f92bf69fd6a32e3509f682403533eb9f8b SHA512 7fdac474d6b6cbd4ff22e40396b47edcf050ace6d7d74885c90e6833169ba2051d392b2f70f7a8dc9d12cecb7fc81102a556c5b5510cd678be996a3e90ff2e08 DIST uv-0.10.2.gh.tar.gz 4927786 BLAKE2B bdbc9014a9362121205f12046eea0999838c9a72bf6d3cb347c51c13f92cb7b5b4524b4abcc81caac297645f2863e577981b033a4ee6a29166cd818aec06a6ad SHA512 7592217ce76cd0a418a4979df045890e215c5bcff53d18e34924e0d57ec388fc8ce56b3fdc7ee473f131de5d04a4349b1dbb9d5a585493a0cd9a22dfd51e9cfc DIST uv-0.10.4-crates.tar.xz 40639148 BLAKE2B 3cd5b71f5e276b0df754d452014e068eefbc90ad15888e130de0678f7e423ec2c28fea97d4ae896e0b6104ba3fe67a62ad5e968fab1fb5064b618df00aafde18 SHA512 c7cbfd337f382b759de159c7dd1b28419228ad18d3da1fcbf16e23eaaec0dd02cf68f16d6ed834b1046700702d22b4a1448de20440889078f5aab4750fce921a diff --git a/dev-python/uv/uv-0.10.12.ebuild b/dev-python/uv/uv-0.10.12.ebuild new file mode 100644 index 0000000000000..ea2607714c56a --- /dev/null +++ b/dev-python/uv/uv-0.10.12.ebuild @@ -0,0 +1,164 @@ +# Copyright 2024-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CRATES=" +" +RUST_MIN_VER="1.92.0" + +inherit cargo check-reqs + +CRATE_PV=${PV} +DESCRIPTION="A Python package installer and resolver, written in Rust" +HOMEPAGE=" + https://github.com/astral-sh/uv/ + https://pypi.org/project/uv/ +" +# pypi sdist misses scripts/, needed for tests +SRC_URI=" + https://github.com/astral-sh/uv/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz + ${CARGO_CRATE_URIS} +" +if [[ ${PKGBUMPING} != ${PVR} ]]; then + SRC_URI+=" + https://github.com/gentoo-crate-dist/uv/releases/download/${CRATE_PV}/uv-${CRATE_PV}-crates.tar.xz + " +fi + +# most of the code +LICENSE="|| ( Apache-2.0 MIT )" +# crates/pep508-rs is || ( Apache-2.0 BSD-2 ) which is covered below +# Dependent crate licenses +LICENSE+=" + 0BSD Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD CC0-1.0 + CDLA-Permissive-2.0 ISC MIT MPL-2.0 Unicode-3.0 Unicode-DFS-2016 + ZLIB BZIP2 +" +# ring crate +LICENSE+=" openssl" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86" +IUSE="test" +RESTRICT="test" +PROPERTIES="test_network" + +DEPEND=" + app-arch/bzip2:= + app-arch/xz-utils:= + app-arch/zstd:= +" +RDEPEND=" + ${DEPEND} +" +BDEPEND=" + virtual/pkgconfig + test? ( + dev-lang/python:3.9 + dev-lang/python:3.10 + dev-lang/python:3.11 + dev-lang/python:3.12 + dev-lang/python:3.13 + !!~dev-python/uv-0.5.0 + ) +" + +QA_FLAGS_IGNORED="usr/bin/.*" + +check_space() { + local CHECKREQS_DISK_BUILD=3G + use debug && CHECKREQS_DISK_BUILD=9G + check-reqs_pkg_setup +} + +pkg_pretend() { + check_space +} + +pkg_setup() { + check_space + rust_pkg_setup +} + +src_prepare() { + default + + # force thin lto, makes build much faster and less memory hungry + # (i.e. makes it possible to actually build uv on 32-bit PPC) + sed -i -e '/lto/s:fat:thin:' Cargo.toml || die + + # enable system libraries where supported + export ZSTD_SYS_USE_PKG_CONFIG=1 + # TODO: unbundle libz-ng-sys, tikv-jemalloc-sys? + + # remove unbundled sources, just in case + find "${ECARGO_VENDOR}"/{bzip2,lzma,zstd}-sys-*/ -name '*.c' -delete || die + + # bzip2-sys requires a pkg-config file + # https://github.com/alexcrichton/bzip2-rs/issues/104 + mkdir "${T}/pkg-config" || die + export PKG_CONFIG_PATH=${T}/pkg-config${PKG_CONFIG_PATH+:${PKG_CONFIG_PATH}} + cat >> "${T}/pkg-config/bzip2.pc" <<-EOF || die + Name: bzip2 + Version: 9999 + Description: + Libs: -lbz2 + EOF + + # uv is now forcing bundled liblzma, sigh + sed -i -e '/xz/s:"static"::' Cargo.toml || die +} + +src_configure() { + local myfeatures=( + test-git + test-pypi + test-python + ) + + cargo_src_configure --no-default-features +} + +src_compile() { + cd crates/uv || die + cargo_src_compile +} + +src_test() { + cd crates/uv || die + cargo_src_test --no-fail-fast +} + +src_install() { + cd crates/uv || die + cargo_src_install + + insinto /etc/xdg/uv + newins - uv.toml <<-EOF || die + # These defaults match Fedora, see: + # https://src.fedoraproject.org/rpms/uv/pull-request/18 + + # By default ("automatic"), uv downloads missing Python versions + # automatically and keeps them in the user's home directory. + # Disable that to make downloading opt-in, and especially + # to avoid unnecessarily fetching custom Python when the distro + # package would be preferable. Python builds can still be + # downloaded manually via "uv python install". + # + # https://docs.astral.sh/uv/reference/settings/#python-downloads + python-downloads = "manual" + + # By default ("managed"), uv always prefers self-installed + # Python versions over the system Python, independently + # of versions. Since we generally expect users to use that + # to install old Python versions not in ::gentoo anymore, + # this effectively means that uv would end up preferring very + # old Python versions over the newer ones that are provided + # by the system. Default to using the system versions to avoid + # this counter-intuitive behavior. + # + # https://docs.astral.sh/uv/reference/settings/#python-preference + python-preference = "system" + EOF +}