From d4873dabae6308e633414a1a25fba4ff88a6674b Mon Sep 17 00:00:00 2001 From: adisbladis Date: Fri, 22 Nov 2024 00:04:52 +0000 Subject: [PATCH] ruff: Build as a standalone without Python Using `buildPythonPackage` make `ruff` propagate the Python used for the build, which might not be the same Python as you want in your development shell. https://github.com/NixOS/nixpkgs/pull/350654 changed the ruff top-level attribute to be built with Python modules. This doesn't actually make much sense, we have versioned Python sets, and including just the one Python in the top-level package isn't helpful, and causes issues downstream related to PATH & PYTHONPATH. See my related [uv PR](https://github.com/NixOS/nixpkgs/pull/357113#issue-2670270577). --- pkgs/by-name/ru/ruff-lsp/package.nix | 2 +- pkgs/by-name/ru/ruff/package.nix | 52 ++++++------------- .../python-modules/ruff/default.nix | 28 ++++++++++ pkgs/top-level/python-packages.nix | 4 +- 4 files changed, 46 insertions(+), 40 deletions(-) create mode 100644 pkgs/development/python-modules/ruff/default.nix diff --git a/pkgs/by-name/ru/ruff-lsp/package.nix b/pkgs/by-name/ru/ruff-lsp/package.nix index 97b905e340c3c6..6214bb2d9332d4 100644 --- a/pkgs/by-name/ru/ruff-lsp/package.nix +++ b/pkgs/by-name/ru/ruff-lsp/package.nix @@ -36,7 +36,7 @@ python3Packages.buildPythonApplication rec { pytestCheckHook pytest-asyncio python-lsp-jsonrpc - ruff.bin + ruff versionCheckHook ]; versionCheckProgramArg = [ "--version" ]; diff --git a/pkgs/by-name/ru/ruff/package.nix b/pkgs/by-name/ru/ruff/package.nix index c9e2e78427f2c5..7d4bdce6292635 100644 --- a/pkgs/by-name/ru/ruff/package.nix +++ b/pkgs/by-name/ru/ruff/package.nix @@ -1,10 +1,10 @@ { lib, stdenv, - python3Packages, - fetchFromGitHub, rustPlatform, + fetchFromGitHub, installShellFiles, + rust-jemalloc-sys, versionCheckHook, @@ -14,15 +14,9 @@ nix-update-script, }: -python3Packages.buildPythonPackage rec { +rustPlatform.buildRustPackage rec { pname = "ruff"; version = "0.8.4"; - pyproject = true; - - outputs = [ - "bin" - "out" - ]; src = fetchFromGitHub { owner = "astral-sh"; @@ -39,38 +33,25 @@ python3Packages.buildPythonPackage rec { 'return "${placeholder "bin"}/bin/ruff"' ''; - cargoDeps = rustPlatform.fetchCargoVendor { - inherit pname version src; - hash = "sha256-jbUjsIJRpkKYc+qHN8tkcZrcjPTFJfdCsatezzdX4Ss="; - }; + useFetchCargoVendor = true; + cargoHash = "sha256-jbUjsIJRpkKYc+qHN8tkcZrcjPTFJfdCsatezzdX4Ss="; - nativeBuildInputs = - [ installShellFiles ] - ++ (with rustPlatform; [ - cargoSetupHook - maturinBuildHook - cargoCheckHook - ]); + nativeBuildInputs = [ installShellFiles ]; buildInputs = [ rust-jemalloc-sys ]; - postInstall = - '' - mkdir -p $bin/bin - mv $out/bin/ruff $bin/bin/ - rmdir $out/bin - '' - + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' - installShellCompletion --cmd ruff \ - --bash <($bin/bin/ruff generate-shell-completion bash) \ - --fish <($bin/bin/ruff generate-shell-completion fish) \ - --zsh <($bin/bin/ruff generate-shell-completion zsh) - ''; + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + installShellCompletion --cmd ruff \ + --bash <($out/bin/ruff generate-shell-completion bash) \ + --fish <($out/bin/ruff generate-shell-completion fish) \ + --zsh <($out/bin/ruff generate-shell-completion zsh) + ''; # Run cargo tests - cargoCheckType = "debug"; + checkType = "debug"; + # tests do not appear to respect linker options on doctests # Upstream issue: https://github.com/rust-lang/cargo/issues/14189 # This causes errors like "error: linker `cc` not found" on static builds @@ -106,12 +87,11 @@ python3Packages.buildPythonPackage rec { "--skip=unix::symlink_inside_workspace" ]; - nativeCheckInputs = [ + nativeInstallCheckInputs = [ versionCheckHook ]; versionCheckProgramArg = [ "--version" ]; - - pythonImportsCheck = [ "ruff" ]; + doInstallCheck = true; passthru = { tests = diff --git a/pkgs/development/python-modules/ruff/default.nix b/pkgs/development/python-modules/ruff/default.nix new file mode 100644 index 00000000000000..8d79eee66f4bc1 --- /dev/null +++ b/pkgs/development/python-modules/ruff/default.nix @@ -0,0 +1,28 @@ +{ + buildPythonPackage, + pkgs, + rustPlatform, + installShellFiles, +}: + +buildPythonPackage { + inherit (pkgs.ruff) + pname + version + src + postPatch + cargoDeps + postInstall + meta + ; + + pyproject = true; + + nativeBuildInputs = [ + installShellFiles + rustPlatform.cargoSetupHook + rustPlatform.maturinBuildHook + ]; + + pythonImportsCheck = [ "ruff" ]; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1a026f7d4d4149..87b860855f5d9c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -14282,9 +14282,7 @@ self: super: with self; { rubymarshal = callPackage ../development/python-modules/rubymarshal { }; - ruff = toPythonModule (pkgs.ruff.override { - python3Packages = self; - }); + ruff = callPackage ../development/python-modules/ruff { }; ruff-api = callPackage ../development/python-modules/ruff-api { };