jtojnar / nixpkgs-hammering

Beat your package expressions into a shape
MIT License
245 stars 14 forks source link

Fix evaluation of attrs that dependent on disabled packages #48

Closed rmcgibbo closed 3 years ago

rmcgibbo commented 3 years ago

Before:

nix run -f . -c nixpkgs-hammer -f ~/projects/nixpkgs python39Packages.pylint --json
error: --- ThrownError ----------------------------------------------------------------------------------------------------------- nix-instantiate
astroid-2.4.2 not supported for interpreter python3.9
(use '--show-trace' to show detailed location information)
Traceback (most recent call last):
  File "/nix/store/188vld53372z94cgva6bbpgd4hgjl41r-nixpkgs-hammer/bin/.nixpkgs-hammer-wrapped", line 294, in <module>
    main(args)
  File "/nix/store/188vld53372z94cgva6bbpgd4hgjl41r-nixpkgs-hammer/bin/.nixpkgs-hammer-wrapped", line 222, in main
    overlay_data = nix_eval_json(all_messages_nix, args.show_trace)
  File "/nix/store/188vld53372z94cgva6bbpgd4hgjl41r-nixpkgs-hammer/bin/.nixpkgs-hammer-wrapped", line 65, in nix_eval_json
    result = subprocess.check_output(
  File "/nix/store/wkw6fsjasr7jbbrlakxxpbiapa8hws42-python3-3.8.7/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/nix/store/wkw6fsjasr7jbbrlakxxpbiapa8hws42-python3-3.8.7/lib/python3.8/subprocess.py", line 512, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['nix-instantiate', '--strict', '--json', '--eval', '-']' returned non-zero exit status 1.

After:

nix run -f . -c nixpkgs-hammer -f ~/projects/nixpkgs python39Packages.pylint --json
{"python39Packages.pylint": [{"link": false, "msg": "Cannot evaluate attribute \u2018python39Packages.pylint\u2019 in \u2018/home/mcgibbon/projects/nixpkgs\u2019.", "name": "EvalError", "severity": "warning"}]}
jtojnar commented 3 years ago

Also, could you add a (negative) test for this?

jtojnar commented 3 years ago

Thanks.