Merge pull request #93758 from adrian-gierakowski/improve-writers.writePython
writers.writePython2 and writePython3: use "bare" python if no deps are needed
This commit is contained in:
commit
a2ba53f4e1
|
@ -227,6 +227,24 @@ rec {
|
||||||
writePerlBin = name:
|
writePerlBin = name:
|
||||||
writePerl "/bin/${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
|
# writePython2 takes a name an attributeset with libraries and some python2 sourcecode and
|
||||||
# returns an executable
|
# returns an executable
|
||||||
#
|
#
|
||||||
|
@ -239,17 +257,7 @@ rec {
|
||||||
#
|
#
|
||||||
# print Test.a
|
# print Test.a
|
||||||
# ''
|
# ''
|
||||||
writePython2 = name: { libraries ? [], flakeIgnore ? [] }:
|
writePython2 = makePythonWriter pkgs.python2 pkgs.python2Packages;
|
||||||
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;
|
|
||||||
|
|
||||||
# writePython2Bin takes the same arguments as writePython2 but outputs a directory (like writeScriptBin)
|
# writePython2Bin takes the same arguments as writePython2 but outputs a directory (like writeScriptBin)
|
||||||
writePython2Bin = name:
|
writePython2Bin = name:
|
||||||
|
@ -267,17 +275,7 @@ rec {
|
||||||
# """)
|
# """)
|
||||||
# print(y[0]['test'])
|
# print(y[0]['test'])
|
||||||
# ''
|
# ''
|
||||||
writePython3 = name: { libraries ? [], flakeIgnore ? [] }:
|
writePython3 = makePythonWriter pkgs.python3 pkgs.python3Packages;
|
||||||
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;
|
|
||||||
|
|
||||||
# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin)
|
# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin)
|
||||||
writePython3Bin = name:
|
writePython3Bin = name:
|
||||||
|
|
|
@ -152,6 +152,14 @@ let
|
||||||
""")
|
""")
|
||||||
print(y[0]['test'])
|
print(y[0]['test'])
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
python2NoLibs = writePython2 "test_python2_no_libs" {} ''
|
||||||
|
print("success")
|
||||||
|
'';
|
||||||
|
|
||||||
|
python3NoLibs = writePython3 "test_python3_no_libs" {} ''
|
||||||
|
print("success")
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue