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

rustPlatform: forward unpack hooks to cargo fetch #221093

Merged
merged 1 commit into from
Mar 14, 2023

Conversation

alyssais
Copy link
Member

@alyssais alyssais commented Mar 14, 2023

Description of changes

Sometimes it's more ergonomic to set up the build environment in hooks, to add to the default behaviour rather than replacing it. It's very surprising that the fetcher works fine with a custom unpackPhase, but not with custom preUnpack or postUnpack.

Packages that use preUnpack or postUnpack and Cargo FODs seem to be very rare. I searched Nixpkgs for files containing one of cargoHash, cargoDeps, and cargoSha256, and one of preUnpack or postUnpack, and only found two such packages: python3.pkgs.tokenizers and rustdesk. Neither of their Cargo FOD hashes are affected by this change. So if that's any indication, we're unlikely to be breaking many out-of-tree hashes with these changes either.

Here's an example of where this is useful. I want to apply a patch to a crate dependency, so I patch the program to use a local crate override, then unpack the crate in postUnpack.

Things done
  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 23.05 Release Notes (or backporting 22.11 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Sometimes it's more ergonomic to set up the build environment in
hooks, to add to the default behaviour rather than replacing it.  It's
very surprising that the fetcher works fine with a custom unpackPhase,
but not with custom preUnpack or postUnpack.

Packages that use preUnpack or postUnpack and Cargo FODs seem to be
very rare.  I searched Nixpkgs for files containing one of
"cargoHash", "cargoDeps", and "cargoSha256", and one of "preUnpack" or
"postUnpack", and only found two such packages:
python3.pkgs.tokenizers and rustdesk.  Neither of their Cargo FOD
hashes are affected by this change.  So if that's any indication,
we're unlikely to be breaking many out-of-tree hashes with these
changes either.
Copy link
Member

@figsoda figsoda left a comment

Choose a reason for hiding this comment

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

lgtm if rebuild count looks right

@alyssais
Copy link
Member Author

lgtm if rebuild count looks right

Unfortunately, because these are FODs, none would be rebuilt even if the outputs did change. :/

@ofborg ofborg bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 0 This PR does not cause any packages to rebuild on Linux labels Mar 14, 2023
@figsoda
Copy link
Member

figsoda commented Mar 14, 2023

oops, didn't think about that

anyway, lgtm then. btw I don't think python3.pkgs.tokenizers is affected by this since it doesn't use buildRustPackage

@figsoda figsoda merged commit c1de216 into NixOS:master Mar 14, 2023
@alyssais alyssais deleted the rustPlatform-postUnpack branch March 14, 2023 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: rust 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 0 This PR does not cause any packages to rebuild on Linux
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants