2015-07-22 11 views
5

Sto provando a utilizzare rust-mosquitto library. Il mio attuale Cargo.toml è:Impossibile trovare `Cargo.toml` quando si crea una cassa dipendente da GitHub

[package] 
name = "HomeDaemon" 
version = "0.1.0" 
authors = ["RTR <[email protected]>"] 

[dependencies.mosquitto] 
git = "https://github.com/kteza1/rust-mosquitto" 

Quando eseguo cargo build, viene segnalato seguente errore:

Could not find `Cargo.toml` in `/Users/ravitejareddy/.cargo/git/checkouts/rust-mosquitto-8203e77dcf072bf7/rust-mosquitto` 

Il download reale in ~/.cargo/git/checkouts/rust-mosquitto-8203e77dcf072bf7/master dimostra che Cargo.toml è presente.

C'è un ulteriore rust-mosquitto nel percorso sopra, è un problema?

risposta

5

Il problema deriva dal Cargo.toml in examples/ticktock:

[dependencies.mosquitto] 
version = "*" 
path = "../../../rust-mosquitto" 

Durante il download il progetto da Git, tutte le sottodirectory vengono scansionati per più file Cargo.toml. Se si esegue RUST_LOG=trace cargo build -v, si vede quello che sta succedendo:

TRACE:cargo::ops::cargo_read_manifest: looking for root package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master, source_id=https://github.com/kteza1/rust-mosquitto#7e08a291 
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master 
TRACE:cargo::ops::cargo_read_manifest: read_package; path=/Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/Cargo.toml; source-id=https://github.com/kteza1/rust-mosquitto#7e08a291 
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/.git 
TRACE:cargo::ops::cargo_read_manifest: not processing /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/.git 
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples 
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples/c-mosquitto 
TRACE:cargo::ops::cargo_read_manifest: looking for child package: /Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples/ticktock 
TRACE:cargo::ops::cargo_read_manifest: read_package; path=/Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/master/examples/ticktock/Cargo.toml; source-id=https://github.com/kteza1/rust-mosquitto#7e08a291 
DEBUG:cargo: handle_error; err=CliError { error: ChainedError { error: Unable to update https://github.com/kteza1/rust-mosquitto, cause: Could not find `Cargo.toml` in `/Users/shep/.cargo/git/checkouts/rust-mosquitto-77eb7033f32b19c9/rust-mosquitto` }, unknown: false, exit_code: 101 } 

Cargo cerca quindi di assicurare che il nidificato Cargo.toml può avere tutte le dipendenze soddisfatti.

+0

Ma perché si tratta di un errore? – tez

+2

@tez: Perché vai su * tre * directory, quando ci sono solo * due * nel repository. Stai effettivamente richiedendo che il tuo repository * sia sempre * estratto con il nome 'rust-mosquitto' e * nient'altro *. –

+0

Ok. La struttura delle cartelle è diversa durante il download da git dove Cargo.toml risiede nel nome del ramo. 'maestro' in questo caso. – tez

Problemi correlati