From 52338b9539ab6c0519fbd374c2680729446b6af3 Mon Sep 17 00:00:00 2001 From: PerchunPak Date: Mon, 1 Sep 2025 11:42:00 +0200 Subject: [PATCH 1/2] python3Packages.uv-dynamic-versioning: add setup hook --- .../python-modules/uv-dynamic-versioning/default.nix | 2 ++ .../python-modules/uv-dynamic-versioning/setup-hook.sh | 8 ++++++++ 2 files changed, 10 insertions(+) create mode 100644 pkgs/development/python-modules/uv-dynamic-versioning/setup-hook.sh diff --git a/pkgs/development/python-modules/uv-dynamic-versioning/default.nix b/pkgs/development/python-modules/uv-dynamic-versioning/default.nix index d76baa765f01..e4148893980b 100644 --- a/pkgs/development/python-modules/uv-dynamic-versioning/default.nix +++ b/pkgs/development/python-modules/uv-dynamic-versioning/default.nix @@ -57,6 +57,8 @@ buildPythonPackage rec { writableTmpDirAsHomeHook ]; + setupHook = ./setup-hook.sh; + meta = { description = "Dynamic versioning based on VCS tags for uv/hatch project"; homepage = "https://github.com/ninoseki/uv-dynamic-versioning"; diff --git a/pkgs/development/python-modules/uv-dynamic-versioning/setup-hook.sh b/pkgs/development/python-modules/uv-dynamic-versioning/setup-hook.sh new file mode 100644 index 000000000000..a347fced2959 --- /dev/null +++ b/pkgs/development/python-modules/uv-dynamic-versioning/setup-hook.sh @@ -0,0 +1,8 @@ +uv-version-pretend-hook() { + echo "Setting UV_DYNAMIC_VERSIONING_BYPASS to $version" + export UV_DYNAMIC_VERSIONING_BYPASS=$version +} + +if [ -z "${dontBypassUvDynamicVersioning-}" ]; then + preBuildHooks+=(uv-version-pretend-hook) +fi From e87ca973b5544b9a94f62701a9247b4a0a2b7545 Mon Sep 17 00:00:00 2001 From: PerchunPak Date: Mon, 1 Sep 2025 11:42:43 +0200 Subject: [PATCH 2/2] treewide: use uv-dynamic-versioning instead of patching --- .../python-modules/dicomweb-client/default.nix | 8 ++------ pkgs/development/python-modules/fastmcp/default.nix | 8 ++------ pkgs/development/python-modules/mcp/default.nix | 13 ++++++------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/pkgs/development/python-modules/dicomweb-client/default.nix b/pkgs/development/python-modules/dicomweb-client/default.nix index 9b0d48f92fc2..5faf8e97db99 100644 --- a/pkgs/development/python-modules/dicomweb-client/default.nix +++ b/pkgs/development/python-modules/dicomweb-client/default.nix @@ -4,6 +4,7 @@ fetchFromGitHub, pythonOlder, hatchling, + uv-dynamic-versioning, pytestCheckHook, pytest-localserver, numpy, @@ -25,14 +26,9 @@ buildPythonPackage rec { hash = "sha256-ZxeZiCw8I5+Bf266PQ6WQA8mBRC7K3/kZrmuW4l6kQU="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace-fail ', "uv-dynamic-versioning"' "" \ - --replace-fail 'dynamic = ["version"]' 'version = "${version}"' - ''; - build-system = [ hatchling + uv-dynamic-versioning ]; dependencies = [ diff --git a/pkgs/development/python-modules/fastmcp/default.nix b/pkgs/development/python-modules/fastmcp/default.nix index efe66eb37b1b..fcffa502451a 100644 --- a/pkgs/development/python-modules/fastmcp/default.nix +++ b/pkgs/development/python-modules/fastmcp/default.nix @@ -7,6 +7,7 @@ # build-system hatchling, + uv-dynamic-versioning, # dependencies authlib, @@ -42,14 +43,9 @@ buildPythonPackage rec { hash = "sha256-jIXrMyNnyPE2DUgg+sxT6LD4dTmKQglh4cFuaw179Z0="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace-fail ', "uv-dynamic-versioning>=0.7.0"' "" \ - --replace-fail 'dynamic = ["version"]' 'version = "${version}"' - ''; - build-system = [ hatchling + uv-dynamic-versioning ]; dependencies = [ diff --git a/pkgs/development/python-modules/mcp/default.nix b/pkgs/development/python-modules/mcp/default.nix index b1d0db042282..42fbcaebd35b 100644 --- a/pkgs/development/python-modules/mcp/default.nix +++ b/pkgs/development/python-modules/mcp/default.nix @@ -6,6 +6,7 @@ # build-system hatchling, + uv-dynamic-versioning, # dependencies anyio, @@ -50,12 +51,7 @@ buildPythonPackage rec { hash = "sha256-CxrUGgQfU1R87D3ZzZCHbQBMIOJRneH6CLbHS62sCaY="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace-fail ', "uv-dynamic-versioning"' "" \ - --replace-fail 'dynamic = ["version"]' 'version = "${version}"' - '' - + lib.optionalString stdenv.buildPlatform.isDarwin '' + postPatch = lib.optionalString stdenv.buildPlatform.isDarwin '' # time.sleep(0.1) feels a bit optimistic and it has been flaky whilst # testing this on macOS under load. substituteInPlace \ @@ -67,7 +63,10 @@ buildPythonPackage rec { --replace-fail "time.sleep(0.1)" "time.sleep(1)" ''; - build-system = [ hatchling ]; + build-system = [ + hatchling + uv-dynamic-versioning + ]; pythonRelaxDeps = [ "pydantic-settings"