python3Packages.uv: reuse already built uv binary (#412206)
This commit is contained in:
@@ -1,36 +1,45 @@
|
||||
{
|
||||
buildPythonPackage,
|
||||
installShellFiles,
|
||||
rustPlatform,
|
||||
pkgs,
|
||||
versionCheckHook,
|
||||
hatchling,
|
||||
lib,
|
||||
uv,
|
||||
}:
|
||||
|
||||
buildPythonPackage {
|
||||
inherit (pkgs.uv)
|
||||
inherit (uv)
|
||||
pname
|
||||
version
|
||||
src
|
||||
cargoDeps
|
||||
meta
|
||||
cargoBuildFlags
|
||||
postInstall
|
||||
versionCheckProgramArg
|
||||
;
|
||||
pyproject = true;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace python/uv/_find_uv.py \
|
||||
--replace-fail '"""Return the uv binary path."""' "return '$out/bin/uv'"
|
||||
build-system = [ hatchling ];
|
||||
|
||||
postPatch =
|
||||
# Do not rely on path lookup at runtime to find the uv binary.
|
||||
# Use the propagated binary instead.
|
||||
''
|
||||
substituteInPlace python/uv/_find_uv.py \
|
||||
--replace-fail '"""Return the uv binary path."""' "return '${lib.getExe uv}'"
|
||||
''
|
||||
# Sidestep the maturin build system in favour of reusing the binary already built by nixpkgs,
|
||||
# to avoid rebuilding the uv binary for every active python package set.
|
||||
+ ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail 'requires = ["maturin>=1.0,<2.0"]' 'requires = ["hatchling"]' \
|
||||
--replace-fail 'build-backend = "maturin"' 'build-backend = "hatchling.build"'
|
||||
|
||||
cat >> pyproject.toml <<EOF
|
||||
[tool.hatch.build]
|
||||
packages = ['python/uv']
|
||||
|
||||
EOF
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/bin && ln -s ${lib.getExe uv} $out/bin/uv
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
rustPlatform.cargoSetupHook
|
||||
rustPlatform.maturinBuildHook
|
||||
];
|
||||
|
||||
nativeCheckInputs = [ versionCheckHook ];
|
||||
|
||||
pyproject = true;
|
||||
pythonImportsCheck = [ "uv" ];
|
||||
}
|
||||
|
||||
@@ -18674,7 +18674,7 @@ self: super: with self; {
|
||||
|
||||
uuid6 = callPackage ../development/python-modules/uuid6 { };
|
||||
|
||||
uv = callPackage ../development/python-modules/uv { };
|
||||
uv = callPackage ../development/python-modules/uv { inherit (pkgs) uv; };
|
||||
|
||||
uv-build = callPackage ../development/python-modules/uv-build { };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user