Closed
Description
Setup
I have the following (potentially strange) setup:
$project
├── a
│ ├── Cargo.toml
│ └── src
│ └── main.rs
├── b
│ ├── Cargo.toml
│ └── src
│ └── main.rs
├── c
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── Cargo.toml # containing `workspace.members = ["a", "b", "c"]`
Problem
If I'm executing cargo install --path ../c
in directory b
the following error occurs:
error: package `/home/jfrimmel/git/$project/a/Cargo.toml` is a member of the wrong workspace
expected: /home/jfrimmel/git/$project/b/../Cargo.toml
actual: /home/jfrimmel/git/$project/Cargo.toml
It seems like the paths are not canonicalize
d before comparison.
Reproducation
~ $ mkdir mwe
~ $ cd mwe/
~/mwe $ cargo new a
Created binary (application) `a` package
~/mwe $ cargo new b
Created binary (application) `b` package
~/mwe $ cargo new c
Created binary (application) `c` package
~/mwe $ cat <<EOF > Cargo.toml
[workspace]
members = ["a", "b", "c"]
EOF
~/mwe $ cd b
~/mwe/b $ cargo install --path ../c --force
error: package `/home/jfrimmel/mwe/a/Cargo.toml` is a member of the wrong workspace
expected: /home/jfrimmel/mwe/b/../Cargo.toml
actual: /home/jfrimmel/mwe/Cargo.toml
~/mwe/b $
Metadata
$ cargo --version
cargo 1.41.0-nightly (8280633db 2019-11-11)