depot/third_party/nixpkgs/pkgs/os-specific/linux/lxc/default.nix
Default email 87f9c27ba9 Project import generated by Copybara.
GitOrigin-RevId: fe2ecaf706a5907b5e54d979fbde4924d84b65fc
2023-04-12 14:48:02 +02:00

106 lines
3.1 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ 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
}:
with lib;
stdenv.mkDerivation rec {
pname = "lxc";
version = "4.0.12";
src = fetchurl {
url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
sha256 = "1vyk2j5w9gfyh23w3ar09cycyws16mxh3clbb33yhqzwcs1jy96v";
};
nativeBuildInputs = [
autoreconfHook pkg-config perl docbook2x python3Packages.wrapPython
];
buildInputs = [
pam libapparmor gnutls libselinux libseccomp libcap
python3Packages.python python3Packages.setuptools systemd
];
patches = [
./support-db2x.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" ];
})
];
postPatch = ''
sed -i '/chmod u+s/d' src/lxc/Makefile.am
'';
XML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml";
configureFlags = [
"--enable-pam"
"--localstatedir=/var"
"--sysconfdir=/etc"
"--disable-api-docs"
"--with-init-script=none"
"--with-distro=nixos" # just to be sure it is "unknown"
] ++ optional (libapparmor != null) "--enable-apparmor"
++ optional (libselinux != null) "--enable-selinux"
++ optional (libseccomp != null) "--enable-seccomp"
++ 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
'';
meta = {
homepage = "https://linuxcontainers.org/";
description = "Userspace tools for Linux Containers, a lightweight virtualization system";
license = licenses.lgpl21Plus;
longDescription = ''
LXC is the userspace control package for Linux Containers, a
lightweight virtual system mechanism sometimes described as
"chroot on steroids". LXC builds up from chroot to implement
complete virtual systems, adding resource management and isolation
mechanisms to Linuxs existing process management infrastructure.
'';
platforms = platforms.linux;
maintainers = with maintainers; [ ];
};
}