Skip to content
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

[WIP] buildRustPackage: optionally use vendor config from cargo-vendor #45402

Closed
wants to merge 1 commit into from

Conversation

erictapen
Copy link
Member

@erictapen erictapen commented Aug 20, 2018

This solves a problem, where the static vendor config in pkgs/build-support/rust/default.nix would not sufficiently replace all crates Cargo is looking for.

In the example of #44465, crates located at a git repo would be fetched by cargo-vendor, but not replaced in the Cargo config. Cargo then tried to access the network, resulting in build failure.

As this changes fetchcargo, this would cause all cargoSha256 to break, so the solution might be more difficult than that. Just wanted to implement it once.

Motivation for this change
Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Fits CONTRIBUTING.md.

This solves a problem, where the static vendor config in
pkgs/build-support/rust/default.nix would not sufficiently replace all
crates Cargo is looking for.

In the example of NixOS#44465, crates located at a git repo would be fetched
by cargo-vendor, but not replaced in the Cargo config. Cargo then tried
to access the network, resulting in build failure.

Suggested-by: @symphorien
@@ -23,9 +23,11 @@ stdenv.mkDerivation {

${cargoUpdateHook}

cargo vendor
mkdir $out
cargo vendor > $out/config
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this file contains the full path to ./vendor iirc which is a build impurity. So I think another sed like line 66 of pkgs/build-support/rust/default.nix is necessary to ensure this is really a fixed output derivation.
Also (nitpick) you can use the syntax cargo vendor $out/vendor > $out/config to spare a copy.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the hints! I changed it in #45889

@erictapen
Copy link
Member Author

Closed in favor of #45889

@erictapen erictapen closed this Aug 31, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants