self: dontUse: with self; let inherit (python) pythonOnBuildForHost; inherit (pkgs) runCommand; pythonInterpreter = pythonOnBuildForHost.interpreter; pythonSitePackages = python.sitePackages; pythonCheckInterpreter = python.interpreter; setuppy = ../run_setup.py; in { makePythonHook = let defaultArgs = { passthru.provides.setupHook = true; }; in args: pkgs.makeSetupHook (lib.recursiveUpdate defaultArgs args); condaInstallHook = callPackage ( { makePythonHook, gnutar, lbzip2, }: makePythonHook { name = "conda-install-hook"; propagatedBuildInputs = [ gnutar lbzip2 ]; substitutions = { inherit pythonSitePackages; }; } ./conda-install-hook.sh ) { }; condaUnpackHook = callPackage ( { makePythonHook }: makePythonHook { name = "conda-unpack-hook"; propagatedBuildInputs = [ ]; } ./conda-unpack-hook.sh ) { }; eggBuildHook = callPackage ( { makePythonHook }: makePythonHook { name = "egg-build-hook.sh"; propagatedBuildInputs = [ ]; } ./egg-build-hook.sh ) { }; eggInstallHook = callPackage ( { makePythonHook, setuptools }: makePythonHook { name = "egg-install-hook.sh"; propagatedBuildInputs = [ setuptools ]; substitutions = { inherit pythonInterpreter pythonSitePackages; }; } ./egg-install-hook.sh ) { }; eggUnpackHook = callPackage ( { makePythonHook }: makePythonHook { name = "egg-unpack-hook.sh"; propagatedBuildInputs = [ ]; } ./egg-unpack-hook.sh ) { }; pipBuildHook = callPackage ( { makePythonHook, pip, wheel, }: makePythonHook { name = "pip-build-hook.sh"; propagatedBuildInputs = [ pip wheel ]; substitutions = { inherit pythonInterpreter pythonSitePackages; }; } ./pip-build-hook.sh ) { }; pypaBuildHook = callPackage ( { makePythonHook, build, wheel, }: makePythonHook { name = "pypa-build-hook.sh"; 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 = callPackage ./pypa-build-hook-test.nix { inherit pythonOnBuildForHost; }; } ./pypa-build-hook.sh ) { inherit (pythonOnBuildForHost.pkgs) build; }; pipInstallHook = callPackage ( { makePythonHook, pip }: makePythonHook { name = "pip-install-hook"; propagatedBuildInputs = [ pip ]; substitutions = { inherit pythonInterpreter pythonSitePackages; }; } ./pip-install-hook.sh ) { }; pypaInstallHook = callPackage ( { makePythonHook, installer }: makePythonHook { name = "pypa-install-hook"; propagatedBuildInputs = [ installer ]; substitutions = { inherit pythonInterpreter pythonSitePackages; }; } ./pypa-install-hook.sh ) { inherit (pythonOnBuildForHost.pkgs) installer; }; pytestCheckHook = callPackage ( { makePythonHook, pytest }: makePythonHook { name = "pytest-check-hook"; propagatedBuildInputs = [ pytest ]; substitutions = { inherit pythonCheckInterpreter; }; } ./pytest-check-hook.sh ) { }; pythonCatchConflictsHook = callPackage ( { makePythonHook, setuptools }: makePythonHook { name = "python-catch-conflicts-hook"; substitutions = let useLegacyHook = lib.versionOlder python.pythonVersion "3"; 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; }; passthru.tests = import ./python-catch-conflicts-hook-tests.nix { inherit pythonOnBuildForHost runCommand; inherit (pkgs) coreutils gnugrep writeShellScript; }; } ./python-catch-conflicts-hook.sh ) { }; pythonImportsCheckHook = callPackage ( { makePythonHook }: makePythonHook { name = "python-imports-check-hook.sh"; substitutions = { inherit pythonCheckInterpreter pythonSitePackages; }; } ./python-imports-check-hook.sh ) { }; pythonNamespacesHook = callPackage ( { makePythonHook, buildPackages }: makePythonHook { name = "python-namespaces-hook.sh"; substitutions = { inherit pythonSitePackages; inherit (buildPackages) findutils; }; } ./python-namespaces-hook.sh ) { }; pythonOutputDistHook = callPackage ( { makePythonHook }: makePythonHook { name = "python-output-dist-hook"; } ./python-output-dist-hook.sh ) { }; pythonRecompileBytecodeHook = callPackage ( { makePythonHook }: makePythonHook { name = "python-recompile-bytecode-hook"; substitutions = { inherit pythonInterpreter pythonSitePackages; compileArgs = lib.concatStringsSep " " ( [ "-q" "-f" "-i -" ] ++ lib.optionals isPy3k [ "-j $NIX_BUILD_CORES" ] ); bytecodeName = if isPy3k then "__pycache__" else "*.pyc"; }; } ./python-recompile-bytecode-hook.sh ) { }; pythonRelaxDepsHook = callPackage ( { makePythonHook, wheel }: makePythonHook { name = "python-relax-deps-hook"; substitutions = { inherit pythonInterpreter pythonSitePackages wheel; }; } ./python-relax-deps-hook.sh ) { }; pythonRemoveBinBytecodeHook = callPackage ( { makePythonHook }: makePythonHook { name = "python-remove-bin-bytecode-hook"; } ./python-remove-bin-bytecode-hook.sh ) { }; pythonRemoveTestsDirHook = callPackage ( { makePythonHook }: makePythonHook { name = "python-remove-tests-dir-hook"; substitutions = { inherit pythonSitePackages; }; } ./python-remove-tests-dir-hook.sh ) { }; pythonRuntimeDepsCheckHook = callPackage ( { makePythonHook, packaging }: makePythonHook { name = "python-runtime-deps-check-hook.sh"; propagatedBuildInputs = [ packaging ]; substitutions = { inherit pythonInterpreter pythonSitePackages; hook = ./python-runtime-deps-check-hook.py; }; } ./python-runtime-deps-check-hook.sh ) { }; setuptoolsBuildHook = callPackage ( { makePythonHook, setuptools, wheel, }: makePythonHook { name = "setuptools-build-hook"; propagatedBuildInputs = [ setuptools wheel ]; substitutions = { inherit pythonInterpreter setuppy; # python2.pkgs.setuptools does not support parallelism setuptools_has_parallel = setuptools != null && lib.versionAtLeast setuptools.version "69"; }; } ./setuptools-build-hook.sh ) { }; setuptoolsCheckHook = callPackage ( { makePythonHook, setuptools }: makePythonHook { name = "setuptools-check-hook"; propagatedBuildInputs = [ setuptools ]; substitutions = { inherit pythonCheckInterpreter setuppy; }; } ./setuptools-check-hook.sh ) { }; setuptoolsRustBuildHook = callPackage ( { makePythonHook, setuptools-rust }: makePythonHook { name = "setuptools-rust-setup-hook"; propagatedBuildInputs = [ setuptools-rust ]; substitutions = { pyLibDir = "${python}/lib/${python.libPrefix}"; cargoBuildTarget = stdenv.hostPlatform.rust.rustcTargetSpec; cargoLinkerVar = stdenv.hostPlatform.rust.cargoEnvVarTarget; targetLinker = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; }; } ./setuptools-rust-hook.sh ) { }; unittestCheckHook = callPackage ( { makePythonHook }: makePythonHook { name = "unittest-check-hook"; substitutions = { inherit pythonCheckInterpreter; }; } ./unittest-check-hook.sh ) { }; venvShellHook = disabledIf (!isPy3k) ( callPackage ( { makePythonHook, ensureNewerSourcesForZipFilesHook }: makePythonHook { name = "venv-shell-hook"; propagatedBuildInputs = [ ensureNewerSourcesForZipFilesHook ]; substitutions = { inherit pythonInterpreter; }; } ./venv-shell-hook.sh ) { } ); wheelUnpackHook = callPackage ( { makePythonHook, wheel }: makePythonHook { name = "wheel-unpack-hook.sh"; propagatedBuildInputs = [ wheel ]; } ./wheel-unpack-hook.sh ) { }; wrapPython = callPackage ../wrap-python.nix { inherit (pkgs.buildPackages) makeWrapper; }; sphinxHook = callPackage ( { makePythonHook, installShellFiles }: makePythonHook { name = "python${python.pythonVersion}-sphinx-hook"; propagatedBuildInputs = [ pythonOnBuildForHost.pkgs.sphinx installShellFiles ]; substitutions = { sphinxBuild = "${pythonOnBuildForHost.pkgs.sphinx}/bin/sphinx-build"; }; } ./sphinx-hook.sh ) { }; }