From 4412d151b61a71e65891bff7697cc3ab97c62d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Mon, 30 May 2022 17:23:44 -0400 Subject: [PATCH 1/5] meson: Make docbook2man required if user requested doc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 53fb21e67..8d55a5d83 100644 --- a/meson.build +++ b/meson.build @@ -213,7 +213,7 @@ time_epoch = time_epoch.to_int() conf.set('TIME_EPOCH', time_epoch) ## Manpages. -sgml2man = find_program('docbook2X2man', 'docbook2x-man', 'db2x_docbook2man', 'docbook2man', 'docbook-to-man', required: false) +sgml2man = find_program('docbook2X2man', 'docbook2x-man', 'db2x_docbook2man', 'docbook2man', 'docbook-to-man', required: want_mans) docbook2man = find_program('docbook2man', required: false) docconf = configuration_data() From 7d8a38b260a8f8b1626db1f6a572beda3b699842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Mon, 30 May 2022 18:08:04 -0400 Subject: [PATCH 2/5] meson: Rename want_io_uring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 8d55a5d83..1fce9d6f0 100644 --- a/meson.build +++ b/meson.build @@ -117,8 +117,8 @@ conf.set_quoted('LXC_USERNIC_DB', lxc_user_network_db) # Custom configuration. cgrouppattern = get_option('cgroup-pattern') -wants_io_uring = get_option('io-uring-event-loop') want_examples = get_option('examples') +want_io_uring = get_option('io-uring-event-loop') want_pam_cgroup = get_option('pam-cgroup') want_mans = get_option('man') want_tests = get_option('tests') @@ -186,7 +186,7 @@ add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language: ' # Feature detection ## I/O uring. -if wants_io_uring +if want_io_uring liburing = dependency('liburing') if cc.has_function('io_uring_prep_poll_add', prefix: '#include ', dependencies: liburing) == false error('liburing version does not support IORING_POLL_ADD_MULTI') @@ -598,7 +598,7 @@ liblxc_dependencies = [ libapparmor, ] -if wants_io_uring +if want_io_uring liblxc_dependencies += [liburing] endif From 8131bb44ecbdece9730b3d76c21494c3cecc3533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Mon, 30 May 2022 18:29:52 -0400 Subject: [PATCH 3/5] meson: Add init scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- config/init/systemd/meson.build | 33 ++++++++++++++++++++++++++++++++ config/init/sysvinit/meson.build | 17 ++++++++++++++++ config/init/upstart/meson.build | 24 +++++++++++++++++++++++ meson.build | 3 +++ meson_options.txt | 6 +++--- 5 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 config/init/sysvinit/meson.build create mode 100644 config/init/upstart/meson.build diff --git a/config/init/systemd/meson.build b/config/init/systemd/meson.build index 6904badf9..21e756504 100644 --- a/config/init/systemd/meson.build +++ b/config/init/systemd/meson.build @@ -6,3 +6,36 @@ lxc_apparmor_load = configure_file( output: 'lxc-apparmor-load', install: true, install_dir: lxclibexec) + +if 'systemd' in init_script + systemd = dependency('systemd') + systemd_system_unit_dir = systemd.get_variable('systemdsystemunitdir') + + configure_file( + configuration: conf, + input: 'lxc-monitord.service.in', + output: 'lxc-monitord.service', + install: true, + install_dir: systemd_system_unit_dir) + + configure_file( + configuration: conf, + input: 'lxc-net.service.in', + output: 'lxc-net.service', + install: true, + install_dir: systemd_system_unit_dir) + + configure_file( + configuration: conf, + input: 'lxc.service.in', + output: 'lxc.service', + install: true, + install_dir: systemd_system_unit_dir) + + configure_file( + configuration: conf, + input: 'lxc@.service.in', + output: 'lxc@.service', + install: true, + install_dir: systemd_system_unit_dir) +endif diff --git a/config/init/sysvinit/meson.build b/config/init/sysvinit/meson.build new file mode 100644 index 000000000..91a45dd82 --- /dev/null +++ b/config/init/sysvinit/meson.build @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +if 'sysvinit' in init_script + configure_file( + configuration: conf, + input: 'lxc-containers.in', + output: 'lxc-containers', + install: true, + install_dir: join_paths(sysconfdir, 'init.d')) + + configure_file( + configuration: conf, + input: 'lxc-net.in', + output: 'lxc-net', + install: true, + install_dir: join_paths(sysconfdir, 'init.d')) +endif diff --git a/config/init/upstart/meson.build b/config/init/upstart/meson.build new file mode 100644 index 000000000..b0afc0b21 --- /dev/null +++ b/config/init/upstart/meson.build @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +if 'upstart' in init_script + configure_file( + configuration: conf, + input: 'lxc.conf.in', + output: 'lxc.conf', + install: true, + install_dir: join_paths(sysconfdir, 'init')) + + configure_file( + configuration: conf, + input: 'lxc-instance.conf', + output: 'lxc-instance.conf', + install: true, + install_dir: join_paths(sysconfdir, 'init')) + + configure_file( + configuration: conf, + input: 'lxc-net.conf.in', + output: 'lxc-net.conf', + install: true, + install_dir: join_paths(sysconfdir, 'init')) +endif diff --git a/meson.build b/meson.build index 1fce9d6f0..9be644f76 100644 --- a/meson.build +++ b/meson.build @@ -117,6 +117,7 @@ conf.set_quoted('LXC_USERNIC_DB', lxc_user_network_db) # Custom configuration. cgrouppattern = get_option('cgroup-pattern') +init_script = get_option('init-script') want_examples = get_option('examples') want_io_uring = get_option('io-uring-event-loop') want_pam_cgroup = get_option('pam-cgroup') @@ -621,6 +622,8 @@ subdir('config/bash') subdir('config/etc') subdir('config/init/common') subdir('config/init/systemd') +subdir('config/init/sysvinit') +subdir('config/init/upstart') subdir('config/selinux') subdir('config/templates') subdir('config/templates/common.conf.d') diff --git a/meson_options.txt b/meson_options.txt index cb466bd36..6459cb7f9 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -7,9 +7,9 @@ option('cgroup-pattern', type: 'string', value: '', option('examples', type: 'boolean', value: 'true', description: 'build and install examples') -option('init-script', type: 'combo', - choices: ['systemd', 'sysvinit', 'openrc', 'upstart'], value: 'systemd', - description: 'init script') +option('init-script', type : 'array', + choices : ['systemd', 'sysvinit', 'upstart'], value : ['systemd'], + description : 'init script') option('io-uring-event-loop', type: 'boolean', value: 'false', description: 'Enable io-uring based event loop') From 36a53f30264975608aec387309cca6a7da8e0b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Mon, 30 May 2022 18:45:33 -0400 Subject: [PATCH 4/5] meson: Add sysconfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- config/sysconfig/meson.build | 18 ++++++++++++++++++ meson.build | 1 + 2 files changed, 19 insertions(+) create mode 100644 config/sysconfig/meson.build diff --git a/config/sysconfig/meson.build b/config/sysconfig/meson.build new file mode 100644 index 000000000..9ab3237f0 --- /dev/null +++ b/config/sysconfig/meson.build @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +fs = import('fs') +if fs.is_dir('/etc/sysconfig') + configure_file( + configuration: conf, + input: 'lxc.in', + output: 'lxc', + install: true, + install_dir: join_paths(sysconfdir, 'sysconfig')) +elif fs.is_dir('/etc/default') + configure_file( + configuration: conf, + input: 'lxc.in', + output: 'lxc', + install: true, + install_dir: join_paths(sysconfdir, 'default')) +endif diff --git a/meson.build b/meson.build index 9be644f76..89433b29a 100644 --- a/meson.build +++ b/meson.build @@ -625,6 +625,7 @@ subdir('config/init/systemd') subdir('config/init/sysvinit') subdir('config/init/upstart') subdir('config/selinux') +subdir('config/sysconfig') subdir('config/templates') subdir('config/templates/common.conf.d') subdir('config/yum') From 6105cc7f5334b041b75ee8f6da54efd1a1050658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Mon, 30 May 2022 19:16:16 -0400 Subject: [PATCH 5/5] meson: Add apparmor profiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- config/apparmor/abstractions/meson.build | 17 +++++++++++++ config/apparmor/meson.build | 17 +++++++++++++ config/apparmor/profiles/meson.build | 31 ++++++++++++++++++++++++ meson.build | 3 +++ 4 files changed, 68 insertions(+) create mode 100644 config/apparmor/abstractions/meson.build create mode 100644 config/apparmor/meson.build create mode 100644 config/apparmor/profiles/meson.build diff --git a/config/apparmor/abstractions/meson.build b/config/apparmor/abstractions/meson.build new file mode 100644 index 000000000..92e3afb69 --- /dev/null +++ b/config/apparmor/abstractions/meson.build @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +if libapparmor.found() + configure_file( + configuration: conf, + input: 'container-base', + output: 'container-base', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d', 'abstractions', 'lxc')) + + configure_file( + configuration: conf, + input: 'start-container.in', + output: 'start-container', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d', 'abstractions', 'lxc')) +endif diff --git a/config/apparmor/meson.build b/config/apparmor/meson.build new file mode 100644 index 000000000..24a07ebab --- /dev/null +++ b/config/apparmor/meson.build @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +if libapparmor.found() + configure_file( + configuration: dummy_config_data, + input: 'lxc-containers', + output: 'lxc-containers', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d')) + + configure_file( + configuration: dummy_config_data, + input: 'usr.bin.lxc-start', + output: 'usr.bin.lxc-start', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d')) +endif diff --git a/config/apparmor/profiles/meson.build b/config/apparmor/profiles/meson.build new file mode 100644 index 000000000..c1d8d3337 --- /dev/null +++ b/config/apparmor/profiles/meson.build @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +if libapparmor.found() + configure_file( + configuration: dummy_config_data, + input: 'lxc-default', + output: 'lxc-default', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d', 'lxc')) + + configure_file( + configuration: dummy_config_data, + input: 'lxc-default-cgns', + output: 'lxc-default-cgns', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d', 'lxc')) + + configure_file( + configuration: dummy_config_data, + input: 'lxc-default-with-mounting', + output: 'lxc-default-with-mounting', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d', 'lxc')) + + configure_file( + configuration: dummy_config_data, + input: 'lxc-default-with-nesting', + output: 'lxc-default-with-nesting', + install: true, + install_dir: join_paths(sysconfdir, 'apparmor.d', 'lxc')) +endif diff --git a/meson.build b/meson.build index 89433b29a..c31b68c46 100644 --- a/meson.build +++ b/meson.build @@ -618,6 +618,9 @@ liblxc_dep = declare_dependency( dependencies: liblxc_dependencies) # Rest of sub-directories. +subdir('config/apparmor') +subdir('config/apparmor/abstractions') +subdir('config/apparmor/profiles') subdir('config/bash') subdir('config/etc') subdir('config/init/common')