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

stdenv: unset SDKROOT on Darwin #97000

Merged
merged 1 commit into from Sep 14, 2020

Conversation

danieldk
Copy link
Contributor

@danieldk danieldk commented Sep 3, 2020

Motivation for this change

File this one under I have little idea what I am doing. I got a bug report that broot builds are failing on Darwin with the helpful :p message:

error occurred: No such file or directory (os error 2)

With a little DTrace, I found that the cc crate, which is used by other crates to compile C/C++ code now runs xcrun when SDKROOT is defined:

rust-lang/cc-rs@a970b0a

Consequently, building crates that use newer versions of the cc
crate fail, because xcrun is not available in pure build environments.

This change unsets SDKROOT.

Questions:

  • I am not sure what the ramifications are of not setting SDKROOT. Can't test, because my MacBook is not fast enough to do large rebuilds.
  • Is it even useful to unset SDKROOT (as opposed to just removing the export SDKROOT= line? I guess it would help with impure environments, when the user has set SDKROOT for some reason?
  • Maybe we should just add xcbuild as a dependency on Darwin for Rust programs that transitively depend on cc?
Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • 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 nixpkgs-review --run "nixpkgs-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)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

The Rust `cc` crate started running `xcrun` when SDKROOT is defined:

rust-lang/cc-rs@a970b0a

Consequently, building crates that use newer versions of the `cc`
crate fail, because xcrun is not available in pure build environments.
@kalbasit
Copy link
Member

kalbasit commented Sep 4, 2020

@GrahamcOfBorg build bazel bazel.tests

@matthewbauer
Copy link
Member

This seems reasonable - or at least I don't think it will break anything.

@danieldk danieldk mentioned this pull request Sep 14, 2020
10 tasks
@danieldk
Copy link
Contributor Author

Another reported instance:
#97943

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