154 lines
5.5 KiB
Diff
154 lines
5.5 KiB
Diff
|
diff --git a/meson.build b/meson.build
|
||
|
index 21a8705d0..f12b81442 100644
|
||
|
--- a/meson.build
|
||
|
+++ b/meson.build
|
||
|
@@ -50,7 +50,7 @@ rootfsmount = get_option('rootfs-mount-path')
|
||
|
user_network_db_opt = get_option('usernet-db-path')
|
||
|
user_network_conf_opt = get_option('usernet-config-path')
|
||
|
|
||
|
-bashcompletiondir = join_paths('/', 'usr', 'share', 'bash-completion', 'completions')
|
||
|
+bashcompletiondir = join_paths(prefixdir, get_option('datadir'), 'bash-completion', 'completions')
|
||
|
bindir = join_paths(prefixdir, get_option('bindir'))
|
||
|
datadir = join_paths(prefixdir, get_option('datadir'))
|
||
|
mandir = join_paths(prefixdir, get_option('mandir'))
|
||
|
@@ -123,22 +123,6 @@ conf.set('PACKAGE_VERSION', meson.project_version())
|
||
|
conf.set('RUNTIME_PATH', runtimepath)
|
||
|
conf.set('SYSCONFDIR', sysconfdir)
|
||
|
|
||
|
-# Set sysconfdir
|
||
|
-fs = import('fs')
|
||
|
-distrosysconfdir = get_option('distrosysconfdir')
|
||
|
-if distrosysconfdir != ''
|
||
|
- distrosysconfdir = join_paths(sysconfdir, distrosysconfdir)
|
||
|
- conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
|
||
|
-elif fs.is_dir('/etc/sysconfig')
|
||
|
- distrosysconfdir = join_paths(sysconfdir, 'sysconfig')
|
||
|
- conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
|
||
|
-elif fs.is_dir('/etc/default')
|
||
|
- distrosysconfdir = join_paths(sysconfdir, 'default')
|
||
|
- conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
|
||
|
-else
|
||
|
- error('"distrosysconfdir" is not set')
|
||
|
-endif
|
||
|
-
|
||
|
# Cross-compile on Android.
|
||
|
srcconf.set10('IS_BIONIC', host_machine.system() == 'android')
|
||
|
|
||
|
@@ -148,6 +132,7 @@ coverity = get_option('coverity-build')
|
||
|
init_script = get_option('init-script')
|
||
|
sanitize = get_option('b_sanitize')
|
||
|
want_examples = get_option('examples')
|
||
|
+want_install_init = get_option('install-init-files')
|
||
|
want_io_uring = get_option('io-uring-event-loop')
|
||
|
want_pam_cgroup = get_option('pam-cgroup')
|
||
|
want_mans = get_option('man')
|
||
|
@@ -160,10 +145,30 @@ want_openssl = get_option('openssl')
|
||
|
want_selinux = get_option('selinux')
|
||
|
want_oss_fuzz = get_option('oss-fuzz')
|
||
|
want_seccomp = get_option('seccomp')
|
||
|
+want_spec = get_option('specfile')
|
||
|
+want_state_dirs = get_option('install-state-dirs')
|
||
|
want_thread_safety = get_option('thread-safety')
|
||
|
want_memfd_rexec = get_option('memfd-rexec')
|
||
|
want_sd_bus = get_option('sd-bus')
|
||
|
|
||
|
+# Set sysconfdir
|
||
|
+fs = import('fs')
|
||
|
+if want_install_init
|
||
|
+ distrosysconfdir = get_option('distrosysconfdir')
|
||
|
+ if distrosysconfdir != ''
|
||
|
+ distrosysconfdir = join_paths(sysconfdir, distrosysconfdir)
|
||
|
+ conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
|
||
|
+ elif fs.is_dir('/etc/sysconfig')
|
||
|
+ distrosysconfdir = join_paths(sysconfdir, 'sysconfig')
|
||
|
+ conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
|
||
|
+ elif fs.is_dir('/etc/default')
|
||
|
+ distrosysconfdir = join_paths(sysconfdir, 'default')
|
||
|
+ conf.set('LXC_DISTRO_SYSCONF', distrosysconfdir)
|
||
|
+ else
|
||
|
+ error('"distrosysconfdir" is not set')
|
||
|
+ endif
|
||
|
+endif
|
||
|
+
|
||
|
srcconf.set_quoted('DEFAULT_CGROUP_PATTERN', cgrouppattern)
|
||
|
if coverity
|
||
|
srcconf.set('ENABLE_COVERITY_BUILD', 1)
|
||
|
@@ -926,14 +931,16 @@ if want_apparmor
|
||
|
endif
|
||
|
subdir('config/bash')
|
||
|
subdir('config/etc')
|
||
|
-subdir('config/init/common')
|
||
|
-subdir('config/init/systemd')
|
||
|
-subdir('config/init/sysvinit')
|
||
|
-subdir('config/init/upstart')
|
||
|
+if want_install_init
|
||
|
+ subdir('config/init/common')
|
||
|
+ subdir('config/init/systemd')
|
||
|
+ subdir('config/init/sysvinit')
|
||
|
+ subdir('config/init/upstart')
|
||
|
+ subdir('config/sysconfig')
|
||
|
+endif
|
||
|
if want_selinux
|
||
|
subdir('config/selinux')
|
||
|
endif
|
||
|
-subdir('config/sysconfig')
|
||
|
subdir('config/templates')
|
||
|
subdir('config/templates/common.conf.d')
|
||
|
subdir('config/yum')
|
||
|
@@ -963,21 +970,25 @@ pkg_config_file = pkgconfig.generate(liblxc,
|
||
|
)
|
||
|
|
||
|
# Empty dirs.
|
||
|
-install_emptydir(join_paths(localstatedir, 'cache', 'lxc'))
|
||
|
-install_emptydir(join_paths(localstatedir, 'lib', 'lxc'))
|
||
|
+if want_state_dirs
|
||
|
+ install_emptydir(join_paths(localstatedir, 'cache', 'lxc'))
|
||
|
+ install_emptydir(join_paths(localstatedir, 'lib', 'lxc'))
|
||
|
+endif
|
||
|
|
||
|
# RPM spec file.
|
||
|
-specconf = configuration_data()
|
||
|
-specconf.set('LXC_VERSION_BASE', meson.project_version())
|
||
|
-specconf.set('LXC_VERSION_BETA', version_data.get('LXC_VERSION_BETA'))
|
||
|
-specconf.set('PACKAGE', meson.project_name())
|
||
|
-specconf.set('LXC_DISTRO_SYSCONF', conf.get('LXC_DISTRO_SYSCONF'))
|
||
|
-
|
||
|
-configure_file(
|
||
|
- configuration: specconf,
|
||
|
- input: 'lxc.spec.in',
|
||
|
- output: 'lxc.spec',
|
||
|
- install: false)
|
||
|
+if want_spec
|
||
|
+ specconf = configuration_data()
|
||
|
+ specconf.set('LXC_VERSION_BASE', meson.project_version())
|
||
|
+ specconf.set('LXC_VERSION_BETA', version_data.get('LXC_VERSION_BETA'))
|
||
|
+ specconf.set('PACKAGE', meson.project_name())
|
||
|
+ specconf.set('LXC_DISTRO_SYSCONF', conf.get('LXC_DISTRO_SYSCONF'))
|
||
|
+
|
||
|
+ configure_file(
|
||
|
+ configuration: specconf,
|
||
|
+ input: 'lxc.spec.in',
|
||
|
+ output: 'lxc.spec',
|
||
|
+ install: false)
|
||
|
+endif
|
||
|
|
||
|
# Build overview.
|
||
|
status = [
|
||
|
diff --git a/meson_options.txt b/meson_options.txt
|
||
|
index 9803473d2..84a6d45b5 100644
|
||
|
--- a/meson_options.txt
|
||
|
+++ b/meson_options.txt
|
||
|
@@ -120,3 +120,12 @@ option('memfd-rexec', type : 'boolean', value : 'true',
|
||
|
|
||
|
option('distrosysconfdir', type : 'string', value: '',
|
||
|
description: 'relative path to sysconfdir for distro default configuration')
|
||
|
+
|
||
|
+option('specfile', type : 'boolean', value: true,
|
||
|
+ description: 'whether to prepare RPM spec')
|
||
|
+
|
||
|
+option('install-init-files', type : 'boolean', value: true,
|
||
|
+ description: 'whether to install init files for local init (e.g. systemd, sysvinit)')
|
||
|
+
|
||
|
+option('install-state-dirs', type : 'boolean', value: true,
|
||
|
+ description: 'whether to create state directories on install')
|