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), } }