Skip to content

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

Closed
@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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions