2016-03-21 02:06:19 +00:00
|
|
|
|
{ stdenv, fetchurl, fetchpatch, autoreconfHook, pkgconfig, perl, docbook2x
|
2015-08-01 01:08:04 +01:00
|
|
|
|
, docbook_xml_dtd_45, python3Packages
|
|
|
|
|
|
|
|
|
|
# Optional Dependencies
|
|
|
|
|
, libapparmor ? null, gnutls ? null, libselinux ? null, libseccomp ? null
|
|
|
|
|
, cgmanager ? null, libnih ? null, dbus ? null, libcap ? null, systemd ? null
|
2013-10-03 16:08:56 +01:00
|
|
|
|
}:
|
2010-10-26 22:11:47 +01:00
|
|
|
|
|
2015-03-27 00:54:25 +00:00
|
|
|
|
let
|
|
|
|
|
enableCgmanager = cgmanager != null && libnih != null && dbus != null;
|
|
|
|
|
in
|
|
|
|
|
with stdenv.lib;
|
2012-10-20 11:10:28 +01:00
|
|
|
|
stdenv.mkDerivation rec {
|
2015-11-01 12:08:56 +00:00
|
|
|
|
name = "lxc-${version}";
|
2017-10-14 13:43:27 +01:00
|
|
|
|
version = "2.1.0";
|
2010-10-26 22:11:47 +01:00
|
|
|
|
|
2015-11-01 12:08:56 +00:00
|
|
|
|
src = fetchurl {
|
|
|
|
|
url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
|
2017-10-14 13:43:27 +01:00
|
|
|
|
sha256 = "1qld0gi19mximxm0qyr6vzav32gymhc7fvp0bzwv37j0b8q0fi1r";
|
2010-10-26 22:11:47 +01:00
|
|
|
|
};
|
|
|
|
|
|
2015-08-01 01:08:04 +01:00
|
|
|
|
nativeBuildInputs = [
|
|
|
|
|
autoreconfHook pkgconfig perl docbook2x python3Packages.wrapPython
|
|
|
|
|
];
|
2015-03-27 00:54:25 +00:00
|
|
|
|
buildInputs = [
|
2015-08-01 01:08:04 +01:00
|
|
|
|
libapparmor gnutls libselinux libseccomp cgmanager libnih dbus libcap
|
2017-10-14 13:43:27 +01:00
|
|
|
|
python3Packages.python python3Packages.setuptools systemd
|
2015-03-27 00:54:25 +00:00
|
|
|
|
];
|
2011-09-23 12:16:10 +01:00
|
|
|
|
|
2016-03-21 02:06:19 +00:00
|
|
|
|
patches = [
|
|
|
|
|
./support-db2x.patch
|
2017-11-09 01:21:00 +00:00
|
|
|
|
# Fix build error against glibc 2.26
|
|
|
|
|
(fetchpatch {
|
|
|
|
|
url = "https://github.com/lxc/lxc/commit/"
|
|
|
|
|
+ "180c477a326ce85632249ff16990e8c29db1b6fa.patch";
|
|
|
|
|
sha256 = "05jkiiixxk9ibj1fwzmy56rkkign28bd9mrmgiz12g92r2qahm2z";
|
|
|
|
|
})
|
2016-03-21 02:06:19 +00:00
|
|
|
|
];
|
2011-09-26 09:12:10 +01:00
|
|
|
|
|
2017-06-20 01:01:38 +01:00
|
|
|
|
postPatch = ''
|
|
|
|
|
sed -i '/chmod u+s/d' src/lxc/Makefile.am
|
|
|
|
|
'';
|
|
|
|
|
|
2015-03-27 00:54:25 +00:00
|
|
|
|
XML_CATALOG_FILES = "${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml";
|
2010-10-26 22:11:47 +01:00
|
|
|
|
|
2017-02-24 12:39:19 +00:00
|
|
|
|
# FIXME
|
|
|
|
|
# glibc 2.25 moved major()/minor() to <sys/sysmacros.h>.
|
|
|
|
|
# this commit should detect this: https://github.com/lxc/lxc/pull/1388/commits/af6824fce9c9536fbcabef8d5547f6c486f55fdf
|
|
|
|
|
# However autotools checks if mkdev is still defined in <sys/types.h> runs before
|
|
|
|
|
# checking if major()/minor() is defined there. The mkdev check succeeds with
|
|
|
|
|
# a warning and the check which should set MAJOR_IN_SYSMACROS is skipped.
|
|
|
|
|
NIX_CFLAGS_COMPILE = [ "-DMAJOR_IN_SYSMACROS" ];
|
|
|
|
|
|
2013-04-15 10:15:55 +01:00
|
|
|
|
configureFlags = [
|
|
|
|
|
"--localstatedir=/var"
|
2015-03-27 00:54:25 +00:00
|
|
|
|
"--sysconfdir=/etc"
|
2015-08-01 01:08:04 +01:00
|
|
|
|
"--disable-api-docs"
|
2015-12-16 12:11:24 +00:00
|
|
|
|
"--with-init-script=none"
|
|
|
|
|
"--with-distro=nixos" # just to be sure it is "unknown"
|
2015-03-27 00:54:25 +00:00
|
|
|
|
] ++ optional (libapparmor != null) "--enable-apparmor"
|
2015-08-01 01:08:04 +01:00
|
|
|
|
++ optional (libselinux != null) "--enable-selinux"
|
2015-03-27 00:54:25 +00:00
|
|
|
|
++ optional (libseccomp != null) "--enable-seccomp"
|
|
|
|
|
++ optional (libcap != null) "--enable-capabilities"
|
|
|
|
|
++ [
|
2015-08-01 01:08:04 +01:00
|
|
|
|
"--disable-examples"
|
|
|
|
|
"--enable-python"
|
|
|
|
|
"--disable-lua"
|
|
|
|
|
"--enable-bash"
|
|
|
|
|
(if doCheck then "--enable-tests" else "--disable-tests")
|
|
|
|
|
"--with-rootfs-path=/var/lib/lxc/rootfs"
|
2013-04-15 10:15:55 +01:00
|
|
|
|
];
|
2011-05-08 19:46:55 +01:00
|
|
|
|
|
2015-08-01 01:08:04 +01:00
|
|
|
|
doCheck = false;
|
|
|
|
|
|
2015-05-20 07:48:55 +01:00
|
|
|
|
installFlags = [
|
|
|
|
|
"localstatedir=\${TMPDIR}"
|
|
|
|
|
"sysconfdir=\${out}/etc"
|
|
|
|
|
"sysconfigdir=\${out}/etc/default"
|
2016-11-28 12:47:46 +00:00
|
|
|
|
"bashcompdir=\${out}/share/bash-completion/completions"
|
2015-05-20 07:48:55 +01:00
|
|
|
|
"READMEdir=\${TMPDIR}/var/lib/lxc/rootfs"
|
|
|
|
|
"LXCPATH=\${TMPDIR}/var/lib/lxc"
|
|
|
|
|
];
|
2015-03-27 00:54:25 +00:00
|
|
|
|
|
2015-08-01 01:08:04 +01:00
|
|
|
|
postInstall = ''
|
|
|
|
|
wrapPythonPrograms
|
|
|
|
|
'';
|
2015-05-17 11:50:01 +01:00
|
|
|
|
|
2010-10-26 22:11:47 +01:00
|
|
|
|
meta = {
|
2017-08-01 21:03:30 +01:00
|
|
|
|
homepage = https://linuxcontainers.org/;
|
2016-06-20 11:53:46 +01:00
|
|
|
|
description = "Userspace tools for Linux Containers, a lightweight virtualization system";
|
2015-03-27 00:54:25 +00:00
|
|
|
|
license = licenses.lgpl21Plus;
|
2011-09-26 09:12:10 +01:00
|
|
|
|
|
|
|
|
|
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 Linux’s existing process management infrastructure.
|
|
|
|
|
'';
|
|
|
|
|
|
2015-03-27 00:54:25 +00:00
|
|
|
|
platforms = platforms.linux;
|
2016-05-16 21:30:20 +01:00
|
|
|
|
maintainers = with maintainers; [ wkennington globin fpletz ];
|
2010-10-26 22:11:47 +01:00
|
|
|
|
};
|
|
|
|
|
}
|