rust-lang / cargo

The Rust package manager
https://doc.rust-lang.org/cargo
Apache License 2.0
12.33k stars 2.33k forks source link

Cannot package libraries that contain vendored Rust libraries used in the build #6917

Open jdm opened 5 years ago

jdm commented 5 years ago

https://github.com/servo/mozjs is a snapshot of the JS engine from https://hg.mozilla.org/mozilla-central/, wrapped up in a crate that invokes the native Makefile build from build.rs. This native build happens to invoke cargo build on a Rust project that exists inside https://hg.mozilla.org/mozilla-central/ and generates a binary that is used in the JS engine build. The build works fine, but running cargo package causes the subdirectory containing this project to be ignored (mozjs/js/src/frontend/binsource) because it contains a Cargo.toml. I am no longer able to publish new versions of mozjs on crates.io since this Rust library was introduced upstream because of this restriction.

alexcrichton commented 5 years ago

I believe this happens roughly around here, and unfortunately there's no clear fix for this I know of.

SimonSapin commented 4 years ago

@alexcrichton What do you think of not excluding a subpackage from the tarball if that directory is explicitly listed in include?

SimonSapin commented 4 years ago

By no clear fix, did you mean in the design decision of what the behavior should be, or are there implementation difficulties?

alexcrichton commented 4 years ago

I believe this is both a difficult design decision as well has something which has a number of implementation difficulties. I think that supporting this would require an RFC as well as a champion for the implementation.