mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
Return a hard error when custom build outside package
This commit is contained in:
parent
92ce5a2b27
commit
edfbcf0a6c
@ -344,7 +344,7 @@ fn build_ar_list(
|
|||||||
paths::normalize_path(&pkg.root().join(custome_build_path));
|
paths::normalize_path(&pkg.root().join(custome_build_path));
|
||||||
if !abs_custome_build_path.is_file() || !abs_custome_build_path.starts_with(pkg.root())
|
if !abs_custome_build_path.is_file() || !abs_custome_build_path.starts_with(pkg.root())
|
||||||
{
|
{
|
||||||
error_custom_build_file_not_in_package(pkg, &abs_custome_build_path, t, &ws)?
|
error_custom_build_file_not_in_package(pkg, &abs_custome_build_path, t)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -427,20 +427,16 @@ fn error_custom_build_file_not_in_package(
|
|||||||
pkg: &Package,
|
pkg: &Package,
|
||||||
path: &Path,
|
path: &Path,
|
||||||
target: &Target,
|
target: &Target,
|
||||||
ws: &Workspace<'_>,
|
) -> CargoResult<Vec<ArchiveFile>> {
|
||||||
) -> CargoResult<()> {
|
|
||||||
let tip = {
|
let tip = {
|
||||||
|
let description_name = target.description_named();
|
||||||
if path.is_file() {
|
if path.is_file() {
|
||||||
format!("the source file of {:?} target `{}` doesn't appear to be a path inside of the package.\n\
|
format!("the source file of `{description_name}` doesn't appear to be a path inside of the package.\n\
|
||||||
It is at `{}`, whereas the root the package is `{}`.\n",
|
It is at `{}`, whereas the root the package is `{}`.\n",
|
||||||
target.kind(), target.name(), path.display(), pkg.root().display()
|
path.display(), pkg.root().display()
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
format!(
|
format!("the source file of `{description_name}` doesn't appear to exist.\n",)
|
||||||
"the source file of {:?} target `{}` doesn't appear to exist.\n",
|
|
||||||
target.kind(),
|
|
||||||
target.name()
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let msg = format!(
|
let msg = format!(
|
||||||
@ -449,7 +445,7 @@ fn error_custom_build_file_not_in_package(
|
|||||||
Please update the `build` setting in the manifest at `{}` and point to a path inside the root of the package.",
|
Please update the `build` setting in the manifest at `{}` and point to a path inside the root of the package.",
|
||||||
tip, pkg.manifest_path().display()
|
tip, pkg.manifest_path().display()
|
||||||
);
|
);
|
||||||
ws.config().shell().error(&msg)
|
anyhow::bail!(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Construct `Cargo.lock` for the package to be published.
|
/// Construct `Cargo.lock` for the package to be published.
|
||||||
|
@ -3325,26 +3325,31 @@ fn build_script_outside_pkg_root() {
|
|||||||
let mut expect_msg = String::from("\
|
let mut expect_msg = String::from("\
|
||||||
warning: manifest has no documentation, homepage or repository.
|
warning: manifest has no documentation, homepage or repository.
|
||||||
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
|
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
|
||||||
error: the source file of \"custom-build\" target `build-script-custom_build` doesn't appear to exist.
|
error: the source file of `build script` doesn't appear to exist.
|
||||||
This may cause issue during packaging, as modules resolution and resources included via macros are often relative to the path of source files.
|
This may cause issue during packaging, as modules resolution and resources included via macros are often relative to the path of source files.
|
||||||
Please update the `build` setting in the manifest at `[CWD]/Cargo.toml` and point to a path inside the root of the package.
|
Please update the `build` setting in the manifest at `[CWD]/Cargo.toml` and point to a path inside the root of the package.
|
||||||
");
|
");
|
||||||
// custom_build.rs does not exist
|
// custom_build.rs does not exist
|
||||||
p.cargo("package -l").with_stderr(&expect_msg).run();
|
p.cargo("package -l")
|
||||||
|
.with_status(101)
|
||||||
|
.with_stderr(&expect_msg)
|
||||||
|
.run();
|
||||||
|
|
||||||
// custom_build.rs outside the package root
|
// custom_build.rs outside the package root
|
||||||
let custom_build_root = p.root().parent().unwrap().join("t_custom_build");
|
let custom_build_root = paths::root().join("t_custom_build");
|
||||||
_ = fs::create_dir(&custom_build_root).unwrap();
|
_ = fs::create_dir(&custom_build_root).unwrap();
|
||||||
_ = fs::write(&custom_build_root.join("custom_build.rs"), "fn main() {}");
|
_ = fs::write(&custom_build_root.join("custom_build.rs"), "fn main() {}");
|
||||||
expect_msg = format!(
|
expect_msg = format!(
|
||||||
"\
|
"\
|
||||||
warning: manifest has no documentation, homepage or repository.
|
warning: manifest has no documentation, homepage or repository.
|
||||||
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
|
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
|
||||||
error: the source file of \"custom-build\" target `build-script-custom_build` doesn't appear to be a path inside of the package.
|
error: the source file of `build script` doesn't appear to be a path inside of the package.
|
||||||
It is at `{}/t_custom_build/custom_build.rs`, whereas the root the package is `[CWD]`.
|
It is at `{}/t_custom_build/custom_build.rs`, whereas the root the package is `[CWD]`.
|
||||||
This may cause issue during packaging, as modules resolution and resources included via macros are often relative to the path of source files.
|
This may cause issue during packaging, as modules resolution and resources included via macros are often relative to the path of source files.
|
||||||
Please update the `build` setting in the manifest at `[CWD]/Cargo.toml` and point to a path inside the root of the package.
|
Please update the `build` setting in the manifest at `[CWD]/Cargo.toml` and point to a path inside the root of the package.
|
||||||
", p.root().parent().unwrap().display());
|
", paths::root().display());
|
||||||
p.cargo("package -l").with_stderr(&expect_msg).run();
|
p.cargo("package -l")
|
||||||
_ = fs::remove_dir_all(&custom_build_root).unwrap();
|
.with_status(101)
|
||||||
|
.with_stderr(&expect_msg)
|
||||||
|
.run();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user