# SPDX-License-Identifier: LGPL-2.1-or-later
project('systemd', 'c',
- version : '254',
+ version : '255',
license : 'LGPLv2+',
default_options: [
'c_std=gnu11',
meson_version : '>= 0.60.0',
)
-libsystemd_version = '0.37.0'
-libudev_version = '1.7.7'
+libsystemd_version = '0.38.0'
+libudev_version = '1.7.8'
conf = configuration_data()
conf.set_quoted('PROJECT_URL', 'https://systemd.io/')
catalogstatedir = systemdstatedir / 'catalog'
randomseeddir = localstatedir / 'lib/systemd'
profiledir = libexecdir / 'portable' / 'profile'
+repartdefinitionsdir = libexecdir / 'repart/definitions'
ntpservicelistdir = prefixdir / 'lib/systemd/ntp-units.d'
credstoredir = prefixdir / 'lib/credstore'
+configfiledir = get_option('configfiledir')
+if configfiledir == ''
+ configfiledir= sysconfdir
+endif
+pkgconfigfiledir = configfiledir / 'systemd'
+
docdir = get_option('docdir')
if docdir == ''
docdir = datadir / 'doc/systemd'
conf.set_quoted('SYSCTL_DIR', sysctldir)
conf.set_quoted('SYSTEMCTL_BINARY_PATH', bindir / 'systemctl')
conf.set_quoted('SYSTEMD_BINARY_PATH', libexecdir / 'systemd')
+conf.set_quoted('SYSTEMD_EXECUTOR_BINARY_PATH', libexecdir / 'systemd-executor')
conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
conf.set_quoted('SYSTEMD_CGROUPS_AGENT_PATH', libexecdir / 'systemd-cgroups-agent')
-conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', libexecdir / 'systemd-cryptsetup')
+conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', bindir / 'systemd-cryptsetup')
conf.set_quoted('SYSTEMD_EXPORT_PATH', libexecdir / 'systemd-export')
conf.set_quoted('SYSTEMD_FSCK_PATH', libexecdir / 'systemd-fsck')
conf.set_quoted('SYSTEMD_GROWFS_PATH', libexecdir / 'systemd-growfs')
add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
endif
-cpp = ' '.join(cc.cmd_array()) + ' -E'
+cpp = ' '.join(cc.cmd_array() + get_option('c_args')) + ' -E'
has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
['memfd_create', '''#include <sys/mman.h>'''],
['gettid', '''#include <sys/types.h>
#include <unistd.h>'''],
+ ['fchmodat2', '''#include <stdlib.h>
+ #include <fcntl.h>'''], # no known header declares fchmodat2
['pivot_root', '''#include <stdlib.h>
#include <unistd.h>'''], # no known header declares pivot_root
['ioprio_get', '''#include <sched.h>'''], # no known header declares ioprio_get
conf.set('EXTRA_NET_NAMING_MAP', ' '.join(extra_net_naming_map))
default_net_naming_scheme = get_option('default-net-naming-scheme')
-conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
+conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme,
+ description : 'Default naming scheme as a string')
if default_net_naming_scheme != 'latest'
- conf.set('_DEFAULT_NET_NAMING_SCHEME_TEST',
- 'NAMING_' + default_net_naming_scheme.underscorify().to_upper())
+ conf.set('_DEFAULT_NET_NAMING_SCHEME',
+ 'NAMING_' + default_net_naming_scheme.underscorify().to_upper(),
+ description : 'Default naming scheme as a constant')
endif
time_epoch = get_option('time-epoch')
endif
if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
warning('\n' +
- 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
+ 'The configured user name "@0@" and group name "@1@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
endif
'userdb',
'utmp',
'vconsole',
+ 'vmspawn',
'xdg-autostart']
have = get_option(term)
name = 'ENABLE_' + term.underscorify().to_upper()
efi_cpu_family_alt = 'x86'
endif
-want_ukify = get_option('ukify').require(
- python_39 and conf.get('ENABLE_BOOTLOADER') == 1,
- error_message : 'Python >= 3.9 and -Dbootloader=true required').allowed()
+want_ukify = get_option('ukify').require(python_39, error_message : 'Python >= 3.9 required').allowed()
conf.set10('ENABLE_UKIFY', want_ukify)
############################################################
-elf2efi_lds = project_source_root / 'tools/elf2efi.lds'
+check_version_history_py = find_program('tools/check-version-history.py')
elf2efi_py = find_program('tools/elf2efi.py')
export_dbus_interfaces_py = find_program('tools/dbus_exporter.py')
generate_gperfs = find_program('tools/generate-gperfs.py')
make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
make_directive_index_py = find_program('tools/make-directive-index.py')
+sync_docs_py = find_program('tools/sync-docs.py')
make_man_index_py = find_program('tools/make-man-index.py')
meson_render_jinja2 = find_program('tools/meson-render-jinja2.py')
update_dbus_docs_py = find_program('tools/update-dbus-docs.py')
############################################################
version_tag = get_option('version-tag')
-# Check that we have either .git/ (a normal clone) or a .git file (a work-tree) and that we don't
-# get confused if a tarball is extracted in a higher-level git repository.
-if version_tag == '' and git.found() and fs.exists(project_source_root / '.git')
- # If the working tree has no tags (CI builds), the first git-describe will fail
- # and we fall back to project_version-commitid instead.
- version_cmd = '''(git -C "$1" describe --abbrev=7 --dirty=^ 2>/dev/null ||
- echo "$2-$(git -C "$1" describe --always --abbrev=7)") |
- sed 's/^v//; s/-rc/~rc/' '''
-else
- version_cmd = '''echo "$2" '''
-endif
-
version_h = vcs_tag(
input : 'src/version/version.h.in',
output : 'version.h',
- # TODO: Use 'sh' variable with meson >= 0.63.0
- command: ['sh', '-euc', version_cmd,
- '_',
+ command: [project_source_root / 'tools/meson-vcs-tag.sh',
project_source_root,
- version_tag == '' ? meson.project_version() : version_tag,
+ meson.project_version(),
+ version_tag,
])
shared_lib_tag = get_option('shared-lib-tag')
# systemd-analyze requires 'libcore'
subdir('src/core')
-# systemd-journal-remote requires 'libjournal_core'
-subdir('src/journal')
# systemd-networkd requires 'libsystemd_network'
subdir('src/libsystemd-network')
# hwdb requires 'udev_link_with' and 'udev_rpath'
subdir('src/import')
subdir('src/initctl')
subdir('src/integritysetup')
+subdir('src/journal')
subdir('src/journal-remote')
subdir('src/kernel-install')
subdir('src/locale')
subdir('src/oom')
subdir('src/partition')
subdir('src/path')
+subdir('src/pcrextend')
subdir('src/portable')
subdir('src/pstore')
subdir('src/quotacheck')
subdir('src/sysv-generator')
subdir('src/timedate')
subdir('src/timesync')
+subdir('src/tpm2-setup')
subdir('src/tmpfiles')
subdir('src/tty-ask-password-agent')
subdir('src/update-done')
subdir('src/update-utmp')
subdir('src/user-sessions')
subdir('src/userdb')
+subdir('src/varlinkctl')
subdir('src/vconsole')
subdir('src/veritysetup')
+subdir('src/vmspawn')
subdir('src/volatile-root')
subdir('src/xdg-autostart-generator')
kwargs = {}
foreach key, val : dict
- if key in ['name', 'conditions']
+ if key in ['name', 'conditions', 'version-script']
continue
endif
kwargs += { key : val }
endforeach
- sym = meson.current_source_dir() / '@0@'.format(dict.get('link_depends')[0])
kwargs += {
'link_args' : [
kwargs.get('link_args', []),
- '-Wl,--version-script=' + sym,
+ '-Wl,--version-script=' + dict.get('version-script'),
+ ],
+ 'link_depends' : [
+ kwargs.get('link_depends', []),
+ dict.get('version-script'),
],
}
foreach key, val : module_additional_kwargs
if want_ukify
public_programs += ukify
+ # symlink for backwards compatibility after rename
meson.add_install_script(sh, '-c',
ln_s.format(bindir / 'ukify',
libexecdir / 'ukify'))
['tmpfiles'],
['userdb'],
['vconsole'],
+ ['vmspawn'],
['xdg-autostart'],
# optional features