New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Various fetchcargo improvements #74863
Conversation
Most stdenv wrappers already work like this -- it allows greater customisation. We just have to be careful to remove arguments we're using that shouldn't be passed to stdenv. I've been conservative here, because fetchcargo checksums shouldn't change lightly.
If a custom unpackPhase is used for the package, it needs to also be used for fetchcargo so the same source is available for vendoring.
Could you provide an example, how do you use this feature? |
Can you provide an usecase example, how you would use this?
Sure.
Here I use a custom unpackPhase for a Rust program that is very fussy
about where it is on disk in relation to its dependencies. Without the
changes in this PR, doing this isn't possible because fetchcargo doesn't
know about the custom unpackPhase.
https://spectrum-os.org/git/nixpkgs/tree/pkgs/os-specific/linux/chromium-os/crosvm/default.nix
We have an open PR to add that package to Nixpkgs (#52353), and as you
can see it has to do something much more complicated, using several
intermediary src derivations, to work around this limitation of
fetchcargo.
|
inherit cargo; | ||
}; | ||
buildRustPackage = callPackage ../../../build-support/rust { | ||
inherit rustc cargo fetchcargo; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How this passed fetchcargo
get used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I understand? It’s used here:
then fetchcargo { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh my bad, I looked at the changes, that you add fetchcargo
argument but do not add any uses of it. Now I see that the point is to pass the local version referencing correct cargo
.
Motivation for this change
Most stdenv wrappers already forward unused arguments -- it allows greater customisation. We just have to be careful to remove arguments we're using that shouldn't be passed to stdenv. I've been conservative here, because fetchcargo checksums shouldn't change lightly.
If a custom unpackPhase is used for the package, it needs to also be used for fetchcargo so the same source is available for vendoring.
I exposed
fetchcargo
asrustPlatform.fetchcargo
, because it might be useful to provide from another derivation.Things done
sandbox
innix.conf
on non-NixOS linux)nix-shell -p nix-review --run "nix-review wip"
./result/bin/
)nix path-info -S
before and after)Notify maintainers
cc @