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: Make CARGO_MANIFEST_DIR absolute #56778

Merged
merged 1 commit into from Mar 6, 2019

Conversation

kolloch
Copy link
Contributor

@kolloch kolloch commented Mar 3, 2019

Motivation for this change

While it is not obvious from the source, cargo sets CARGO_MANIFEST_DIR to an absolute directory. This let to a build problem with the popular "tera" crate using the "pest" crate.

See #56808 for details.

Cargo details

The variable is set here:

https://github.com/rust-lang/cargo/blob/f7c91ba6220e1b96aa14e5964e7074452f9551fb/src/cargo/core/compiler/compilation.rs#L229

and computed from the manifest_path:

https://github.com/rust-lang/cargo/blob/f7c91ba6220e1b96aa14e5964e7074452f9551fb/src/cargo/core/package.rs#L163

The manifest path is also exported via cargo metadata where you can see that it is absolute.

Things done
  • [x ] 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 --against origin/master" (still running)
  • 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)
  • Assured whether relevant documentation is up to date
  • Fits CONTRIBUTING.md.

While it is not obvious from the source, cargo sets CARGO_MANIFEST_DIR to an absolute directory. This let to a build problem with the popular "tera" crate using the "pest" crate.

## Cargo details

The variable is set here:

https://github.com/rust-lang/cargo/blob/f7c91ba6220e1b96aa14e5964e7074452f9551fb/src/cargo/core/compiler/compilation.rs#L229

and computed from the `manifest_path`:

https://github.com/rust-lang/cargo/blob/f7c91ba6220e1b96aa14e5964e7074452f9551fb/src/cargo/core/package.rs#L163

The manifest path is also exported via `cargo metadata` where you can see that it is absolute.
@kolloch
Copy link
Contributor Author

kolloch commented Mar 3, 2019

Ok, I can't complete the nox-review run: I don't have enough memory ;)

@dywedir
Copy link
Member

dywedir commented Mar 6, 2019

Thank you @kolloch and @P-E-Meunier

@dywedir dywedir merged commit df65650 into NixOS:master Mar 6, 2019
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