fix: recursive dependency cleaning not applied on all kinds of inputs

This commit is contained in:
DavHau 2021-06-09 15:09:52 +07:00
parent 2535798e10
commit af3f9ed6e2
2 changed files with 7 additions and 5 deletions

View file

@ -96,5 +96,5 @@ jobs:
shell: bash shell: bash
- name: mach-nix evaluation tests - name: mach-nix evaluation tests
run: nix run .#tests-all run: WORKERS=5 nix run .#tests-all

View file

@ -77,14 +77,14 @@ class OverridesGenerator(ExpressionGenerator):
genAttrs genAttrs
[ "{'" "'.join(all_pnames)}" ] [ "{'" "'.join(all_pnames)}" ]
(pname: null); (pname: null);
removeUnwantedPythonDeps = pname: propagatedBuildInputs: removeUnwantedPythonDeps = pname: inputs:
filter filter
(dep: (dep:
if ! isPyModule dep || pnamesEnv ? "${{normalizeName (get_pname dep)}}" then if ! isPyModule dep || pnamesEnv ? "${{normalizeName (get_pname dep)}}" then
true true
else else
trace "removing dependency ${{dep.name}} from ${{pname}}" false) trace "removing dependency ${{dep.name}} from ${{pname}}" false)
propagatedBuildInputs; inputs;
updatePythonDepsRec = newPkgs: pkg: updatePythonDepsRec = newPkgs: pkg:
if ! isPyModule pkg then pkg else if ! isPyModule pkg then pkg else
let let
@ -103,6 +103,8 @@ class OverridesGenerator(ExpressionGenerator):
map (p: updatePythonDepsRec newPkgs p) v map (p: updatePythonDepsRec newPkgs p) v
else v else v
) old); ) old);
updateAndRemoveDepsRec = pythonSelf: name: inputs:
removeUnwantedPythonDeps name (map (dep: updatePythonDepsRec pythonSelf dep) inputs);
override = pkg: override = pkg:
if hasAttr "overridePythonAttrs" pkg then if hasAttr "overridePythonAttrs" pkg then
pkg.overridePythonAttrs pkg.overridePythonAttrs
@ -189,13 +191,13 @@ class OverridesGenerator(ExpressionGenerator):
keep_src=False): keep_src=False):
out = f""" out = f"""
"{name}" = override python-super.{nix_name} ( oldAttrs: "{name}" = override python-super.{nix_name} ( oldAttrs:
(mapAttrs (n: v: if elem n depNamesOther then map (dep: updatePythonDepsRec python-self dep) v else v ) oldAttrs) // {{ (mapAttrs (n: v: if elem n depNamesAll then updateAndRemoveDepsRec python-self "{name}" v else v ) oldAttrs) // {{
pname = "{name}"; pname = "{name}";
version = "{ver}"; version = "{ver}";
passthru = (get_passthru "{name}" "{nix_name}") // {{ provider = "{provider}"; }}; passthru = (get_passthru "{name}" "{nix_name}") // {{ provider = "{provider}"; }};
buildInputs = with python-self; (map (dep: updatePythonDepsRec python-self dep) (oldAttrs."buildInputs" or [])) ++ [ {build_inputs_str} ]; buildInputs = with python-self; (map (dep: updatePythonDepsRec python-self dep) (oldAttrs."buildInputs" or [])) ++ [ {build_inputs_str} ];
propagatedBuildInputs = # filter out unwanted dependencies and replace colliding packages recursively propagatedBuildInputs = # filter out unwanted dependencies and replace colliding packages recursively
(removeUnwantedPythonDeps "{name}" (map (dep: updatePythonDepsRec python-self dep) (oldAttrs."propagatedBuildInputs" or []))) (oldAttrs."propagatedBuildInputs" or [])
++ ( with python-self; [ {prop_build_inputs_str} ]);""" ++ ( with python-self; [ {prop_build_inputs_str} ]);"""
if not keep_src: if not keep_src:
out += f""" out += f"""