Skip to content

rustc-src target does not include vendor/ when re-building rustc-src #94782

Closed
@jonhoo

Description

@jonhoo

I tried this sequence of steps:

$ wget "https://static.rust-lang.org/dist/2022-02-24/rustc-1.59.0-src.tar.xz"
$ tar xf rustc-1.59.0-src.tar.xz
$ cd rustc-1.59.0-src
$ ./configure --enable-local-rust
$ ./x.py dist --stage 0 rustc-src

I expected to see this happen: rustc-1.59.0-src.tar.xz should be built, and should include a vendor/ subdirectory with the same entries as in the source tarball.

Instead, this happened: the produced rustc-1.59.0-src.tar.xz does not contain a vendor/ subdirectory, likely because of the logic here, which ties the inclusion of that directory to whether we're building from git:

rust/src/bootstrap/dist.rs

Lines 887 to 897 in 10dccdc

// If we're building from git sources, we need to vendor a complete distribution.
if builder.rust_info.is_git() {
// Vendor all Cargo dependencies
let mut cmd = Command::new(&builder.initial_cargo);
cmd.arg("vendor")
.arg("--sync")
.arg(builder.src.join("./src/tools/rust-analyzer/Cargo.toml"))
.arg(builder.src.join("./compiler/rustc_codegen_cranelift/Cargo.toml"))
.current_dir(&plain_dst_src);
builder.run(&mut cmd);
}

Note also that the same thing happens even if --enable-locked-deps and --enable-vendor are passed to ./configure.

Meta

rustc --version --verbose:

rustc 1.59.0 (9d1b2106e 2022-02-23)
binary: rustc
commit-hash: 9d1b2106e23b1abd32fce1f17267604a5102f57a
commit-date: 2022-02-23
host: x86_64-unknown-linux-gnu
release: 1.59.0
LLVM version: 13.0.0

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions