summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-12-14 18:03:06 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-12-25 15:18:50 +0900
commita2b0cd3f5ab3f450e74e2085ad20372a05451c74 (patch)
treef6e693e1f2e21a5d3d830eb7b67735212528eff7
parent4287c855893b6a2666fbe0422a1e738c47fa3ef5 (diff)
downloadsystemd-a2b0cd3f5ab3f450e74e2085ad20372a05451c74.tar.gz
meson: allow specifying a custom "tag" for the private shared libaries
We have /usr/lib/systemd/libsystemd-{shared,core}-nnn.so. With this path the 'nnn' part can be changed to something different. The idea is that during a package build this will be set to the package version. This way during in-place upgrades with the same major version both the new and old libraries can cooexit. This should fix the issue when systemd programs are called during package upgrades and fail to exec because the expect different symbols in the library they are linked to. This should fix https://bugzilla.redhat.com/show_bug.cgi?id=1906010.
-rw-r--r--meson.build6
-rw-r--r--meson_options.txt2
-rw-r--r--src/core/meson.build2
-rw-r--r--src/shared/meson.build2
4 files changed, 10 insertions, 2 deletions
diff --git a/meson.build b/meson.build
index 146c95a478..ef9a0278c9 100644
--- a/meson.build
+++ b/meson.build
@@ -599,6 +599,11 @@ endif
versiondep = declare_dependency(sources: version_h)
+shared_lib_tag = get_option('shared-lib-tag')
+if shared_lib_tag == ''
+ shared_lib_tag = meson.project_version()
+endif
+
sh = find_program('sh')
echo = find_program('echo')
sed = find_program('sed')
@@ -3902,6 +3907,7 @@ summary({
'D-Bus system directory' : dbussystemservicedir,
'bash completions directory' : bashcompletiondir,
'zsh completions directory' : zshcompletiondir,
+ 'private shared lib version tag' : shared_lib_tag,
'extra start script' : get_option('rc-local'),
'debug shell' : '@0@ @ @1@'.format(get_option('debug-shell'),
get_option('debug-tty')),
diff --git a/meson_options.txt b/meson_options.txt
index 401f0933d7..23691fb498 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -3,6 +3,8 @@
option('version-tag', type : 'string',
description : 'override the git version string')
+option('shared-lib-tag', type : 'string',
+ description : 'override the private shared library version tag (defaults to project version)')
option('mode', type : 'combo', choices : ['developer', 'release'],
description : 'autoenable features suitable for systemd development/release builds')
diff --git a/src/core/meson.build b/src/core/meson.build
index 8745671213..fd15a7fbef 100644
--- a/src/core/meson.build
+++ b/src/core/meson.build
@@ -167,7 +167,7 @@ load_fragment_gperf_nulstr_c = custom_target(
command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
capture : true)
-libcore_name = 'systemd-core-@0@'.format(meson.project_version())
+libcore_name = 'systemd-core-@0@'.format(shared_lib_tag)
libcore = shared_library(
libcore_name,
diff --git a/src/shared/meson.build b/src/shared/meson.build
index c2e0233974..f58d623f4a 100644
--- a/src/shared/meson.build
+++ b/src/shared/meson.build
@@ -430,7 +430,7 @@ target2 = custom_target(
shared_generated_gperf_headers = [target1, target2]
shared_sources += shared_generated_gperf_headers
-libshared_name = 'systemd-shared-@0@'.format(meson.project_version())
+libshared_name = 'systemd-shared-@0@'.format(shared_lib_tag)
libshared_deps = [threads,
libacl,