diff options
Diffstat (limited to 'pkgs/development/interpreters/python/hooks/default.nix')
-rw-r--r-- | pkgs/development/interpreters/python/hooks/default.nix | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix index 700276e77af..0a4600b9d6c 100644 --- a/pkgs/development/interpreters/python/hooks/default.nix +++ b/pkgs/development/interpreters/python/hooks/default.nix @@ -1,8 +1,8 @@ self: dontUse: with self; let - inherit (python) pythonForBuild; - pythonInterpreter = pythonForBuild.interpreter; + inherit (python) pythonOnBuildForHost; + pythonInterpreter = pythonOnBuildForHost.interpreter; pythonSitePackages = python.sitePackages; pythonCheckInterpreter = python.interpreter; setuppy = ../run_setup.py; @@ -57,9 +57,21 @@ in { pypaBuildHook = callPackage ({ makePythonHook, build, wheel }: makePythonHook { name = "pypa-build-hook.sh"; - propagatedBuildInputs = [ build wheel ]; + propagatedBuildInputs = [ wheel ]; + substitutions = { + inherit build; + }; + # A test to ensure that this hook never propagates any of its dependencies + # into the build environment. + # This prevents false positive alerts raised by catchConflictsHook. + # Such conflicts don't happen within the standard nixpkgs python package + # set, but in downstream projects that build packages depending on other + # versions of this hook's dependencies. + passthru.tests = import ./pypa-build-hook-tests.nix { + inherit pythonOnBuildForHost runCommand; + }; } ./pypa-build-hook.sh) { - inherit (pythonForBuild.pkgs) build; + inherit (pythonOnBuildForHost.pkgs) build; }; pipInstallHook = callPackage ({ makePythonHook, pip }: @@ -79,7 +91,7 @@ in { inherit pythonInterpreter pythonSitePackages; }; } ./pypa-install-hook.sh) { - inherit (pythonForBuild.pkgs) installer; + inherit (pythonOnBuildForHost.pkgs) installer; }; pytestCheckHook = callPackage ({ makePythonHook, pytest }: @@ -94,9 +106,16 @@ in { pythonCatchConflictsHook = callPackage ({ makePythonHook, setuptools }: makePythonHook { name = "python-catch-conflicts-hook"; - substitutions = { - inherit pythonInterpreter pythonSitePackages setuptools; - catchConflicts=../catch_conflicts/catch_conflicts.py; + substitutions = let + useLegacyHook = lib.versionOlder python.version "3.10"; + in { + inherit pythonInterpreter pythonSitePackages; + catchConflicts = if useLegacyHook then + ../catch_conflicts/catch_conflicts_py2.py + else + ../catch_conflicts/catch_conflicts.py; + } // lib.optionalAttrs useLegacyHook { + inherit setuptools; }; } ./python-catch-conflicts-hook.sh) {}; @@ -171,16 +190,14 @@ in { }; } ./setuptools-check-hook.sh) {}; - setuptoolsRustBuildHook = callPackage ({ makePythonHook, setuptools-rust, rust }: + setuptoolsRustBuildHook = callPackage ({ makePythonHook, setuptools-rust }: makePythonHook { name = "setuptools-rust-setup-hook"; propagatedBuildInputs = [ setuptools-rust ]; substitutions = { pyLibDir = "${python}/lib/${python.libPrefix}"; - cargoBuildTarget = rust.toRustTargetSpec stdenv.hostPlatform; - cargoLinkerVar = lib.toUpper ( - builtins.replaceStrings ["-"] ["_"] ( - rust.toRustTarget stdenv.hostPlatform)); + cargoBuildTarget = stdenv.hostPlatform.rust.rustcTargetSpec; + cargoLinkerVar = stdenv.hostPlatform.rust.cargoEnvVarTarget; targetLinker = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; }; } ./setuptools-rust-hook.sh) {}; @@ -215,6 +232,9 @@ in { sphinxHook = callPackage ({ makePythonHook, installShellFiles }: makePythonHook { name = "python${python.pythonVersion}-sphinx-hook"; - propagatedBuildInputs = [ pythonForBuild.pkgs.sphinx installShellFiles ]; + propagatedBuildInputs = [ pythonOnBuildForHost.pkgs.sphinx installShellFiles ]; + substitutions = { + sphinxBuild = "${pythonOnBuildForHost.pkgs.sphinx}/bin/sphinx-build"; + }; } ./sphinx-hook.sh) {}; } |