Skip to content

Commit

Permalink
python: Move catch_conflicts.py into subdirectory (#23600)
Browse files Browse the repository at this point in the history
Python does add the script's directory into "sys.path". For the case of
"catch_conflicts.py" this means "/nix/store" is added to "sys.path". This can
result in very long delays if the store contains a lot of entries.
  • Loading branch information
johbo authored and vcunat committed Apr 1, 2017
1 parent f44ea1f commit 76213d1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
13 changes: 13 additions & 0 deletions pkgs/development/interpreters/python/catch_conflicts/README.md
@@ -0,0 +1,13 @@


catch_conflicts.py
==================

The file catch_conflicts.py is in a subdirectory because, if it isn't, the
/nix/store/ directory is added to sys.path causing a delay when building.

Pointers:

- https://docs.python.org/3/library/sys.html#sys.path

- https://github.com/NixOS/nixpkgs/pull/23600
9 changes: 4 additions & 5 deletions pkgs/development/interpreters/python/mk-python-derivation.nix
Expand Up @@ -79,9 +79,10 @@ python.stdenv.mkDerivation (builtins.removeAttrs attrs ["disabled"] // {
postFixup = ''
wrapPythonPrograms
'' + lib.optionalString catchConflicts ''
# check if we have two packages with the same name in closure and fail
# this shouldn't happen, something went wrong with dependencies specs
${python.interpreter} ${./catch_conflicts.py}
# Check if we have two packages with the same name in the closure and fail.
# If this happens, something went wrong with the dependencies specs.
# Intentionally kept in a subdirectory, see catch_conflicts/README.md.
${python.interpreter} ${./catch_conflicts}/catch_conflicts.py
'' + attrs.postFixup or '''';

passthru = {
Expand All @@ -98,5 +99,3 @@ python.stdenv.mkDerivation (builtins.removeAttrs attrs ["disabled"] // {
isBuildPythonPackage = python.meta.platforms;
};
})


0 comments on commit 76213d1

Please sign in to comment.