Bug#971282: ABI breakage: paths changed for sysusers.d/sysctl.d/binfmt/modules-load.d

Michael Biebl biebl at debian.org
Mon Sep 28 20:00:51 BST 2020


Package: systemd
Version: 246.6-1
Severity: important

Upstream changed the paths in systemd.pc from prefix to rootprefix in
v246 for sysusers_dir, sysctl_dir, binfmt_dir and modules-load_dir:
https://github.com/systemd/systemd/commit/4a56315a990b802860170ecd1bbd3eb68e14a38b

This breaks packages which use pkg-config to determine those paths and
where .install files reference /usr/. An example is mandos.

I think we should revert this change. I don't see a compelling reason to
move those files from /usr to /lib given that we require /usr to be
pre-mounted by initramfs, if it's separate.
Moving files from /usr to /lib files kinda backwards nowadays.

I intend to apply a patch like the attached one in Debian.
That said, I hope I can convince Lennart to revert this change upstream
as well.

Thoughts, Comments?

Michael
-------------- next part --------------
diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
index 3af9f99830..699a9748f2 100644
--- a/src/core/systemd.pc.in
+++ b/src/core/systemd.pc.in
@@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_dir}
 tmpfiles_dir=/usr/lib/tmpfiles.d
 tmpfilesdir=${tmpfiles_dir}
 
-sysusers_dir=${rootprefix}/lib/sysusers.d
+sysusers_dir=${prefix}/lib/sysusers.d
 sysusersdir=${sysusers_dir}
 
-sysctl_dir=${rootprefix}/lib/sysctl.d
+sysctl_dir=${prefix}/lib/sysctl.d
 sysctldir=${sysctl_dir}
 
-binfmt_dir=${rootprefix}/lib/binfmt.d
+binfmt_dir=${prefix}/lib/binfmt.d
 binfmtdir=${binfmt_dir}
 
-modules_load_dir=${rootprefix}/lib/modules-load.d
+modules_load_dir=${prefix}/lib/modules-load.d
 modulesloaddir=${modules_load_dir}
 
 catalog_dir=/usr/lib/systemd/catalog
diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
index 26d2341c2b..414e249884 100644
--- a/src/libsystemd/sd-path/sd-path.c
+++ b/src/libsystemd/sd-path/sd-path.c
@@ -369,19 +369,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) {
                 return 0;
 
         case SD_PATH_SYSUSERS:
-                *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d";
+                *ret = "/usr/lib/sysusers.d";
                 return 0;
 
         case SD_PATH_SYSCTL:
-                *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d";
+                *ret = "/usr/lib/sysctl.d";
                 return 0;
 
         case SD_PATH_BINFMT:
-                *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d";
+                *ret = "/usr/lib/binfmt.d";
                 return 0;
 
         case SD_PATH_MODULES_LOAD:
-                *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d";
+                *ret = "/usr/lib/modules-load.d";
                 return 0;
 
         case SD_PATH_CATALOG:


More information about the Pkg-systemd-maintainers mailing list