mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-20 20:03:24 +00:00
lxc: 4.0.12 -> 5.0.3
This commit is contained in:
parent
628b80515a
commit
46974ccd23
153
pkgs/os-specific/linux/lxc/add-meson-options.patch
Normal file
153
pkgs/os-specific/linux/lxc/add-meson-options.patch
Normal file
@ -0,0 +1,153 @@
|
||||
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')
|
@ -1,90 +1,71 @@
|
||||
{ lib, stdenv, fetchurl, autoreconfHook, pkg-config, perl, docbook2x
|
||||
, docbook_xml_dtd_45, python3Packages, pam, fetchpatch
|
||||
|
||||
# Optional Dependencies
|
||||
, libapparmor ? null, gnutls ? null, libselinux ? null, libseccomp ? null
|
||||
, libcap ? null, systemd ? null
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
docbook2x,
|
||||
libapparmor,
|
||||
libcap,
|
||||
libseccomp,
|
||||
libselinux,
|
||||
meson,
|
||||
ninja,
|
||||
nix-update-script,
|
||||
nixosTests,
|
||||
openssl,
|
||||
pam,
|
||||
pkg-config,
|
||||
systemd,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lxc";
|
||||
version = "4.0.12";
|
||||
version = "5.0.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
|
||||
sha256 = "1vyk2j5w9gfyh23w3ar09cycyws16mxh3clbb33yhqzwcs1jy96v";
|
||||
src = fetchFromGitHub {
|
||||
owner = "lxc";
|
||||
repo = "lxc";
|
||||
rev = "refs/tags/lxc-${version}";
|
||||
hash = "sha256-lnLmLgWXt3pI2S+4OeHRlPP5gui7S7ZXXClFt+n/8sY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook pkg-config perl docbook2x python3Packages.wrapPython
|
||||
docbook2x
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
pam libapparmor gnutls libselinux libseccomp libcap
|
||||
python3Packages.python python3Packages.setuptools systemd
|
||||
libapparmor
|
||||
libcap
|
||||
libseccomp
|
||||
libselinux
|
||||
openssl
|
||||
pam
|
||||
systemd
|
||||
];
|
||||
|
||||
patches = [
|
||||
./support-db2x.patch
|
||||
patches = [ ./add-meson-options.patch ];
|
||||
|
||||
# Backport of https://github.com/lxc/lxc/pull/4179 for glibc-2.36 build
|
||||
(fetchpatch {
|
||||
url = "https://github.com/lxc/lxc/commit/c1115e1503bf955c97f4cf3b925a6a9f619764c3.patch";
|
||||
sha256 = "sha256-aC1XQesRJfkyQnloB3NvR4p/1WITrqkGYzw50PDxDrs=";
|
||||
excludes = [ "meson.build" ];
|
||||
})
|
||||
mesonFlags = [
|
||||
"-Dinstall-init-files=false"
|
||||
"-Dinstall-state-dirs=false"
|
||||
"-Dspecfile=false"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -i '/chmod u+s/d' src/lxc/Makefile.am
|
||||
'';
|
||||
enableParallelBuilding = true;
|
||||
|
||||
XML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml";
|
||||
doCheck = true;
|
||||
|
||||
configureFlags = [
|
||||
"--enable-pam"
|
||||
"--localstatedir=/var"
|
||||
"--sysconfdir=/etc"
|
||||
"--disable-api-docs"
|
||||
"--with-init-script=none"
|
||||
"--with-distro=nixos" # just to be sure it is "unknown"
|
||||
] ++ lib.optional (libapparmor != null) "--enable-apparmor"
|
||||
++ lib.optional (libselinux != null) "--enable-selinux"
|
||||
++ lib.optional (libseccomp != null) "--enable-seccomp"
|
||||
++ lib.optional (libcap != null) "--enable-capabilities"
|
||||
++ [
|
||||
"--disable-examples"
|
||||
"--enable-python"
|
||||
"--disable-lua"
|
||||
"--enable-bash"
|
||||
(if doCheck then "--enable-tests" else "--disable-tests")
|
||||
"--with-rootfs-path=/var/lib/lxc/rootfs"
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
installFlags = [
|
||||
"localstatedir=\${TMPDIR}"
|
||||
"sysconfdir=\${out}/etc"
|
||||
"sysconfigdir=\${out}/etc/default"
|
||||
"bashcompdir=\${out}/share/bash-completion/completions"
|
||||
"READMEdir=\${TMPDIR}/var/lib/lxc/rootfs"
|
||||
"LXCPATH=\${TMPDIR}/var/lib/lxc"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapPythonPrograms
|
||||
|
||||
completions=(
|
||||
lxc-attach lxc-cgroup lxc-console lxc-destroy lxc-device lxc-execute
|
||||
lxc-freeze lxc-info lxc-monitor lxc-snapshot lxc-stop lxc-unfreeze
|
||||
)
|
||||
pushd $out/share/bash-completion/completions/
|
||||
mv lxc lxc-start
|
||||
for completion in ''${completions[@]}; do
|
||||
ln -sfn lxc-start $completion
|
||||
done
|
||||
popd
|
||||
'';
|
||||
passthru = {
|
||||
tests.incus = nixosTests.incus.container;
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"-vr"
|
||||
"lxc-(.*)"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://linuxcontainers.org/";
|
||||
|
@ -10731,9 +10731,7 @@ with pkgs;
|
||||
|
||||
lwc = callPackage ../tools/misc/lwc { };
|
||||
|
||||
lxc = callPackage ../os-specific/linux/lxc {
|
||||
autoreconfHook = buildPackages.autoreconfHook269;
|
||||
};
|
||||
lxc = callPackage ../os-specific/linux/lxc { };
|
||||
lxcfs = callPackage ../os-specific/linux/lxcfs { };
|
||||
|
||||
lxd = callPackage ../tools/admin/lxd/wrapper.nix { };
|
||||
|
Loading…
Reference in New Issue
Block a user