if ($linkfarm_depth eq 'shallow') {
$pre.= <<'END_SHALLOW';
clean () { find -lname "$src/*" -print0 | xargs -0r rm --; }; clean;
- find "$src" -maxdepth 1 \! -name Cargo.lock -print0 |
+ find "$src" -maxdepth 1 \! -name Cargo.lock Cargo.toml -print0 |
xargs -0r sh -ec 'for f in "$@"; do
rm -rf "${f##*/}";
ln -sf -- "$f" .;
' "$src";
END_DEEP
}
+ # If Cargo.toml is a symlink, cargo dereferences it to
+ # find a wrong CARGO_MANIFEST_DIR.
$pre .= <<'ENDLK' if $do_cargo_lock;
- if test -e Cargo.lock; then
- rm -f Cargo.lock;
- cp -- "$src"/Cargo.lock .;
- fi;
+ for f in Cargo.toml Cargo.lock; do
+ if test -e $f; then
+ rm -f $f;
+ cp -- "$src"/$f .;
+ fi;
+ done;
ENDLK
$post = <<'ENDCLEAN' if $oot_clean && !$just_linkfarm;
clean;