Skip to content

Commit

Permalink
writers.writePython2 and writePython3: use "bare" python if no deps a…
Browse files Browse the repository at this point in the history
…re needed

`python.withPackages` has a runtime dependecy on bash since it's wrapped with
`makeWrapper`. This fix avoids bash as runtime dependency when it's not
needed.

as discussed here: NixOS#93609 (comment)
  • Loading branch information
adrian-gierakowski committed Jul 24, 2020
1 parent d904704 commit 76437a8
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 22 deletions.
42 changes: 20 additions & 22 deletions pkgs/build-support/writers/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,24 @@ rec {
writePerlBin = name:
writePerl "/bin/${name}";

# makePythonWriter takes python and compatible pythonPackages and produces python script writer,
# which validates the script with flake8 at build time. If any libraries are specified,
# python.withPackages is used as interpreter, otherwise the "bare" python is used.
makePythonWriter = python: pythonPackages: name: { libraries ? [], flakeIgnore ? [] }:
let
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}";
in
makeScriptWriter {
interpreter =
if libraries == []
then "${python}/bin/python"
else "${python.withPackages (ps: libraries)}/bin/python"
;
check = writeDash "python2check.sh" ''
exec ${pythonPackages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
'';
} name;

# writePython2 takes a name an attributeset with libraries and some python2 sourcecode and
# returns an executable
#
Expand All @@ -239,17 +257,7 @@ rec {
#
# print Test.a
# ''
writePython2 = name: { libraries ? [], flakeIgnore ? [] }:
let
py = pkgs.python2.withPackages (ps: libraries);
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}";
in
makeScriptWriter {
interpreter = "${py}/bin/python";
check = writeDash "python2check.sh" ''
exec ${pkgs.python2Packages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
'';
} name;
writePython2 = makePythonWriter pkgs.python2 pkgs.python2Packages;

# writePython2Bin takes the same arguments as writePython2 but outputs a directory (like writeScriptBin)
writePython2Bin = name:
Expand All @@ -267,17 +275,7 @@ rec {
# """)
# print(y[0]['test'])
# ''
writePython3 = name: { libraries ? [], flakeIgnore ? [] }:
let
py = pkgs.python3.withPackages (ps: libraries);
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}";
in
makeScriptWriter {
interpreter = "${py}/bin/python";
check = writeDash "python3check.sh" ''
exec ${pkgs.python3Packages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
'';
} name;
writePython3 = makePythonWriter pkgs.python3 pkgs.python3Packages;

# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin)
writePython3Bin = name:
Expand Down
8 changes: 8 additions & 0 deletions pkgs/build-support/writers/test.nix
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,14 @@ let
""")
print(y[0]['test'])
'';

python2NoLibs = writePython2 "test_python2_no_libs" {} ''
print("success")
'';

python3NoLibs = writePython3 "test_python3_no_libs" {} ''
print("success")
'';
};


Expand Down

0 comments on commit 76437a8

Please sign in to comment.