From 4dd5e0cf13bf655d87bc3f53d64a8f7fb4a2af4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Fri, 3 Jun 2022 15:48:32 -0400 Subject: [PATCH 01/15] meson: Add coverity flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 4 ++++ meson_options.txt | 3 +++ 2 files changed, 7 insertions(+) diff --git a/meson.build b/meson.build index 0550f0cd8..c7c11f666 100644 --- a/meson.build +++ b/meson.build @@ -128,6 +128,7 @@ endif # Custom configuration. cgrouppattern = get_option('cgroup-pattern') +coverity = get_option('coverity-build') init_script = get_option('init-script') want_examples = get_option('examples') want_io_uring = get_option('io-uring-event-loop') @@ -137,6 +138,9 @@ want_tests = get_option('tests') want_tools = get_option('tools') srcconf.set_quoted('DEFAULT_CGROUP_PATTERN', cgrouppattern) +if coverity + srcconf.set('ENABLE_COVERITY_BUILD', 1) +endif dummy_config_data = configuration_data() dummy_config_data.set_quoted('DUMMY_VARIABLE', '1') diff --git a/meson_options.txt b/meson_options.txt index 6459cb7f9..ac07d246b 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -4,6 +4,9 @@ option('cgroup-pattern', type: 'string', value: '', description: 'CGroup pattern') +option('coverity-build', type: 'boolean', value: 'true', + description: 'build for coverity') + option('examples', type: 'boolean', value: 'true', description: 'build and install examples') From 8d77f43f5c06bb19fcf9b6477953f30a8690face Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Fri, 3 Jun 2022 17:53:45 -0400 Subject: [PATCH 02/15] meson: Cleanup and fix includes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- hooks/meson.build | 6 +-- meson.build | 10 ++--- src/lxc/cmd/meson.build | 19 +++------ src/lxc/pam/meson.build | 9 +--- src/lxc/tools/meson.build | 53 ++++++++++------------- src/tests/meson.build | 89 ++++++++++++++++++--------------------- 6 files changed, 73 insertions(+), 113 deletions(-) diff --git a/hooks/meson.build b/hooks/meson.build index 15cd0f8cf..d72e9b8ce 100644 --- a/hooks/meson.build +++ b/hooks/meson.build @@ -1,15 +1,11 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -hooks_include_directories = include_directories( - '../', - '../src/include') - hooks_unmount_namespace_sources = files('unmount-namespace.c') hook_programs += executable( 'unmount-namespace', hooks_unmount_namespace_sources, - include_directories: hooks_include_directories, + include_directories: liblxc_includes, install: true, install_dir: join_paths(lxclibexec, 'hooks')) diff --git a/meson.build b/meson.build index c7c11f666..32bd46030 100644 --- a/meson.build +++ b/meson.build @@ -597,15 +597,13 @@ template_scripts = [] test_programs = [] # Includes. -basic_includes = include_directories( +liblxc_includes = include_directories( '.', 'src', - 'src/include') - -liblxc_includes = [basic_includes, include_directories( + 'src/include', + 'src/lxc', 'src/lxc/cgroups', - 'src/lxc/lsm', - 'src/lxc/storage')] + 'src/lxc/storage') # Early sub-directories. subdir('src/include') diff --git a/src/lxc/cmd/meson.build b/src/lxc/cmd/meson.build index 82ceab7c1..8bbda8395 100644 --- a/src/lxc/cmd/meson.build +++ b/src/lxc/cmd/meson.build @@ -1,14 +1,5 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -cmd_liblxc_includes = include_directories( - '.', - '../', - '../cgroups', - '../lsm', - '../storage', - '../../include', - '../../../') - cmd_common_sources = files( '../af_unix.c', '../af_unix.h', @@ -168,7 +159,7 @@ install_data(join_paths(project_build_root, 'src/lxc/cmd/lxc-update-config'), in cmd_programs += executable( 'init.lxc.static', cmd_lxc_init_sources, - include_directories: cmd_liblxc_includes, + include_directories: liblxc_includes, link_with: [liblxc_static], link_args: ['-static'], c_args: ['-DNO_LXC_CONF'], @@ -179,7 +170,7 @@ cmd_programs += executable( cmd_programs += executable( 'init.lxc', cmd_lxc_init_sources, - include_directories: cmd_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install_dir: sbindir, install: true) @@ -187,7 +178,7 @@ cmd_programs += executable( cmd_programs += executable( 'lxc-monitord', cmd_lxc_monitord_sources, - include_directories: cmd_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true, install_dir: lxclibexec) @@ -195,7 +186,7 @@ cmd_programs += executable( cmd_programs += executable( 'lxc-user-nic', cmd_lxc_user_nic_sources, - include_directories: cmd_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true, install_dir: lxclibexec) @@ -203,6 +194,6 @@ cmd_programs += executable( cmd_programs += executable( 'lxc-usernsexec', cmd_lxc_usernsexec_sources, - include_directories: cmd_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) diff --git a/src/lxc/pam/meson.build b/src/lxc/pam/meson.build index 77f6154dd..3078fb1c4 100644 --- a/src/lxc/pam/meson.build +++ b/src/lxc/pam/meson.build @@ -1,12 +1,5 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -pam_cgfs_includes = include_directories( - '.', - '../', - '../cgroups', - '../../include', - '../../../') - pam_cgfs_sources = files( 'pam_cgfs.c', '../file_utils.c', @@ -19,7 +12,7 @@ pam_cgfs_sources = files( if want_pam_cgroup pam_cgfs = shared_module( 'pam_cgfs', - include_directories: pam_cgfs_includes, + include_directories: liblxc_includes, sources: pam_cgfs_sources, dependencies: [pkgconfig_libs], name_prefix: '', diff --git a/src/lxc/tools/meson.build b/src/lxc/tools/meson.build index 12deb24b1..ab78153c3 100644 --- a/src/lxc/tools/meson.build +++ b/src/lxc/tools/meson.build @@ -1,14 +1,5 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -tools_liblxc_includes = include_directories( - '.', - '../', - '../cgroups', - '../lsm', - '../storage', - '../../include', - '../../../') - tools_common_sources = files( 'arguments.c', 'arguments.h', @@ -179,154 +170,154 @@ if want_tools public_programs += executable( 'lxc-attach', tools_lxc_attach_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-autostart', tools_lxc_autostart_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-cgroup', tools_lxc_cgroup_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-checkpoint', tools_lxc_checkpoint_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-config', tools_lxc_config_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-console', tools_lxc_console_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-copy', tools_lxc_copy_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-create', tools_lxc_create_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-destroy', tools_lxc_destroy_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-device', tools_lxc_device_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-execute', tools_lxc_execute_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-freeze', tools_lxc_freeze_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-info', tools_lxc_info_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-ls', tools_lxc_ls_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-monitor', tools_lxc_monitor_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-snapshot', tools_lxc_snapshot_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-start', tools_lxc_start_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-stop', tools_lxc_stop_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-top', tools_lxc_top_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-unfreeze', tools_lxc_unfreeze_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-unshare', tools_lxc_unshare_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) public_programs += executable( 'lxc-wait', tools_lxc_wait_sources, - include_directories: tools_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: true) endif diff --git a/src/tests/meson.build b/src/tests/meson.build index 3154bb9c8..a553ec4f5 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -1,14 +1,5 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -tests_liblxc_includes = include_directories( - '.', - '../lxc/', - '../lxc/cgroups', - '../lxc/lsm', - '../lxc/storage', - '../include', - '../../') - tests_common_sources = files( '../lxc/af_unix.c', '../lxc/af_unix.h', @@ -110,7 +101,7 @@ tests_common_sources = files( test_programs += executable( 'lxc-test-arch-parse', files('arch_parse.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -118,7 +109,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-apparmor', files('aa.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -126,7 +117,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-api-reboot', files('api_reboot.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -134,7 +125,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-attach', files('attach.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -142,7 +133,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-basic', files('basic.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -150,7 +141,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-capabilities', files('capabilities.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -158,7 +149,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-cgpath', files('cgpath.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -166,7 +157,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-clonetest', files('clonetest.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -174,7 +165,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-concurrent', files('concurrent.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -182,7 +173,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-config-jump-table', files('config_jump_table.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -190,7 +181,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-console', files('console.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -198,7 +189,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-console-log', files('console_log.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -206,7 +197,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-containertests', files('containertests.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -214,7 +205,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-createtest', files('createtest.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -222,7 +213,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-criu-check-feature', files('criu_check_feature.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -230,7 +221,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-cve-2019-5736', files('cve-2019-5736.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -238,7 +229,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-destroytest', files('destroytest.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -246,7 +237,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-device-add-remove', files('device_add_remove.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -254,7 +245,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-get_item', files('get_item.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -262,7 +253,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-getkeys', files('getkeys.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -270,7 +261,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-list', files('list.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -278,7 +269,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-locktests', files('locktests.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -286,7 +277,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-utils', files('lxc-test-utils.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -294,7 +285,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-raw-clone', files('lxc_raw_clone.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -302,7 +293,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-lxcpath', files('lxcpath.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -310,7 +301,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-may-control', files('may_control.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -318,7 +309,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-mount-injection', files('mount_injection.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -326,7 +317,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-parse-config-file', files('parse_config_file.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -334,7 +325,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-proc-pid', files('proc_pid.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -342,7 +333,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-reboot', files('reboot.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -350,7 +341,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-rootfs-options', files('rootfs_options.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -358,7 +349,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-saveconfig', files('saveconfig.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -366,7 +357,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-share-ns', files('share_ns.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -374,7 +365,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-shortlived', files('shortlived.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -382,7 +373,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-shutdowntest', files('shutdowntest.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -390,7 +381,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-snapshot', files('snapshot.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -398,7 +389,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-startone', files('startone.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -406,7 +397,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-state-server', files('state_server.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -414,7 +405,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-sys-mixed', files('sys_mixed.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) @@ -422,7 +413,7 @@ test_programs += executable( test_programs += executable( 'lxc-test-sysctls', files('sysctls.c') + tests_common_sources, - include_directories: tests_liblxc_includes, + include_directories: liblxc_includes, dependencies: liblxc_dep, install: want_tests, build_by_default: want_tests != false) From 5055c73d91eb96af2294e66655503828cb6fb9b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Mon, 6 Jun 2022 18:06:09 -0400 Subject: [PATCH 03/15] meson: Skip static library when using sanitizer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 8 +++++++- src/lxc/cmd/meson.build | 22 ++++++++++++---------- src/lxc/meson.build | 16 +++++++++------- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/meson.build b/meson.build index 32bd46030..58736f17c 100644 --- a/meson.build +++ b/meson.build @@ -130,6 +130,7 @@ endif cgrouppattern = get_option('cgroup-pattern') coverity = get_option('coverity-build') init_script = get_option('init-script') +sanitize = get_option('b_sanitize') want_examples = get_option('examples') want_io_uring = get_option('io-uring-event-loop') want_pam_cgroup = get_option('pam-cgroup') @@ -624,13 +625,18 @@ if want_io_uring liblxc_dependencies += [liburing] endif +liblxc_link_whole = [] +if sanitize == 'none' + liblxc_link_whole = [liblxc_static] +endif + liblxc = shared_library( 'lxc', version: liblxc_version, include_directories: liblxc_includes, link_args: ['-DPIC'], c_args: ['-DPIC'], - link_whole: [liblxc_static], + link_whole: liblxc_link_whole, dependencies: liblxc_dependencies, install: true) diff --git a/src/lxc/cmd/meson.build b/src/lxc/cmd/meson.build index 8bbda8395..123d238ad 100644 --- a/src/lxc/cmd/meson.build +++ b/src/lxc/cmd/meson.build @@ -156,16 +156,18 @@ cmd_lxc_update_config = configure_file( output: 'lxc-update-config') install_data(join_paths(project_build_root, 'src/lxc/cmd/lxc-update-config'), install_dir: bindir) -cmd_programs += executable( - 'init.lxc.static', - cmd_lxc_init_sources, - include_directories: liblxc_includes, - link_with: [liblxc_static], - link_args: ['-static'], - c_args: ['-DNO_LXC_CONF'], - dependencies: [libcap_static], - install_dir: sbindir, - install: true) +if sanitize == 'none' + cmd_programs += executable( + 'init.lxc.static', + cmd_lxc_init_sources, + include_directories: liblxc_includes, + link_with: [liblxc_static], + link_args: ['-static'], + c_args: ['-DNO_LXC_CONF'], + dependencies: [libcap_static], + install_dir: sbindir, + install: true) +endif cmd_programs += executable( 'init.lxc', diff --git a/src/lxc/meson.build b/src/lxc/meson.build index 2f47b76b1..29d640ff9 100644 --- a/src/lxc/meson.build +++ b/src/lxc/meson.build @@ -141,13 +141,15 @@ liblxc_sources = files( 'uuid.c', 'uuid.h') -liblxc_static = static_library( - 'lxc_static', - liblxc_sources + include_sources + netns_ifaddrs_sources, - install: false, - include_directories: liblxc_includes, - dependencies: [threads], - c_args: '-fvisibility=default') +if sanitize == 'none' + liblxc_static = static_library( + 'lxc_static', + liblxc_sources + include_sources + netns_ifaddrs_sources, + install: true, + include_directories: liblxc_includes, + dependencies: [threads], + c_args: '-fvisibility=default') +endif lxc_functions = configure_file( configuration: conf, From 1ccdc253498e69aa89ef6e31f0aa3171f0758a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 01:05:35 -0400 Subject: [PATCH 04/15] meson: Don't include lxc-test-fuzzers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- src/tests/meson.build | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/tests/meson.build b/src/tests/meson.build index a553ec4f5..abb8b1e6d 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -474,13 +474,6 @@ test_programs += configure_file( input: 'lxc-test-exit-code', output: 'lxc-test-exit-code') -test_programs += configure_file( - configuration: dummy_config_data, - install: want_tests, - install_dir: bindir, - input: 'lxc-test-fuzzers', - output: 'lxc-test-fuzzers') - test_programs += configure_file( configuration: dummy_config_data, install: want_tests, From 8135966d1d808f77f9168dfeed785bfb0d68ffca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 01:14:37 -0400 Subject: [PATCH 05/15] meson: Make lxc-user-nic setuid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- src/lxc/cmd/meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lxc/cmd/meson.build b/src/lxc/cmd/meson.build index 123d238ad..644669fd2 100644 --- a/src/lxc/cmd/meson.build +++ b/src/lxc/cmd/meson.build @@ -191,6 +191,7 @@ cmd_programs += executable( include_directories: liblxc_includes, dependencies: liblxc_dep, install: true, + install_mode: 'rwsr-xr-x', # 4755 install_dir: lxclibexec) cmd_programs += executable( From e18dbec746c0c30fb84d11d9ed7a29fed7ef7ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 01:30:43 -0400 Subject: [PATCH 06/15] meson: Fix RPM spec variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 58736f17c..54db06b28 100644 --- a/meson.build +++ b/meson.build @@ -28,6 +28,7 @@ version_data = configuration_data() version_data.set('LXC_VERSION_MAJOR', '4') version_data.set('LXC_VERSION_MINOR', '0') version_data.set('LXC_VERSION_MICRO', '0') +version_data.set('LXC_VERSION_BETA', '') version_data.set('LXC_ABI', liblxc_version) version_data.set('LXC_DEVEL', '1') version_data.set('LXC_VERSION', meson.project_version()) @@ -685,8 +686,14 @@ install_emptydir(join_paths(localstatedir, 'cache', 'lxc')) install_emptydir(join_paths(localstatedir, 'lib', 'lxc')) # 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: conf, + configuration: specconf, input: 'lxc.spec.in', output: 'lxc.spec', install: false) From d5dff814acd627e21c4dc1b5dc64d66fd074e9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 15:14:01 -0400 Subject: [PATCH 07/15] meson: Add bionic detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meson.build b/meson.build index 54db06b28..0fe5008ab 100644 --- a/meson.build +++ b/meson.build @@ -127,6 +127,11 @@ else distrosysconfdir = '' endif +# Cross-compile on Android. +if host_machine.system() == 'android' + srcconf.set10('IS_BIONIC', true) +endif + # Custom configuration. cgrouppattern = get_option('cgroup-pattern') coverity = get_option('coverity-build') From f7de7d7adf7e71da8a166fc8f5dff9b1ee77e00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 15:16:11 -0400 Subject: [PATCH 08/15] meson: Fix on shallow git trees MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- meson.build | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 0fe5008ab..e3b376130 100644 --- a/meson.build +++ b/meson.build @@ -225,10 +225,14 @@ git = find_program('git', required: false) time_epoch = run_command(sh, '-c', 'echo "$SOURCE_DATE_EPOCH"', check: true).stdout().strip() if time_epoch == '' and git.found() and run_command('test', '-e', '.git', check: false).returncode() == 0 # If we're in a git repository, use the creation time of the latest git tag. - latest_tag = run_command(git, 'describe', '--abbrev=0', '--tags', check: true).stdout().strip() - time_epoch = run_command(git, 'log', '--no-show-signature', '-1', '--format=%at', latest_tag, check: true).stdout() -else - # Fallback to current epoch. + latest_tag = run_command(git, 'describe', '--abbrev=0', '--tags', check: false).stdout().strip() + if latest_tag != '' + time_epoch = run_command(git, 'log', '--no-show-signature', '-1', '--format=%at', latest_tag, check: true).stdout() + endif +endif + +# Fallback to current epoch. +if time_epoch == '' time_epoch = run_command(date, '+%s', check: true).stdout() endif generate_date = run_command(date, '--utc', '--date=@' + time_epoch, '+%Y-%m-%d', check: true).stdout().strip() From 869deb9173bbfa460ba29519087cb9f8978899f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 15:16:36 -0400 Subject: [PATCH 09/15] meson: seccomp is optional 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 e3b376130..4829f80f7 100644 --- a/meson.build +++ b/meson.build @@ -265,7 +265,7 @@ endif threads = dependency('threads') ## Seccomp. -libseccomp = dependency('libseccomp') +libseccomp = dependency('libseccomp', required: false) srcconf.set10('HAVE_SECCOMP', libseccomp.found()) pkgconfig_libs += libseccomp if libseccomp.found() From 4c96107d1ed9877d243344a3e1e50458c8362253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 16:19:57 -0400 Subject: [PATCH 10/15] meson: Always define HAVE_LIBURING 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, 2 insertions(+) diff --git a/meson.build b/meson.build index 4829f80f7..ddb14f683 100644 --- a/meson.build +++ b/meson.build @@ -216,6 +216,8 @@ if want_io_uring endif srcconf.set10('HAVE_LIBURING', true) +else + srcconf.set10('HAVE_LIBURING', false) endif ## Time EPOCH. From 7a489adb897c49e31a8f5bc72ed3141fbe4221f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 16:21:42 -0400 Subject: [PATCH 11/15] meson: Only build seccomp and selinux when needed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- src/lxc/cmd/meson.build | 10 ++++++++-- src/lxc/meson.build | 10 ++++++++-- src/lxc/tools/meson.build | 10 ++++++++-- src/tests/meson.build | 10 ++++++++-- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/lxc/cmd/meson.build b/src/lxc/cmd/meson.build index 644669fd2..bb5f8acca 100644 --- a/src/lxc/cmd/meson.build +++ b/src/lxc/cmd/meson.build @@ -34,7 +34,6 @@ cmd_common_sources = files( '../lsm/lsm.c', '../lsm/lsm.h', '../lsm/nop.c', - '../lsm/selinux.c', '../lxcseccomp.h', '../lxclock.c', '../lxclock.h', @@ -58,7 +57,6 @@ cmd_common_sources = files( '../process_utils.h', '../ringbuf.c', '../ringbuf.h', - '../seccomp.c', '../start.c', '../start.h', '../state.c', @@ -98,6 +96,14 @@ cmd_common_sources = files( '../log.h', '../log.c') + include_sources +if libseccomp.found() + cmd_common_sources += files('../seccomp.c') +endif + +if libselinux.found() + cmd_common_sources += files('../lsm/selinux.c') +endif + cmd_lxc_init_sources = files( 'lxc_init.c', '../af_unix.c', diff --git a/src/lxc/meson.build b/src/lxc/meson.build index 29d640ff9..5863dad34 100644 --- a/src/lxc/meson.build +++ b/src/lxc/meson.build @@ -36,7 +36,6 @@ liblxc_sources = files( 'lsm/lsm.c', 'lsm/lsm.h', 'lsm/nop.c', - 'lsm/selinux.c', 'storage/btrfs.c', 'storage/btrfs.h', 'storage/dir.c', @@ -123,7 +122,6 @@ liblxc_sources = files( 'ringbuf.h', 'rtnl.c', 'rtnl.h', - 'seccomp.c', 'start.c', 'start.h', 'state.c', @@ -141,6 +139,14 @@ liblxc_sources = files( 'uuid.c', 'uuid.h') +if libseccomp.found() + liblxc_sources += files('seccomp.c') +endif + +if libselinux.found() + liblxc_sources += files('lsm/selinux.c') +endif + if sanitize == 'none' liblxc_static = static_library( 'lxc_static', diff --git a/src/lxc/tools/meson.build b/src/lxc/tools/meson.build index ab78153c3..5dd3b10ae 100644 --- a/src/lxc/tools/meson.build +++ b/src/lxc/tools/meson.build @@ -36,7 +36,6 @@ tools_common_sources = files( '../lsm/lsm.c', '../lsm/lsm.h', '../lsm/nop.c', - '../lsm/selinux.c', '../lxcseccomp.h', '../lxclock.c', '../lxclock.h', @@ -60,7 +59,6 @@ tools_common_sources = files( '../process_utils.h', '../ringbuf.c', '../ringbuf.h', - '../seccomp.c', '../start.c', '../start.h', '../state.c', @@ -100,6 +98,14 @@ tools_common_sources = files( '../log.h', '../log.c') + include_sources + netns_ifaddrs_sources +if libseccomp.found() + tools_common_sources += files('../seccomp.c') +endif + +if libselinux.found() + tools_common_sources += files('../lsm/selinux.c') +endif + tools_lxc_attach_sources = files( 'lxc_attach.c') + tools_common_sources diff --git a/src/tests/meson.build b/src/tests/meson.build index abb8b1e6d..cbec2bbe5 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -34,7 +34,6 @@ tests_common_sources = files( '../lxc/lsm/lsm.c', '../lxc/lsm/lsm.h', '../lxc/lsm/nop.c', - '../lxc/lsm/selinux.c', '../lxc/lxcseccomp.h', '../lxc/lxclock.c', '../lxc/lxclock.h', @@ -58,7 +57,6 @@ tests_common_sources = files( '../lxc/process_utils.h', '../lxc/ringbuf.c', '../lxc/ringbuf.h', - '../lxc/seccomp.c', '../lxc/start.c', '../lxc/start.h', '../lxc/state.c', @@ -98,6 +96,14 @@ tests_common_sources = files( '../lxc/log.h', '../lxc/log.c') + include_sources + netns_ifaddrs_sources +if libseccomp.found() + tests_common_sources += files('../lxc/seccomp.c') +endif + +if libselinux.found() + tests_common_sources += files('../lxc/lsm/selinux.c') +endif + test_programs += executable( 'lxc-test-arch-parse', files('arch_parse.c') + tests_common_sources, From 199241209f353a78b8e4dca64f6ecc9c7e5f2828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 16:21:54 -0400 Subject: [PATCH 12/15] meson: Add missing prlimit include MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- src/include/meson.build | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/include/meson.build b/src/include/meson.build index a4a0e2ebf..88fe54ad8 100644 --- a/src/include/meson.build +++ b/src/include/meson.build @@ -56,3 +56,9 @@ if srcconf.get('HAVE_OPENPTY') == 0 'openpty.c', 'openpty.h') endif + +if srcconf.get('HAVE_PRLIMIT') == 0 and srcconf.get('HAVE_PRLIMIT64') == 1 + include_sources += files( + 'prlimit.c', + 'prlimit.h') +endif From faa4ae06efbe10cc00f774d9672c24100128f998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 17:15:26 -0400 Subject: [PATCH 13/15] meson: Add lxcmntent to unmount-namespace hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- hooks/meson.build | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hooks/meson.build b/hooks/meson.build index d72e9b8ce..225dfcdc2 100644 --- a/hooks/meson.build +++ b/hooks/meson.build @@ -1,6 +1,11 @@ # SPDX-License-Identifier: LGPL-2.1-or-later hooks_unmount_namespace_sources = files('unmount-namespace.c') +if srcconf.get('IS_BIONIC') == 1 or srcconf.get('HAVE_HASMNTOPT') == 0 or srcconf.get('HAVE_SETMNTENT') == 0 or srcconf.get('HAVE_ENDMNTENT') == 0 + hooks_unmount_namespace_sources += files( + '../src/include/lxcmntent.c', + '../src/include/lxcmntent.h') +endif hook_programs += executable( 'unmount-namespace', From 61c40023d00253416b96c65052beb4bfbb4659e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 17:15:54 -0400 Subject: [PATCH 14/15] lxc/rexec: Use HAVE_FEXECVE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- src/lxc/rexec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lxc/rexec.c b/src/lxc/rexec.c index ee0b453db..6a017da9c 100644 --- a/src/lxc/rexec.c +++ b/src/lxc/rexec.c @@ -16,7 +16,7 @@ #include "string_utils.h" #include "syscall_wrappers.h" -#if IS_BIONIC +#if IS_BIONIC && !HAVE_FEXECVE #include "fexecve.h" #endif From 7eac83c1b107db0f3053337aaa41b11cb1dd018b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Tue, 7 Jun 2022 17:16:08 -0400 Subject: [PATCH 15/15] meson: Fix mntent include condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- src/include/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/include/meson.build b/src/include/meson.build index 88fe54ad8..eb7238a4c 100644 --- a/src/include/meson.build +++ b/src/include/meson.build @@ -27,7 +27,7 @@ if srcconf.get('HAVE_GETGRGID_R') == 0 'getgrgid_r.h') endif -if srcconf.get('HAVE_HASMNTOPT') == 0 or srcconf.get('HAVE_SETMNTENT') == 0 or srcconf.get('HAVE_ENDMNTENT') == 0 +if srcconf.get('IS_BIONIC') == 1 or srcconf.get('HAVE_HASMNTOPT') == 0 or srcconf.get('HAVE_SETMNTENT') == 0 or srcconf.get('HAVE_ENDMNTENT') == 0 include_sources += files( 'lxcmntent.c', 'lxcmntent.h')