1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-17 19:21:04 +00:00

lxc: 5.0.3 -> 6.0.0, pin to lts, move/format

This commit is contained in:
Adam Stephens 2024-04-22 08:37:13 -04:00
parent f171f4ffd4
commit 7e73ead5d0
No known key found for this signature in database
5 changed files with 95 additions and 166 deletions

View file

@ -0,0 +1,78 @@
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 92d6f01c3d..d2b67d8d6f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -50,6 +50,7 @@ jobs:
meson setup build \
-Dtests=true \
-Dpam-cgroup=true \
+ -Dtools-multicall=true \
-Dwerror=true \
-Db_lto_mode=default
ninja -C build
diff --git a/src/lxc/cmd/meson.build b/src/lxc/cmd/meson.build
index 3ed3670e4b..edfb986622 100644
--- a/src/lxc/cmd/meson.build
+++ b/src/lxc/cmd/meson.build
@@ -46,7 +46,7 @@ cmd_lxc_init_static_sources = files(
'../string_utils.c',
'../string_utils.h') + include_sources
-cmd_lxc_monitord_sources = files('lxc_monitord.c') + include_sources + netns_ifaddrs_sources
+cmd_lxc_monitord_sources = files('lxc_monitord.c')
cmd_lxc_user_nic_sources = files('lxc_user_nic.c') + cmd_common_sources + netns_ifaddrs_sources
cmd_lxc_usernsexec_sources = files('lxc_usernsexec.c') + cmd_common_sources + netns_ifaddrs_sources
@@ -88,8 +88,8 @@ cmd_programs += executable(
'lxc-monitord',
cmd_lxc_monitord_sources,
include_directories: liblxc_includes,
- dependencies: liblxc_dep,
- link_with: [liblxc_static],
+ dependencies: liblxc_dependencies,
+ link_whole: [liblxc_static],
install: true,
install_dir: lxclibexec)
diff --git a/src/lxc/tools/meson.build b/src/lxc/tools/meson.build
index 00a863d936..6d317fc80b 100644
--- a/src/lxc/tools/meson.build
+++ b/src/lxc/tools/meson.build
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1+
-tools_common_sources = files('arguments.c', 'arguments.h') + include_sources + netns_ifaddrs_sources
+tools_common_sources = files('arguments.c', 'arguments.h') + include_sources
+tools_common_sources_for_dynamic_link = tools_common_sources + netns_ifaddrs_sources
tools_commands_dynamic_link = ['attach', 'autostart', 'cgroup', 'checkpoint', 'config',
'console', 'copy', 'create', 'destroy', 'device', 'execute', 'freeze',
@@ -15,7 +16,7 @@ if want_tools
foreach cmd : tools_commands_dynamic_link
public_programs += executable(
'lxc-' + cmd,
- files('lxc_' + cmd + '.c') + tools_common_sources + liblxc_ext_sources,
+ files('lxc_' + cmd + '.c') + tools_common_sources_for_dynamic_link + liblxc_ext_sources,
dependencies: liblxc_dependencies,
include_directories: liblxc_includes,
c_args: ['-DNO_LXC_CONF'],
@@ -26,16 +27,16 @@ if want_tools
foreach cmd : tools_commands_static_link
public_programs += executable(
'lxc-' + cmd,
- files('lxc_' + cmd + '.c') + tools_common_sources,
+ files('lxc_' + cmd + '.c') + files('arguments.c', 'arguments.h'),
dependencies: liblxc_dependencies,
include_directories: liblxc_includes,
- link_with: [liblxc_static],
+ link_whole: [liblxc_static],
install: true)
endforeach
endif
if want_tools_multicall
- tools_all_sources = files('lxc_multicall.c') + tools_common_sources
+ tools_all_sources = files('lxc_multicall.c') + tools_common_sources_for_dynamic_link
foreach cmd : tools_commands
tools_all_sources += files('lxc_' + cmd + '.c')
endforeach

View file

@ -2,6 +2,7 @@
lib,
stdenv,
fetchFromGitHub,
dbus,
docbook2x,
libapparmor,
libcap,
@ -9,22 +10,22 @@
libselinux,
meson,
ninja,
nix-update-script,
nixosTests,
openssl,
pkg-config,
systemd,
nix-update-script,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "lxc";
version = "5.0.3";
version = "6.0.0";
src = fetchFromGitHub {
owner = "lxc";
repo = "lxc";
rev = "refs/tags/lxc-${version}";
hash = "sha256-lnLmLgWXt3pI2S+4OeHRlPP5gui7S7ZXXClFt+n/8sY=";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-D994gekFgW/1Q4iVFM/3Zi0JXKn9Ghfd3UcjckVfoFY=";
};
nativeBuildInputs = [
@ -35,6 +36,7 @@ stdenv.mkDerivation rec {
];
buildInputs = [
dbus
libapparmor
libcap
libseccomp
@ -44,17 +46,19 @@ stdenv.mkDerivation rec {
];
patches = [
# make build more nix compatible
./add-meson-options.patch
# fix docbook2man version detection
./docbook-hack.patch
# fix linking
./4428.diff
];
mesonFlags = [
"-Dinstall-init-files=false"
"-Dinstall-state-dirs=false"
"-Dspecfile=false"
# re-enable when fixed https://github.com/lxc/lxc/issues/4427
# "-Dtools-multicall=true"
];
enableParallelBuilding = true;
@ -65,11 +69,13 @@ stdenv.mkDerivation rec {
tests = {
incus-legacy-init = nixosTests.incus.container-legacy-init;
incus-systemd-init = nixosTests.incus.container-systemd-init;
lxd = nixosTests.lxd.container;
};
updateScript = nix-update-script {
extraArgs = [
"-vr"
"lxc-(.*)"
"--version-regex"
"v(6.0.*)"
];
};
};
@ -88,4 +94,4 @@ stdenv.mkDerivation rec {
platforms = lib.platforms.linux;
maintainers = lib.teams.lxc.members;
};
}
})

View file

@ -1,153 +0,0 @@
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')

View file

@ -10551,8 +10551,6 @@ with pkgs;
lwc = callPackage ../tools/misc/lwc { };
lxc = callPackage ../os-specific/linux/lxc { };
lxd-image-server = callPackage ../tools/virtualization/lxd-image-server { };
lzfse = callPackage ../tools/compression/lzfse { };