Skip to content

cargo package fails when binary crate depends on library crate #1404

@dwrensha

Description

@dwrensha

I have a simple project with a library crate and an executable crate that depends on the library crate:

#Cargo.toml

[package]

name = "borked"
version = "0.0.1"

[lib]

name = "borked"
path = "lib.rs"

[[bin]]

name = "borked-exe"
path = "main.rs"
// lib.rs

#![crate_name="borked"]
#![crate_type = "lib"]

pub const X : u32 = 42;
// main.rs

#![crate_name="borked-exe"]
#![crate_type = "bin"]

extern crate borked;

pub fn main() {
    println!("{}", borked::X);
}

I expect to be able to call cargo package successfully on this project, but instead I get an error:

$ cargo --version
cargo 0.0.1-pre-nightly (e4f0662 2015-03-09) (built 2015-03-09)
$ rustc --version
rustc 1.0.0-nightly (12b846ab8 2015-03-09) (built 2015-03-09)
$ cargo package --verbose
warning: manifest has no documentation, homepage or repository. See http://doc.crates.io/manifest.html#package-metadata for more info.
   Packaging borked v0.0.1 (file:///Users/dwrensha/Desktop/test-cargo)
   Archiving Cargo.toml
   Archiving lib.rs
   Archiving main.rs
   Verifying borked v0.0.1 (file:///Users/dwrensha/Desktop/test-cargo)
   Compiling borked v0.0.1 (file:///Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1)
     Running `rustc target/package/borked-0.0.1/lib.rs --crate-name borked --crate-type lib -g -C metadata=dd0cc381a16f4c06 -C extra-filename=-dd0cc381a16f4c06 --out-dir /Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug --emit=dep-info,link -L dependency=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug -L dependency=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug/deps`
     Running `rustc target/package/borked-0.0.1/main.rs --crate-name borked-exe --crate-type bin -g --out-dir /Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug --emit=dep-info,link -L dependency=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug -L dependency=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug/deps --extern borked=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug/libborked-10dfc3af5b511e89.rlib`
error: extern location for borked does not exist: /Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug/libborked-10dfc3af5b511e89.rlib
target/package/borked-0.0.1/main.rs:6:1: 6:21 error: can't find crate for `borked`
target/package/borked-0.0.1/main.rs:6 extern crate borked;
                                      ^~~~~~~~~~~~~~~~~~~~
error: aborting due to 2 previous errors
failed to verify package tarball

Caused by:
  Could not compile `borked`.

Caused by:
  Process didn't exit successfully: `rustc target/package/borked-0.0.1/main.rs --crate-name borked-exe --crate-type bin -g --out-dir /Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug --emit=dep-info,link -L dependency=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug -L dependency=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug/deps --extern borked=/Users/dwrensha/Desktop/test-cargo/target/package/borked-0.0.1/target/debug/libborked-10dfc3af5b511e89.rlib` (exit code: 101)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions