1
0
mirror of https://github.com/systemd/systemd synced 2024-07-08 20:15:55 +00:00

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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-12-14 18:03:06 +01:00 committed by Yu Watanabe
parent 4287c85589
commit a2b0cd3f5a
4 changed files with 10 additions and 2 deletions

View File

@ -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')),

View File

@ -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')

View File

@ -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,

View File

@ -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,