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

buildRustCrate: fix cross #264042

Closed

Conversation

RaitoBezarius
Copy link
Member

Previously, cargo / rustc were run while letting cc-rs guess what should be the linker, the cc, etc.

In general, this works almost well, except when cc-rs is confused and does not.

As we already do in many places in the Rust cross compilation ecosystem, we set certain environment variables which wraps any rustc or cargo invocation to help cc-rs or cargo understand what is the linker, etc.

We proceed to do the same here.

Description of changes

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • 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.11 Release Notes (or backporting 23.05 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.

Previously, `cargo` / `rustc` were run while letting `cc-rs` guess what should be the linker, the cc, etc.

In general, this works almost well, except when `cc-rs` is confused and does not.

As we already do in many places in the Rust cross compilation ecosystem, we set certain environment variables
which wraps any rustc or cargo invocation to help `cc-rs` or `cargo` understand what is the linker, etc.

We proceed to do the same here.
@ofborg ofborg bot added the 6.topic: cross-compilation Building packages on a different platform than they will be used on label Oct 28, 2023
@RaitoBezarius
Copy link
Member Author

This fixes nothing for now.

@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 Oct 28, 2023
@RaitoBezarius
Copy link
Member Author

@Ericson2314 I know you got crate2nix working with cross-compilation in https://github.com/alamgu/alamgu — would you happen to know if our buildRustCrate is deficient when it comes to select the linker to link? I feel this is the case but I am clueless at how to fix it without getting into the context of debugging rustc…

@flokli
Copy link
Contributor

flokli commented Oct 31, 2023

@RaitoBezarius this can now be closed in favor of #220429?

@RaitoBezarius
Copy link
Member Author

@RaitoBezarius this can now be closed in favor of #220429?

Absolutely.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: cross-compilation Building packages on a different platform than they will be used on 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.

2 participants