feat: update depot version to 0.16.1 and enhance CMake install directory handling

This commit is contained in:
2026-03-10 22:07:20 -05:00
parent ccd43fca6a
commit ef5359bb88
4 changed files with 95 additions and 34 deletions
Generated
+1 -1
View File
@@ -418,7 +418,7 @@ checksum = "807800ff3288b621186fe0a8f3392c4652068257302709c24efd918c3dffcdc2"
[[package]]
name = "depot"
version = "0.16.0"
version = "0.16.1"
dependencies = [
"anyhow",
"ar",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "depot"
version = "0.16.0"
version = "0.16.1"
edition = "2024"
[lints.rust]
+1 -1
View File
@@ -1,6 +1,6 @@
project(
'depot',
version: '0.16.0',
version: '0.16.1',
meson_version: '>=0.60.0',
)
+92 -31
View File
@@ -317,20 +317,58 @@ fn cmake_cache_entry_value<'a>(flags: &'a [String], variable: &str) -> Option<&'
}
fn cmake_install_dir_args(flags: &crate::package::BuildFlags) -> Vec<String> {
let prefix = cmake_cache_entry_value(&flags.configure, "CMAKE_INSTALL_PREFIX")
.unwrap_or(flags.prefix.as_str());
let dirs = crate::builder::install_dirs(flags);
let defaults = [
("CMAKE_INSTALL_BINDIR", dirs.bindir),
("CMAKE_INSTALL_SBINDIR", dirs.sbindir),
("CMAKE_INSTALL_LIBDIR", dirs.libdir),
("CMAKE_INSTALL_LIBEXECDIR", dirs.libexecdir),
("CMAKE_INSTALL_SYSCONFDIR", dirs.sysconfdir),
("CMAKE_INSTALL_LOCALSTATEDIR", dirs.localstatedir),
("CMAKE_INSTALL_SHAREDSTATEDIR", dirs.sharedstatedir),
("CMAKE_INSTALL_INCLUDEDIR", dirs.includedir),
("CMAKE_INSTALL_DATAROOTDIR", dirs.datarootdir),
("CMAKE_INSTALL_DATADIR", dirs.datadir),
("CMAKE_INSTALL_MANDIR", dirs.mandir),
("CMAKE_INSTALL_INFODIR", dirs.infodir),
(
"CMAKE_INSTALL_BINDIR",
cmake_install_dir_value(prefix, &dirs.bindir),
),
(
"CMAKE_INSTALL_SBINDIR",
cmake_install_dir_value(prefix, &dirs.sbindir),
),
(
"CMAKE_INSTALL_LIBDIR",
cmake_install_dir_value(prefix, &dirs.libdir),
),
(
"CMAKE_INSTALL_LIBEXECDIR",
cmake_install_dir_value(prefix, &dirs.libexecdir),
),
(
"CMAKE_INSTALL_SYSCONFDIR",
cmake_install_dir_value(prefix, &dirs.sysconfdir),
),
(
"CMAKE_INSTALL_LOCALSTATEDIR",
cmake_install_dir_value(prefix, &dirs.localstatedir),
),
(
"CMAKE_INSTALL_SHAREDSTATEDIR",
cmake_install_dir_value(prefix, &dirs.sharedstatedir),
),
(
"CMAKE_INSTALL_INCLUDEDIR",
cmake_install_dir_value(prefix, &dirs.includedir),
),
(
"CMAKE_INSTALL_DATAROOTDIR",
cmake_install_dir_value(prefix, &dirs.datarootdir),
),
(
"CMAKE_INSTALL_DATADIR",
cmake_install_dir_value(prefix, &dirs.datadir),
),
(
"CMAKE_INSTALL_MANDIR",
cmake_install_dir_value(prefix, &dirs.mandir),
),
(
"CMAKE_INSTALL_INFODIR",
cmake_install_dir_value(prefix, &dirs.infodir),
),
];
defaults
@@ -340,6 +378,26 @@ fn cmake_install_dir_args(flags: &crate::package::BuildFlags) -> Vec<String> {
.collect()
}
fn cmake_install_dir_value(prefix: &str, value: &str) -> String {
let trimmed_prefix = prefix.trim();
let trimmed_value = value.trim();
if trimmed_prefix.is_empty() || trimmed_value.is_empty() {
return trimmed_value.to_string();
}
let prefix_path = Path::new(trimmed_prefix);
let value_path = Path::new(trimmed_value);
if !prefix_path.is_absolute() || !value_path.is_absolute() {
return trimmed_value.to_string();
}
match value_path.strip_prefix(prefix_path) {
Ok(rel) if rel.as_os_str().is_empty() => ".".to_string(),
Ok(rel) => rel.to_string_lossy().replace('\\', "/"),
Err(_) => trimmed_value.to_string(),
}
}
fn num_cpus() -> usize {
std::thread::available_parallelism()
.map(|n| n.get())
@@ -523,13 +581,10 @@ mod tests {
#[test]
fn test_cmake_install_dir_args_include_defaults() {
let args = cmake_install_dir_args(&BuildFlags::default());
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_BINDIR=/usr/bin"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_SBINDIR=/usr/bin"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_LIBDIR=/usr/lib"));
assert!(
args.iter()
.any(|a| a == "-DCMAKE_INSTALL_LIBEXECDIR=/usr/lib")
);
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_BINDIR=bin"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_SBINDIR=bin"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_LIBDIR=lib"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_LIBEXECDIR=lib"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_SYSCONFDIR=/etc"));
assert!(
args.iter()
@@ -541,23 +596,17 @@ mod tests {
);
assert!(
args.iter()
.any(|a| a == "-DCMAKE_INSTALL_INCLUDEDIR=/usr/include")
.any(|a| a == "-DCMAKE_INSTALL_INCLUDEDIR=include")
);
assert!(
args.iter()
.any(|a| a == "-DCMAKE_INSTALL_DATAROOTDIR=/usr/share")
.any(|a| a == "-DCMAKE_INSTALL_DATAROOTDIR=share")
);
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_DATADIR=share"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_MANDIR=share/man"));
assert!(
args.iter()
.any(|a| a == "-DCMAKE_INSTALL_DATADIR=/usr/share")
);
assert!(
args.iter()
.any(|a| a == "-DCMAKE_INSTALL_MANDIR=/usr/share/man")
);
assert!(
args.iter()
.any(|a| a == "-DCMAKE_INSTALL_INFODIR=/usr/share/info")
.any(|a| a == "-DCMAKE_INSTALL_INFODIR=share/info")
);
}
@@ -588,7 +637,19 @@ mod tests {
.iter()
.any(|a| a.starts_with("-DCMAKE_INSTALL_DATADIR="))
);
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_BINDIR=/usr/bin"));
assert!(args.iter().any(|a| a == "-DCMAKE_INSTALL_BINDIR=bin"));
}
#[test]
fn test_cmake_install_dir_value_makes_prefix_children_relative() {
assert_eq!(cmake_install_dir_value("/usr", "/usr/include"), "include");
assert_eq!(cmake_install_dir_value("/", "/usr/include"), "usr/include");
assert_eq!(
cmake_install_dir_value("/opt/depot", "/opt/depot/lib64"),
"lib64"
);
assert_eq!(cmake_install_dir_value("/usr", "/etc"), "/etc");
assert_eq!(cmake_install_dir_value("/usr", "include"), "include");
}
#[test]