Skip to content

cargo vendor --respect-source-config deletes previously vendored sources #15244

Closed
@lambdageek

Description

@lambdageek

Problem

Running cargo vendor > .cargo/config.toml followed by running cargo vendor --respect-source-config results in a failure. Moreover cargo vendor deletes the previous contents of the vendor folder.

% cargo vendor --versioned-dirs --respect-source-config --no-delete
error: failed to sync

Caused by:
  failed to load pkg lockfile

Caused by:
  no matching package named `bytemuck` found
  location searched: directory source `/Users/alklig/work/bad_vendor/vendor` (which is replacing registry `crates-io`)
  required by package `bad_vendor v0.1.0 (/Users/alklig/work/bad_vendor)`

Steps

  1. clone https://github.com/lambdageek/bad-vendor
  2. cargo vendor --versioned-dirs --respect-source-config --no-delete > .cargo/config.toml
  3. cargo vendor --versioned-dirs --respect-source-config --no-delete

Possible Solution(s)

I suspect something in the loop trying to deal with #5956 is not expecting to see replaced sources. In particular, I wonder if this line is deleting files in the "vendor" directory

drop(fs::remove_dir_all(pkg.root()));

Notes

No response

Version

cargo 1.84.1
release: 1.84.1
host: aarch64-apple-darwin
libgit2: 1.8.1 (sys:0.19.0 vendored)
libcurl: 8.7.1 (sys:0.4.74+curl-8.9.0 system ssl:(SecureTransport) LibreSSL/3.3.6)
ssl: OpenSSL 1.1.1w  11 Sep 2023
os: Mac OS 15.3.1 [64-bit]

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: bugCommand-vendorE-easyExperience: EasyS-acceptedStatus: Issue or feature is accepted, and has a team member available to help mentor or review

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions