Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 15 additions & 16 deletions src/cargo/ops/cargo_package/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,23 +268,22 @@ fn do_package<'a>(
let deps = local_deps(pkgs.iter().map(|(p, f)| ((*p).clone(), f.clone())));
let just_pkgs: Vec<_> = pkgs.iter().map(|p| p.0).collect();

let mut local_reg = {
// The publish registry doesn't matter unless there are local dependencies that will be
// resolved,
// so only try to get one if we need it. If they explicitly passed a
// registry on the CLI, we check it no matter what.
let sid = if (deps.has_dependencies() && (opts.include_lockfile || opts.verify))
|| opts.reg_or_index.is_some()
{
let sid = get_registry(ws.gctx(), &just_pkgs, opts.reg_or_index.clone())?;
debug!("packaging for registry {}", sid);
Some(sid)
} else {
None
};
// The publish registry doesn't matter unless there are local dependencies that will be
// resolved,
// so only try to get one if we need it.
//
// If they explicitly passed a registry on the CLI, we check it no matter what to verify
// `package.publish`.
let needs_local_reg = deps.has_dependencies() && (opts.include_lockfile || opts.verify);
let verify_registry_allow_list = opts.reg_or_index.is_some();
let mut local_reg = if !opts.list && (needs_local_reg || verify_registry_allow_list) {
let sid = get_registry(ws.gctx(), &just_pkgs, opts.reg_or_index.clone())?;
debug!("packaging for registry {}", sid);
let reg_dir = ws.build_dir().join("package").join("tmp-registry");
sid.map(|sid| TmpRegistry::new(ws.gctx(), reg_dir, sid))
.transpose()?
let local_reg = TmpRegistry::new(ws.gctx(), reg_dir, sid)?;
Some(local_reg)
} else {
None
};

// Packages need to be created in dependency order, because dependencies must
Expand Down
10 changes: 10 additions & 0 deletions tests/testsuite/package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6791,6 +6791,16 @@ fn registry_not_in_publish_list() {
[ERROR] `foo` cannot be packaged.
The registry `alternative` is not listed in the `package.publish` value in Cargo.toml.

"#]])
.run();

p.cargo("package --registry alternative --list")
.with_stdout_data(str![[r#"
Cargo.lock
Cargo.toml
Cargo.toml.orig
src/main.rs

"#]])
.run();
}
Expand Down