From 2da53aa6ef8ec6aa7fcf500b2bb725108d628d67 Mon Sep 17 00:00:00 2001 From: SFG545 Date: Sun, 8 Mar 2026 22:45:50 -0500 Subject: [PATCH] feat: update install_dirs to derive mandir and infodir from datarootdir --- src/builder/meson.rs | 16 ++++++++++++++-- src/builder/mod.rs | 6 ++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/builder/meson.rs b/src/builder/meson.rs index 886df63..7532a53 100755 --- a/src/builder/meson.rs +++ b/src/builder/meson.rs @@ -176,7 +176,6 @@ fn meson_setup_args( ("--localstatedir", dirs.localstatedir), ("--sharedstatedir", dirs.sharedstatedir), ("--includedir", dirs.includedir), - ("--datarootdir", dirs.datarootdir), ("--datadir", dirs.datadir), ("--mandir", dirs.mandir), ("--infodir", dirs.infodir), @@ -305,12 +304,25 @@ mod tests { assert!(args.iter().any(|a| a == "--localstatedir=/var")); assert!(args.iter().any(|a| a == "--sharedstatedir=/var/lib")); assert!(args.iter().any(|a| a == "--includedir=/usr/include")); - assert!(args.iter().any(|a| a == "--datarootdir=/usr/share")); assert!(args.iter().any(|a| a == "--datadir=/usr/share")); assert!(args.iter().any(|a| a == "--mandir=/usr/share/man")); assert!(args.iter().any(|a| a == "--infodir=/usr/share/info")); } + #[test] + fn test_meson_setup_args_derive_dirs_from_datarootdir() { + let flags = BuildFlags { + datarootdir: "/opt/share-root".to_string(), + ..BuildFlags::default() + }; + + let args = meson_setup_args(&flags, None, &[]); + assert!(!args.iter().any(|a| a.starts_with("--datarootdir="))); + assert!(args.iter().any(|a| a == "--datadir=/opt/share-root")); + assert!(args.iter().any(|a| a == "--mandir=/opt/share-root/man")); + assert!(args.iter().any(|a| a == "--infodir=/opt/share-root/info")); + } + #[test] fn test_meson_setup_args_honor_explicit_prefix() { let flags = BuildFlags { diff --git a/src/builder/mod.rs b/src/builder/mod.rs index 4cff683..630a330 100755 --- a/src/builder/mod.rs +++ b/src/builder/mod.rs @@ -68,6 +68,8 @@ pub(crate) fn install_dirs(flags: &crate::package::BuildFlags) -> InstallDirs { default_libdir_for_variant(flags.lib32_variant), ); let datarootdir = configured_install_dir(&flags.datarootdir, "/usr/share"); + let default_mandir = format!("{datarootdir}/man"); + let default_infodir = format!("{datarootdir}/info"); InstallDirs { bindir: configured_install_dir(&flags.bindir, "/usr/bin"), @@ -80,8 +82,8 @@ pub(crate) fn install_dirs(flags: &crate::package::BuildFlags) -> InstallDirs { includedir: configured_install_dir(&flags.includedir, "/usr/include"), datarootdir: datarootdir.clone(), datadir: configured_install_dir(&flags.datadir, &datarootdir), - mandir: configured_install_dir(&flags.mandir, "/usr/share/man"), - infodir: configured_install_dir(&flags.infodir, "/usr/share/info"), + mandir: configured_install_dir(&flags.mandir, &default_mandir), + infodir: configured_install_dir(&flags.infodir, &default_infodir), } }