mirror of
https://github.com/systemd/systemd.git
synced 2025-01-09 01:18:19 +03:00
meson: add a new -Dstandalone-binaries=true option
This adds an option to build standalone binaries that do not depend on the systemd-shared library. This option can be handy to build binaries that can be useful on a non-systemd system, binaries such as systemd-sysusers and systemd-tmpfiles have been previously requested, but installing them with all the required dependencies pulls in too much code that isn't really relevant for those use cases. The standalone use case is also relevant in containers, where minimizing the size of the container image is quite relevant. For now, only `systemd-sysusers` is also built as a standalone binary. The standalone binaries are installed as `/usr/bin/%{name}.standalone`, the packaging system is reponsible for renaming those into the correct names during the packaging step. RPM is able to do so with RemovePathPostfixes: The default behavior is to build shared binaries only, since this option is mainly intended for building distribution packages. Tested that a proper separate binary is built when using this option and that having it disabled (or using the default Meson configuration) does not produce a binary for this option.
This commit is contained in:
parent
24bd74ae03
commit
8ef8f3d5a7
16
meson.build
16
meson.build
@ -85,6 +85,8 @@ if rootprefixdir == ''
|
||||
endif
|
||||
rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
|
||||
|
||||
have_standalone_binaries = get_option('standalone-binaries')
|
||||
|
||||
sysvinit_path = get_option('sysvinit-path')
|
||||
sysvrcnd_path = get_option('sysvrcnd-path')
|
||||
conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
|
||||
@ -2931,6 +2933,20 @@ if conf.get('ENABLE_SYSUSERS') == 1
|
||||
install_rpath : rootlibexecdir,
|
||||
install : true,
|
||||
install_dir : rootbindir)
|
||||
|
||||
if have_standalone_binaries
|
||||
public_programs += executable(
|
||||
'systemd-sysusers.standalone',
|
||||
'src/sysusers/sysusers.c',
|
||||
include_directories : includes,
|
||||
link_with : [libshared_static,
|
||||
libbasic,
|
||||
libbasic_gcrypt,
|
||||
libsystemd_static,
|
||||
libjournal_client],
|
||||
install : true,
|
||||
install_dir : rootbindir)
|
||||
endif
|
||||
endif
|
||||
|
||||
if conf.get('ENABLE_TMPFILES') == 1
|
||||
|
@ -26,6 +26,8 @@ option('static-libsystemd', type : 'combo',
|
||||
option('static-libudev', type : 'combo',
|
||||
choices : ['false', 'true', 'pic', 'no-pic'],
|
||||
description : '''install a static library for libudev''')
|
||||
option('standalone-binaries', type : 'boolean', value : 'false',
|
||||
description : '''also build standalone versions of supported binaries''')
|
||||
|
||||
option('sysvinit-path', type : 'string', value : '/etc/init.d',
|
||||
description : 'the directory where the SysV init scripts are located')
|
||||
|
Loading…
Reference in New Issue
Block a user