From b612c26ceb9f56af0271fc9f07c1724d2d260a8a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 Sep 2020 18:20:05 +0200 Subject: [PATCH 1/2] sd-path: use ROOTPREFIX without suffixed slash We already have rootprefix_noslash as meson variable, export it so that we can also use it in C code. Fixes: #16773 --- meson.build | 1 + src/libsystemd/sd-path/sd-path.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/meson.build b/meson.build index dc4e6e23c31..ee3791a3ae1 100644 --- a/meson.build +++ b/meson.build @@ -230,6 +230,7 @@ conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbin conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent')) conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge')) conf.set_quoted('ROOTPREFIX', rootprefixdir) +conf.set_quoted('ROOTPREFIX_NOSLASH', rootprefixdir_noslash) conf.set_quoted('RANDOM_SEED_DIR', randomseeddir) conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed')) conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup')) diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c index 736795d1d79..3f6e70d0990 100644 --- a/src/libsystemd/sd-path/sd-path.c +++ b/src/libsystemd/sd-path/sd-path.c @@ -321,7 +321,7 @@ static int get_path(uint64_t type, char **buffer, const char **ret) { return from_user_dir("XDG_DESKTOP_DIR", buffer, ret); case SD_PATH_SYSTEMD_UTIL: - *ret = ROOTPREFIX "/lib/systemd"; + *ret = ROOTPREFIX_NOSLASH "/lib/systemd"; return 0; case SD_PATH_SYSTEMD_SYSTEM_UNIT: @@ -329,7 +329,7 @@ static int get_path(uint64_t type, char **buffer, const char **ret) { return 0; case SD_PATH_SYSTEMD_SYSTEM_PRESET: - *ret = ROOTPREFIX "/lib/systemd/system-preset"; + *ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-preset"; return 0; case SD_PATH_SYSTEMD_USER_UNIT: @@ -337,7 +337,7 @@ static int get_path(uint64_t type, char **buffer, const char **ret) { return 0; case SD_PATH_SYSTEMD_USER_PRESET: - *ret = ROOTPREFIX "/lib/systemd/user-preset"; + *ret = ROOTPREFIX_NOSLASH "/lib/systemd/user-preset"; return 0; case SD_PATH_SYSTEMD_SYSTEM_CONF: @@ -357,11 +357,11 @@ static int get_path(uint64_t type, char **buffer, const char **ret) { return 0; case SD_PATH_SYSTEMD_SLEEP: - *ret = ROOTPREFIX "/lib/systemd/system-sleep"; + *ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-sleep"; return 0; case SD_PATH_SYSTEMD_SHUTDOWN: - *ret = ROOTPREFIX "/lib/systemd/system-shutdown"; + *ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-shutdown"; return 0; /* FIXME: systemd.pc uses ${prefix}, but CONF_PATHS_NULSTR doesn't. @@ -371,19 +371,19 @@ static int get_path(uint64_t type, char **buffer, const char **ret) { return 0; case SD_PATH_SYSUSERS: - *ret = ROOTPREFIX "/lib/sysusers.d"; + *ret = ROOTPREFIX_NOSLASH "/lib/sysusers.d"; return 0; case SD_PATH_SYSCTL: - *ret = ROOTPREFIX "/lib/sysctl.d"; + *ret = ROOTPREFIX_NOSLASH "/lib/sysctl.d"; return 0; case SD_PATH_BINFMT: - *ret = ROOTPREFIX "/lib/binfmt.d"; + *ret = ROOTPREFIX_NOSLASH "/lib/binfmt.d"; return 0; case SD_PATH_MODULES_LOAD: - *ret = ROOTPREFIX "/lib/modules-load.d"; + *ret = ROOTPREFIX_NOSLASH "/lib/modules-load.d"; return 0; case SD_PATH_CATALOG: From 6e65df89c348242dbd10036abc7dd5e8181cf733 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 Sep 2020 18:27:18 +0200 Subject: [PATCH 2/2] pkg-config: prefix is not really configurable, don't pretend it was We generally don't support prefix being != /usr, and this is hardcoded all over the place. In the systemd.pc file it wasn't so far. Let's adjust this to match the rest of the codebase. --- src/core/systemd.pc.in | 12 ++++++------ src/libsystemd/sd-path/sd-path.c | 2 -- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in index 8424837824b..3af9f998304 100644 --- a/src/core/systemd.pc.in +++ b/src/core/systemd.pc.in @@ -11,7 +11,7 @@ # considered deprecated (though there is no plan to remove them). New names # shall have underscores. -prefix=@prefix@ +prefix=/usr root_prefix=@rootprefix_noslash@ rootprefix=${root_prefix} sysconf_dir=@sysconfdir@ @@ -26,10 +26,10 @@ systemdsystemunitdir=${systemd_system_unit_dir} systemd_system_preset_dir=${rootprefix}/lib/systemd/system-preset systemdsystempresetdir=${systemd_system_preset_dir} -systemd_user_unit_dir=${prefix}/lib/systemd/user +systemd_user_unit_dir=/usr/lib/systemd/user systemduserunitdir=${systemd_user_unit_dir} -systemd_user_preset_dir=${prefix}/lib/systemd/user-preset +systemd_user_preset_dir=/usr/lib/systemd/user-preset systemduserpresetdir=${systemd_user_preset_dir} systemd_system_conf_dir=${sysconfdir}/systemd/system @@ -47,7 +47,7 @@ systemduserunitpath=${systemd_user_unit_path} systemd_system_generator_dir=${root_prefix}/lib/systemd/system-generators systemdsystemgeneratordir=${systemd_system_generator_dir} -systemd_user_generator_dir=${prefix}/lib/systemd/user-generators +systemd_user_generator_dir=/usr/lib/systemd/user-generators systemdusergeneratordir=${systemd_user_generator_dir} systemd_system_generator_path=/run/systemd/system-generators:/etc/systemd/system-generators:/usr/local/lib/systemd/system-generators:${systemd_system_generator_dir} @@ -62,7 +62,7 @@ systemdsleepdir=${systemd_sleep_dir} systemd_shutdown_dir=${root_prefix}/lib/systemd/system-shutdown systemdshutdowndir=${systemd_shutdown_dir} -tmpfiles_dir=${prefix}/lib/tmpfiles.d +tmpfiles_dir=/usr/lib/tmpfiles.d tmpfilesdir=${tmpfiles_dir} sysusers_dir=${rootprefix}/lib/sysusers.d @@ -77,7 +77,7 @@ binfmtdir=${binfmt_dir} modules_load_dir=${rootprefix}/lib/modules-load.d modulesloaddir=${modules_load_dir} -catalog_dir=${prefix}/lib/systemd/catalog +catalog_dir=/usr/lib/systemd/catalog catalogdir=${catalog_dir} system_uid_max=@systemuidmax@ diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c index 3f6e70d0990..26d2341c2bb 100644 --- a/src/libsystemd/sd-path/sd-path.c +++ b/src/libsystemd/sd-path/sd-path.c @@ -364,8 +364,6 @@ static int get_path(uint64_t type, char **buffer, const char **ret) { *ret = ROOTPREFIX_NOSLASH "/lib/systemd/system-shutdown"; return 0; - /* FIXME: systemd.pc uses ${prefix}, but CONF_PATHS_NULSTR doesn't. - * Should ${prefix} use in systemd.pc be removed? */ case SD_PATH_TMPFILES: *ret = "/usr/lib/tmpfiles.d"; return 0;