Allow arbitrary standalone progs to be installed and really stop building all standalone for tests (#43130)
This commit is contained in:
+33
-31
@@ -99,7 +99,10 @@ endif
|
||||
conf.set10('HAVE_SPLIT_BIN', split_bin,
|
||||
description : 'bin and sbin directories are separate')
|
||||
|
||||
have_standalone_binaries = get_option('standalone-binaries')
|
||||
standalone_binaries = get_option('standalone-binaries').split(',')
|
||||
if standalone_binaries == ['']
|
||||
standalone_binaries = []
|
||||
endif
|
||||
|
||||
conf.set10('CREATE_LOG_DIRS', get_option('create-log-dirs'))
|
||||
|
||||
@@ -1826,7 +1829,7 @@ fuzzer_exes = []
|
||||
sources = []
|
||||
|
||||
# binaries that have --help and are intended for use by humans,
|
||||
# usually, but not always, installed in /bin.
|
||||
# usually, but not always, installed in /usr/bin.
|
||||
public_programs = []
|
||||
|
||||
# D-Bus introspection XML export
|
||||
@@ -2027,13 +2030,15 @@ endif
|
||||
|
||||
# The 'install' field is extended to also control whether the automatically
|
||||
# added variant, which is statically linked with libsystemd-shared, is installed:
|
||||
# 'yes' : Mapped to true. The static variant will not be installed.
|
||||
# 'no' : Mapped to false. The static variant will not be installed either.
|
||||
# 'both' : Mapped to true. The static variant will also be installed.
|
||||
# 'yes' : Mapped to true.
|
||||
# 'no' : Mapped to false.
|
||||
# 'static' : Mapped to false, and its target name is suffixed with '.shared'.
|
||||
# The static variant will be installed instead using the original name
|
||||
# (without the '.standalone' suffix).
|
||||
# Currently, test and fuzzer executables only support 'yes' or 'no'.
|
||||
#
|
||||
# For executables matched by the install-standalone list, a .standalone variant
|
||||
# will be installed if install is true.
|
||||
executable_template = {
|
||||
'include_directories' : includes,
|
||||
'link_with' : [libshared],
|
||||
@@ -2349,24 +2354,20 @@ foreach dict : executables
|
||||
name_static = name + '.standalone'
|
||||
install = dict.get('install')
|
||||
build_by_default = dict.get('build_by_default')
|
||||
if install == 'yes'
|
||||
install_shared = true
|
||||
install_static = false
|
||||
install_standalone = false
|
||||
if not (is_test or is_fuzz)
|
||||
foreach pattern : standalone_binaries
|
||||
if name.contains(pattern)
|
||||
install_standalone = true
|
||||
endif
|
||||
endforeach
|
||||
endif
|
||||
|
||||
if install in ['yes', 'no']
|
||||
install_shared = install == 'yes'
|
||||
install_static = install_shared and install_standalone
|
||||
build_by_default_shared = build_by_default
|
||||
build_by_default_static = false
|
||||
elif install == 'no'
|
||||
install_shared = false
|
||||
install_static = false
|
||||
build_by_default_shared = build_by_default
|
||||
build_by_default_static = false
|
||||
elif install == 'both'
|
||||
if is_test or is_fuzz
|
||||
error('Install mode "@0@" is not supported for test or fuzzer target "@1@"'.format(install, name))
|
||||
endif
|
||||
install_shared = true
|
||||
install_static = true
|
||||
build_by_default_shared = build_by_default
|
||||
build_by_default_static = build_by_default
|
||||
build_by_default_static = build_by_default and (install_standalone or want_dlopen_tests)
|
||||
elif install == 'static'
|
||||
if is_test or is_fuzz
|
||||
error('Install mode "@0@" is not supported for test or fuzzer target "@1@"'.format(install, name))
|
||||
@@ -2443,9 +2444,9 @@ foreach dict : executables
|
||||
install: install_static,
|
||||
)
|
||||
|
||||
executables_by_name += { name_static : exe_static }
|
||||
|
||||
if build_by_default_static
|
||||
executables_by_name += { name_static : exe_static }
|
||||
|
||||
if dict.get('dbus', false) and not build_by_default_shared
|
||||
dbus_programs += exe_static
|
||||
endif
|
||||
@@ -2762,18 +2763,20 @@ endif
|
||||
foreach exec : public_programs
|
||||
name = fs.name(exec.full_path())
|
||||
if want_tests != 'false'
|
||||
test('check-help-' + name,
|
||||
check_help_sh,
|
||||
suite : 'dist',
|
||||
args : exec.full_path(),
|
||||
depends: exec)
|
||||
|
||||
test('check-version-' + name,
|
||||
check_version_sh,
|
||||
suite : 'dist',
|
||||
args : [exec.full_path(),
|
||||
project_major_version],
|
||||
depends: exec)
|
||||
|
||||
if not name.endswith('.standalone')
|
||||
test('check-help-' + name,
|
||||
check_help_sh,
|
||||
suite : 'dist',
|
||||
args : exec.full_path(),
|
||||
depends: exec)
|
||||
endif
|
||||
endif
|
||||
endforeach
|
||||
|
||||
@@ -3165,7 +3168,6 @@ foreach tuple : [
|
||||
['link-portabled-shared', get_option('link-portabled-shared')],
|
||||
['first-boot-full-preset'],
|
||||
['fexecve'],
|
||||
['standalone-binaries', get_option('standalone-binaries')],
|
||||
['coverage', get_option('b_coverage')],
|
||||
]
|
||||
|
||||
|
||||
+3
-2
@@ -40,8 +40,9 @@ 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('standalone-binaries', type : 'string',
|
||||
deprecated : { 'true' : 'repart,report,shutdown,sysusers,tmpfiles', 'false' : '' },
|
||||
description : 'comma-separated list of patterns specifying binaries to install as .standalone')
|
||||
option('build-static', type : 'boolean', value : false,
|
||||
description : 'build static versions of supported binaries')
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ executables += [
|
||||
libopenssl_cflags,
|
||||
tpm2_cflags,
|
||||
],
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ executables += [
|
||||
'dependencies' : [
|
||||
libcurl_cflags,
|
||||
],
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
libexec_template + {
|
||||
'name' : 'systemd-report-basic',
|
||||
@@ -22,7 +21,6 @@ executables += [
|
||||
'report-basic.c',
|
||||
'report-basic-server.c',
|
||||
),
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
libexec_template + {
|
||||
'name' : 'systemd-report-cgroup',
|
||||
@@ -30,7 +28,6 @@ executables += [
|
||||
'report-cgroup.c',
|
||||
'report-cgroup-server.c',
|
||||
),
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
libexec_template + {
|
||||
'name' : 'systemd-report-files',
|
||||
@@ -38,7 +35,6 @@ executables += [
|
||||
'report-files.c',
|
||||
'report-files-server.c',
|
||||
),
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
libexec_template + {
|
||||
'name' : 'systemd-report-sign-plain',
|
||||
@@ -47,13 +43,11 @@ executables += [
|
||||
),
|
||||
'dependencies' : libopenssl_cflags,
|
||||
'conditions' : ['HAVE_OPENSSL'],
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
libexec_template + {
|
||||
'name' : 'systemd-report-sign-tsm',
|
||||
'export' : files(
|
||||
'report-sign-tsm.c',
|
||||
),
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
]
|
||||
|
||||
@@ -19,7 +19,6 @@ executables += [
|
||||
'shutdown.c',
|
||||
) + shutdown_detach_sources,
|
||||
'dependencies' : libmount_cflags,
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
test_template + {
|
||||
'sources' : files('test-umount.c') +
|
||||
|
||||
@@ -10,6 +10,5 @@ executables += [
|
||||
'public' : true,
|
||||
'export' : files('sysusers.c'),
|
||||
'dependencies' : libaudit_cflags,
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
]
|
||||
|
||||
@@ -16,7 +16,6 @@ executables += [
|
||||
libacl_cflags,
|
||||
libselinux_cflags,
|
||||
],
|
||||
'install' : have_standalone_binaries ? 'both' : 'yes',
|
||||
},
|
||||
test_template + {
|
||||
'sources' : files('test-offline-passwd.c') +
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ if conf.get('ENABLE_SYSUSERS') == 1
|
||||
env : test_env,
|
||||
suite : 'sysusers')
|
||||
|
||||
if have_standalone_binaries
|
||||
if 'systemd-sysusers.standalone' in executables_by_name
|
||||
exe = executables_by_name.get('systemd-sysusers.standalone')
|
||||
test('test-sysusers.standalone',
|
||||
test_sysusers_sh,
|
||||
@@ -85,7 +85,7 @@ if want_tests != 'false' and conf.get('ENABLE_TMPFILES') == 1
|
||||
depends : exe,
|
||||
suite : 'tmpfiles')
|
||||
|
||||
if have_standalone_binaries
|
||||
if 'systemd-tmpfiles.standalone' in executables_by_name
|
||||
exe = executables_by_name.get('systemd-tmpfiles.standalone')
|
||||
test('test-systemd-tmpfiles.standalone',
|
||||
test_systemd_tmpfiles_py,
|
||||
|
||||
Reference in New Issue
Block a user