Skip to content

buildRustCrate: fix cross#264042

Closed
RaitoBezarius wants to merge 1 commit intoNixOS:masterfrom
RaitoBezarius:buildrustcrate-cross
Closed

buildRustCrate: fix cross#264042
RaitoBezarius wants to merge 1 commit intoNixOS:masterfrom
RaitoBezarius:buildrustcrate-cross

Conversation

@RaitoBezarius
Copy link
Copy Markdown
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.

@github-actions github-actions bot added the 6.topic: rust General-purpose programming language emphasizing performance, type safety, and concurrency. label Oct 28, 2023
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
Member

flokli commented Oct 31, 2023

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

@RaitoBezarius
Copy link
Copy Markdown
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 General-purpose programming language emphasizing performance, type safety, and concurrency. 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