diff options
Diffstat (limited to 'app-emulation/lxc')
-rw-r--r-- | app-emulation/lxc/ChangeLog | 196 | ||||
-rw-r--r-- | app-emulation/lxc/Manifest | 9 | ||||
-rw-r--r-- | app-emulation/lxc/files/lxc-0.8.0_rc1-libtoolize.patch | 89 | ||||
-rw-r--r-- | app-emulation/lxc/files/lxc.initd | 139 | ||||
-rw-r--r-- | app-emulation/lxc/files/lxc.initd.2 | 119 | ||||
-rw-r--r-- | app-emulation/lxc/lxc-0.7.5-r3.ebuild | 111 | ||||
-rw-r--r-- | app-emulation/lxc/lxc-0.8.0_rc1-r1.ebuild | 143 | ||||
-rw-r--r-- | app-emulation/lxc/metadata.xml | 21 |
8 files changed, 827 insertions, 0 deletions
diff --git a/app-emulation/lxc/ChangeLog b/app-emulation/lxc/ChangeLog new file mode 100644 index 0000000..9c49d1e --- /dev/null +++ b/app-emulation/lxc/ChangeLog @@ -0,0 +1,196 @@ +# ChangeLog for app-emulation/lxc +# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/lxc/ChangeLog,v 1.32 2012/03/27 19:01:25 flameeyes Exp $ + + 27 Mar 2012; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.8.0_rc1.ebuild, + lxc-0.7.5-r3.ebuild, lxc-0.8.0_rc1-r1.ebuild: + Fix dependencies for lxc 0.7.5; depend on a newer OpenRC to have cgroups + mounted for us in the init script. + +*lxc-0.8.0_rc1-r1 (24 Mar 2012) + + 24 Mar 2012; Diego E. Pettenò <flameeyes@gentoo.org> + +files/lxc-0.8.0_rc1-libtoolize.patch, +lxc-0.8.0_rc1-r1.ebuild: + Add a patch that libtoolizes lxc, and builds a static lxc-init executable. + +*lxc-0.8.0_rc1 (24 Mar 2012) + + 24 Mar 2012; Diego E. Pettenò <flameeyes@gentoo.org> +files/lxc.initd.2, + +lxc-0.8.0_rc1.ebuild: + Version bump; change init script as the path is changed. Assume a modern + OpenRC is used. + +*lxc-0.7.5-r3 (19 Oct 2011) + + 19 Oct 2011; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.5-r2.ebuild, + +lxc-0.7.5-r3.ebuild, files/lxc.initd: + Revision bump to fix two issues with the init script reported by Alexander Y. + Fomichev (bug #387675 and #387679). + +*lxc-0.7.5-r2 (28 Sep 2011) + + 28 Sep 2011; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.5-r1.ebuild, + +lxc-0.7.5-r2.ebuild, files/lxc.initd: + Fix init script to find the correct PID for the container's init and use a + 30-seconds timeout to see if it has stopped correctly. Thanks to Stef Simoens + for both (bug #384265). + +*lxc-0.7.5-r1 (14 Sep 2011) + + 14 Sep 2011; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.4.2.ebuild, + -lxc-0.7.5.ebuild, +lxc-0.7.5-r1.ebuild, files/lxc.initd: + Fix init script not to look for a configuration file when generating + dependencies for the base (multiplexed) init script. Revision bump to make + sure users reinstall the ebuild, and remove old. Closes bug #382519. + +*lxc-0.7.5 (05 Sep 2011) + + 05 Sep 2011; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.4.1-r1.ebuild, + +lxc-0.7.5.ebuild, files/lxc.initd: + Version bump; also includes fixes for the init script, closing bugs #379679 + and #379683 by George Georgiev. + +*lxc-0.7.4.2 (26 Jul 2011) + + 26 Jul 2011; Diego E. Pettenò <flameeyes@gentoo.org> +lxc-0.7.4.2.ebuild: + Version bump. + + 05 Jul 2011; Mark Loeser <halcy0n@gentoo.org> lxc-0.7.4.1-r1.ebuild: + Mark ~ppc64 + + 06 May 2011; Diego E. Pettenò <flameeyes@gentoo.org> files/lxc.initd: + Reset the environment when starting the container so that its environment is + picked up entirely. + +*lxc-0.7.4.1-r1 (24 Apr 2011) + + 24 Apr 2011; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.4.1.ebuild, + +lxc-0.7.4.1-r1.ebuild, files/lxc.initd: + Revision bump to improve the init script so that it searches the new location + of configuration files created by lxc-create (closes bug #364611). + +*lxc-0.7.4.1 (30 Mar 2011) + + 30 Mar 2011; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.2-r1.ebuild, + -lxc-0.7.3-r1.ebuild, -lxc-0.7.4.ebuild, +lxc-0.7.4.1.ebuild: + Version bump. + +*lxc-0.7.4 (26 Feb 2011) + + 26 Feb 2011; Diego E. Pettenò <flameeyes@gentoo.org> +lxc-0.7.4.ebuild, + files/lxc.initd: + Version bump; update warnings (configuration is now back to 0.7.2 syntax); + make sure the init script logs warnings, as otherwise you'll never know + what's going on. + + 22 Nov 2010; Diego E. Pettenò <flameeyes@gentoo.org> lxc-0.7.3-r1.ebuild: + Add a postinst note about the new location, since upstream provides no + changelog. + +*lxc-0.7.3-r1 (22 Nov 2010) + + 22 Nov 2010; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.3.ebuild, + +lxc-0.7.3-r1.ebuild: + Revision bump to make sure that the rootfs mount point is the same between + 32-bit and 64-bit systems. + +*lxc-0.7.3 (16 Nov 2010) + + 16 Nov 2010; Diego E. Pettenò <flameeyes@gentoo.org> +lxc-0.7.3.ebuild: + Version bump; this also solves bug #345259. + + 15 Oct 2010; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.1.ebuild: + Cleanup old version. + +*lxc-0.7.2-r1 (01 Aug 2010) + + 01 Aug 2010; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.7.2.ebuild, + +lxc-0.7.2-r1.ebuild, files/lxc.initd: + New init script, with more thorough verification of the config, support + for mounting the cgroup pseudo-fs, proper network dependencies, improved + start-up (verifies that the container actually started up) and stop (won't + waste time if the container was externally stopped). + +*lxc-0.7.2 (01 Aug 2010) + + 01 Aug 2010; Diego E. Pettenò <flameeyes@gentoo.org> +lxc-0.7.2.ebuild, + +files/lxc.initd, metadata.xml: + Version bump, add the long-requested init script (protected with a + USE=vanilla for those preferring not to have it). + +*lxc-0.7.1 (28 Jun 2010) + + 28 Jun 2010; Diego E. Pettenò <flameeyes@gentoo.org> + -files/lxc-0.6.4-fix-full-system.patch, + -files/lxc-0.6.4-lxc.network.pair.patch, + -files/lxc-0.6.4-move-rcfile.patch, -files/lxc-0.6.4-tty-malloc.patch, + -lxc-0.6.5.ebuild, -lxc-0.7.0.ebuild, +lxc-0.7.1.ebuild: + Version bump, remove old versions, remove stray patch files. + +*lxc-0.7.0 (20 Jun 2010) + + 20 Jun 2010; Diego E. Pettenò <flameeyes@gentoo.org> +lxc-0.7.0.ebuild: + Version bump. + + 16 Mar 2010; Diego E. Pettenò <flameeyes@gentoo.org> lxc-0.6.5.ebuild: + Avoid testing for file capabilities support: we don't support the setcap + mode for lxc and it has been dropped by 2.6.33 onward. Thanks to Vadim + Kuznetsov in bug #309267. + + 11 Mar 2010; Diego E. Pettenò <flameeyes@gentoo.org> lxc-0.6.5.ebuild: + Stop trying to remove /etc/lxc, it's no longer installed. + + 09 Mar 2010; Diego E. Pettenò <flameeyes@gentoo.org> + -lxc-0.6.4-r2.ebuild, lxc-0.6.5.ebuild, metadata.xml: + Remove old version, install man pages even with USE=-doc now that they are + shipped upstream, thanks to Allen Parker in bug #308553. Assign to + virtualization herd to have a fallback maintainer if me and Tiziano are + not available. + +*lxc-0.6.5 (30 Jan 2010) + + 30 Jan 2010; Diego E. Pettenò <flameeyes@gentoo.org> -lxc-0.6.4.ebuild, + -lxc-0.6.4-r1.ebuild, +lxc-0.6.5.ebuild: + Version bump; remove old versions. + +*lxc-0.6.4-r2 (08 Dec 2009) + + 08 Dec 2009; Sven Wegener <swegener@gentoo.org> +lxc-0.6.4-r2.ebuild, + +files/lxc-0.6.4-tty-malloc.patch: + Also include my tty malloc() fix, it prevents memory corruption. + +*lxc-0.6.4-r1 (07 Dec 2009) + + 07 Dec 2009; Diego E. Pettenò <flameeyes@gentoo.org> + -files/0.6.2-as-needed.patch, -lxc-0.6.3.ebuild, +lxc-0.6.4-r1.ebuild, + +files/lxc-0.6.4-fix-full-system.patch, + +files/lxc-0.6.4-lxc.network.pair.patch, + +files/lxc-0.6.4-move-rcfile.patch: + Backport fixes from upstream, including one to not break host systems if + lxc-start is launched in the old (pre-0.6.4) way. Thanks to Andrian Nord + in bug #296030. + + 25 Nov 2009; Diego E. Pettenò <flameeyes@gentoo.org> lxc-0.6.4.ebuild, + metadata.xml: + Enable doc USE flag by default and explicit in the description that it + enables the man pages as well. + + 24 Nov 2009; Diego E. Pettenò <flameeyes@gentoo.org> lxc-0.6.4.ebuild: + Remove autotools inherit and add the ~x86 KEYWORD. + +*lxc-0.6.4 (24 Nov 2009) + + 24 Nov 2009; Diego E. Pettenò <flameeyes@gentoo.org> +lxc-0.6.4.ebuild: + Version bump, improve checking of kernel features. + + 14 Nov 2009; Sven Wegener <swegener@gentoo.org> lxc-0.6.3.ebuild: + Add ~x86 keyword. + +*lxc-0.6.3 (24 Oct 2009) + + 24 Oct 2009; Diego E. Pettenò <flameeyes@gentoo.org> + +files/0.6.2-as-needed.patch, +lxc-0.6.3.ebuild, +metadata.xml: + Initial import of lxc; based upon dev-zero's ebuild, modified by me. It + diverges a bit from upstream, in the path used, to stay more + Gentoo-styled. Init scripts will likely be added separately. + diff --git a/app-emulation/lxc/Manifest b/app-emulation/lxc/Manifest new file mode 100644 index 0000000..c60632b --- /dev/null +++ b/app-emulation/lxc/Manifest @@ -0,0 +1,9 @@ +AUX lxc-0.8.0_rc1-libtoolize.patch 2510 RMD160 56e9a053fcd1b22d7e4424af990e4a28e85631f0 SHA1 086a5548271bad011af5f8b0bcde99a42ca51625 SHA256 44ec4271300785fa7a03384140833db48bf158253fbeec167ccf3dfe0bf8dffa +AUX lxc.initd 3746 RMD160 3a8749586c3ed6dedce7fc18d908903dfb8bf5a0 SHA1 7308443ab4c99de8604c31d2e3ef9c55a197ee05 SHA256 7c805f22792fd1b26b2ef102b4345479401c9b2f1e6f32622d66717354fb4328 +AUX lxc.initd.2 3298 RMD160 c231a4d3cb3f1aee180f29bb1327c8f212bf7c2d SHA1 d403f21e89e5a5af36d72d9d6619b4c7998efc38 SHA256 da2bdca3ec5d57e40ec06effc68e01628e3dbf44357d6e841fdcdcd21cad7499 +DIST lxc-0.7.5.tar.gz 265562 RMD160 93407be1ebf31bdcfa617e60672d9f86ba2940d1 SHA1 9712dccdcd2c10a522134fa17384a5b9e38fce0e SHA256 019ec63f250c874bf7625b1f1bf555b1a6e3a947937a4fca73100abddf829b1c +DIST lxc-0.8.0-rc1.tar.gz 301029 RMD160 3480209a82f361f11a1476d5e92d747bcf751e8b SHA1 6e9a641b3ca06ad034712ecf437588c4585ff40e SHA256 32bf83902c07387646c55de440d6d12cf61bd54c97417109c2d1ac47d17cb911 +EBUILD lxc-0.7.5-r3.ebuild 3207 RMD160 698fe796dc5a18d388beada7bc347146ac4569dc SHA1 c852f323f51bf38b724d21e2a94d46ebb1e75822 SHA256 8d0da2a85c47c849d54dc264336c96f386b95a08697387d39c0c8cae0f4db519 +EBUILD lxc-0.8.0_rc1-r1.ebuild 4133 RMD160 b1774885176a82fa57b1eb27ac563d8ef9ca45d2 SHA1 f10c8ea4f1c9fe2c9786c4610a7be7a17d7bff4b SHA256 5124bf458884956e83a208d9e1bf34195a51b4872ae3a7454c17deca561b9019 +MISC ChangeLog 7617 RMD160 d471250e0218b33274ad5aaa2070a35efaa927b4 SHA1 a4f3d35ce8b4a2aa3124f233a9c5a7413e727ed9 SHA256 0e1498ad040fdfcf3c8a639adc78b164b60b168545a43dd5e0b80d6ed9e5d11b +MISC metadata.xml 653 RMD160 d6139a7ce3a5dab18f33c7f111f2e7827c290723 SHA1 47ba631625b4f2b20e491a964e65c78dd236f6f2 SHA256 35f64761067f47ff7abd0e3f3cb57f4bab888a2546bf3267d59987505101a190 diff --git a/app-emulation/lxc/files/lxc-0.8.0_rc1-libtoolize.patch b/app-emulation/lxc/files/lxc-0.8.0_rc1-libtoolize.patch new file mode 100644 index 0000000..933f9ca --- /dev/null +++ b/app-emulation/lxc/files/lxc-0.8.0_rc1-libtoolize.patch @@ -0,0 +1,89 @@ +diff --git a/configure.ac b/configure.ac +index e8f0cb5..8c0864a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -12,11 +12,7 @@ AM_PROG_CC_C_O + AC_GNU_SOURCE + AC_CHECK_PROG(SETCAP, setcap, yes, no, $PATH$PATH_SEPARATOR/sbin) + +-AC_ARG_ENABLE([rpath], +- [AC_HELP_STRING([--disable-rpath], [do not set rpath in executables])], +- [], [enable_rpath=yes]) +- +-AM_CONDITIONAL([ENABLE_RPATH], [test "x$enable_rpath" = "xyes"]) ++LT_INIT + + AC_ARG_ENABLE([doc], + [AC_HELP_STRING([--enable-doc], [make mans (require docbook2man installed) [default=auto]])], +diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am +index 3a3816e..4c72dc9 100644 +--- a/src/lxc/Makefile.am ++++ b/src/lxc/Makefile.am +@@ -15,11 +15,9 @@ pkginclude_HEADERS = \ + state.h \ + attach.h + +-sodir=$(libdir) +-# use PROGRAMS to avoid complains from automake +-so_PROGRAMS = liblxc.so ++lib_LTLIBRARIES = liblxc-@VERSION@.la + +-liblxc_so_SOURCES = \ ++liblxc_@VERSION@_la_SOURCES = \ + arguments.c arguments.h \ + commands.c commands.h \ + start.c start.h \ +@@ -60,13 +58,10 @@ AM_CFLAGS=-I$(top_srcdir)/src \ + -DLXCPATH=\"$(LXCPATH)\" \ + -DLXCINITDIR=\"$(LXCINITDIR)\" + +-liblxc_so_CFLAGS = -fPIC -DPIC $(AM_CFLAGS) ++liblxc_@VERSION@_la_LDFLAGS = \ ++ -avoid-version + +-liblxc_so_LDFLAGS = \ +- -shared \ +- -Wl,-soname,liblxc.so.$(firstword $(subst ., ,$(VERSION))) +- +-liblxc_so_LDADD = -lutil $(CAP_LIBS) ++liblxc_@VERSION@_la_LIBADD = -lutil $(CAP_LIBS) + + bin_SCRIPTS = \ + lxc-ps \ +@@ -100,11 +95,7 @@ bin_PROGRAMS = \ + pkglibexec_PROGRAMS = \ + lxc-init + +-AM_LDFLAGS = -Wl,-E +-if ENABLE_RPATH +-AM_LDFLAGS += -Wl,-rpath -Wl,$(libdir) +-endif +-LDADD=liblxc.so @CAP_LIBS@ ++LDADD=liblxc-@VERSION@.la + + lxc_attach_SOURCES = lxc_attach.c + lxc_cgroup_SOURCES = lxc_cgroup.c +@@ -114,6 +105,7 @@ lxc_execute_SOURCES = lxc_execute.c + lxc_freeze_SOURCES = lxc_freeze.c + lxc_info_SOURCES = lxc_info.c + lxc_init_SOURCES = lxc_init.c ++lxc_init_LDFLAGS = -all-static + lxc_monitor_SOURCES = lxc_monitor.c + lxc_restart_SOURCES = lxc_restart.c + lxc_start_SOURCES = lxc_start.c +@@ -123,15 +115,6 @@ lxc_unshare_SOURCES = lxc_unshare.c + lxc_wait_SOURCES = lxc_wait.c + lxc_kill_SOURCES = lxc_kill.c + +-install-exec-local: install-soPROGRAMS +- mv $(DESTDIR)$(libdir)/liblxc.so $(DESTDIR)$(libdir)/liblxc.so.$(VERSION) +- /sbin/ldconfig -l $(DESTDIR)$(libdir)/liblxc.so.$(VERSION) +- cd $(DESTDIR)$(libdir); \ +- ln -sf liblxc.so.$(firstword $(subst ., ,$(VERSION))) liblxc.so +- +-uninstall-local: +- $(RM) $(DESTDIR)$(libdir)/liblxc.so* +- + namespace.c: setns.h + + setns.h: diff --git a/app-emulation/lxc/files/lxc.initd b/app-emulation/lxc/files/lxc.initd new file mode 100644 index 0000000..fd70c72 --- /dev/null +++ b/app-emulation/lxc/files/lxc.initd @@ -0,0 +1,139 @@ +#!/sbin/runscript +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/lxc/files/lxc.initd,v 1.9 2011/10/19 17:51:48 flameeyes Exp $ + +CONTAINER=${SVCNAME#*.} + +lxc_get_configfile() { + if [ -f "/etc/lxc/${CONTAINER}.conf" ]; then + echo "/etc/lxc/${CONTAINER}.conf" + elif [ -f "/etc/lxc/${CONTAINER}/config" ]; then + echo "/etc/lxc/${CONTAINER}/config" + else + eerror "Unable to find a suitable configuration file." + eerror "If you set up the contianer in a non-standard" + eerror "location, please set the CONFIGFILE variable." + return 1 + fi +} + +[ $CONTAINER != $SVCNAME ] && CONFIGFILE=${CONFIGFILE:-$(lxc_get_configfile)} + +lxc_get_var() { + awk 'BEGIN { FS="[ \t]*=[ \t]*" } $1 == "'$1'" { print $2; exit }' ${CONFIGFILE} +} + +cgroup_get_mount() { + mount | awk '$5 == "cgroup" { print $3; exit }' +} + +checkconfig() { + if [ ${CONTAINER} = ${SVCNAME} ]; then + eerror "You have to create an init script for each container:" + eerror " ln -s lxc /etc/init.d/lxc.container" + return 1 + fi + + # no need to output anything, the function takes care of that. + [ -z "${CONFIGFILE}" ] && return 1 + + utsname=$(lxc_get_var lxc.utsname) + if [ ${CONTAINER} != ${utsname} ]; then + eerror "You should use the same name for the service and the" + eerror "container. Right now the container is called ${utsname}" + return 1 + fi +} + +depend() { + # be quiet, since we have to run depend() also for the + # non-muxed init script, unfortunately. + checkconfig 2>/dev/null || return 0 + + config ${CONFIGFILE} + need localmount + + # find out which network interface the container is linked to, + # and then require that to be enabled, so that the + # dependencies are correct. + netif=$(lxc_get_var lxc.network.link) + [ -n "${netif}" ] && use net.${netif} +} + +start() { + checkconfig || return 1 + + # make sure that cgroup is mounted if it isn't already, this + # ensures that we can actually proceed! + cgroupmount=$(cgroup_get_mount) + if [ -z ${cgroupmount} ]; then + mkdir -p /cgroup + + if ! mount -t cgroup cgroup /cgroup; then + eerror "Unable to mount cgroup pseudo-filesystem on /cgroup" + return 1 + fi + + cgroupmount=/cgroup + fi + + rm /var/log/lxc/${CONTAINER}.log + + rootpath=$(lxc_get_var lxc.rootfs) + + # Check the format of our init and the chroot's init, to see if we + # have to use linux32 or linux64... + case $(scanelf -BF '%M#f' /sbin/init ${rootpath}/sbin/init | tr '\n' ':') in + ELFCLASS64:ELFCLASS64:) setarch=;; + ELFCLASS32:ELFCLASS32:) setarch=;; + ELFCLASS32:ELFCLASS64:) setarch=linux64;; + ELFCLASS64:ELFCLASS32:) setarch=linux32;; + esac + + ebegin "Starting ${CONTAINER}" + env -i ${setarch} $(type -p lxc-start) -l WARN -n ${CONTAINER} -f ${CONFIGFILE} -d -o /var/log/lxc/${CONTAINER}.log + sleep 0.5 + + # lxc-start -d will _always_ report a correct startup, even if it + # failed, so rather than trust that, check that the cgroup exists. + [ -d ${cgroupmount}/${CONTAINER} ] + eend $? +} + +stop() { + checkconfig || return 1 + + cgroupmount=$(cgroup_get_mount) + + if ! [ -d ${cgroupmount}/${CONTAINER} ]; then + ewarn "${CONTAINER} doesn't seem to be started." + return 0 + fi + + init_pid=$(lxc-info -n ${CONTAINER} --pid | cut -d: -f 2) + + if [ "${init_pid}" = "-1" ]; then + ewarn "${CONTAINER} doesn't seem to be running." + return 0 + fi + + ebegin "Shutting down system in ${CONTAINER}" + kill -INT ${init_pid} + eend $? + + TIMEOUT=${TIMEOUT:-30} + i=0 + while [ -n "$(pgrep -P ${init_pid})" -a $i -lt ${TIMEOUT} ]; do + sleep 1 + i=$(expr $i + 1) + done + + if [ -n "${missingprocs}" ]; then + ewarn "Something failed to properly shut down in ${CONTAINER}" + fi + + ebegin "Stopping ${CONTAINER}" + lxc-stop -n ${CONTAINER} + eend $? +} diff --git a/app-emulation/lxc/files/lxc.initd.2 b/app-emulation/lxc/files/lxc.initd.2 new file mode 100644 index 0000000..fb4edc6 --- /dev/null +++ b/app-emulation/lxc/files/lxc.initd.2 @@ -0,0 +1,119 @@ +#!/sbin/runscript +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/lxc/files/lxc.initd.2,v 1.1 2012/03/24 00:29:00 flameeyes Exp $ + +CONTAINER=${SVCNAME#*.} + +lxc_get_configfile() { + if [ -f "/etc/lxc/${CONTAINER}.conf" ]; then + echo "/etc/lxc/${CONTAINER}.conf" + elif [ -f "/etc/lxc/${CONTAINER}/config" ]; then + echo "/etc/lxc/${CONTAINER}/config" + else + eerror "Unable to find a suitable configuration file." + eerror "If you set up the contianer in a non-standard" + eerror "location, please set the CONFIGFILE variable." + return 1 + fi +} + +[ $CONTAINER != $SVCNAME ] && CONFIGFILE=${CONFIGFILE:-$(lxc_get_configfile)} + +lxc_get_var() { + awk 'BEGIN { FS="[ \t]*=[ \t]*" } $1 == "'$1'" { print $2; exit }' ${CONFIGFILE} +} + +checkconfig() { + if [ ${CONTAINER} = ${SVCNAME} ]; then + eerror "You have to create an init script for each container:" + eerror " ln -s lxc /etc/init.d/lxc.container" + return 1 + fi + + # no need to output anything, the function takes care of that. + [ -z "${CONFIGFILE}" ] && return 1 + + utsname=$(lxc_get_var lxc.utsname) + if [ ${CONTAINER} != ${utsname} ]; then + eerror "You should use the same name for the service and the" + eerror "container. Right now the container is called ${utsname}" + return 1 + fi +} + +depend() { + # be quiet, since we have to run depend() also for the + # non-muxed init script, unfortunately. + checkconfig 2>/dev/null || return 0 + + config ${CONFIGFILE} + need localmount + + # find out which network interface the container is linked to, + # and then require that to be enabled, so that the + # dependencies are correct. + netif=$(lxc_get_var lxc.network.link) + [ -n "${netif}" ] && use net.${netif} +} + +start() { + checkconfig || return 1 + rm /var/log/lxc/${CONTAINER}.log + + rootpath=$(lxc_get_var lxc.rootfs) + + # Check the format of our init and the chroot's init, to see if we + # have to use linux32 or linux64... + case $(scanelf -BF '%M#f' /sbin/init ${rootpath}/sbin/init | tr '\n' ':') in + ELFCLASS64:ELFCLASS64:) setarch=;; + ELFCLASS32:ELFCLASS32:) setarch=;; + ELFCLASS32:ELFCLASS64:) setarch=linux64;; + ELFCLASS64:ELFCLASS32:) setarch=linux32;; + esac + + ebegin "Starting ${CONTAINER}" + env -i ${setarch} $(type -p lxc-start) -l WARN -n ${CONTAINER} -f ${CONFIGFILE} -d -o /var/log/lxc/${CONTAINER}.log + sleep 0.5 + + # lxc-start -d will _always_ report a correct startup, even if it + # failed, so rather than trust that, check that the cgroup exists. + [ -d /sys/fs/cgroup/cpuset/lxc/${CONTAINER} ] + eend $? +} + +stop() { + checkconfig || return 1 + + + if ! [ -d /sys/fs/cgroup/cpuset/lxc/${CONTAINER} ]; then + ewarn "${CONTAINER} doesn't seem to be started." + return 0 + fi + + init_pid=$(lxc-info -n ${CONTAINER} --pid | cut -d: -f 2) + + if [ "${init_pid}" = "-1" ]; then + ewarn "${CONTAINER} doesn't seem to be running." + return 0 + fi + + ebegin "Shutting down system in ${CONTAINER}" + kill -INT ${init_pid} + eend $? + + TIMEOUT=${TIMEOUT:-30} + i=0 + while [ -n "$(pgrep -P ${init_pid})" -a $i -lt ${TIMEOUT} ]; do + sleep 1 + i=$(expr $i + 1) + done + + if [ -n "${missingprocs}" ]; then + ewarn "Something failed to properly shut down in ${CONTAINER}" + fi + + ebegin "Stopping ${CONTAINER}" + lxc-stop -n ${CONTAINER} + eend $? +} diff --git a/app-emulation/lxc/lxc-0.7.5-r3.ebuild b/app-emulation/lxc/lxc-0.7.5-r3.ebuild new file mode 100644 index 0000000..fd7d4d9 --- /dev/null +++ b/app-emulation/lxc/lxc-0.7.5-r3.ebuild @@ -0,0 +1,111 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/lxc/lxc-0.7.5-r3.ebuild,v 1.2 2012/03/27 19:01:25 flameeyes Exp $ + +EAPI="4" + +MY_P="${P/_/-}" + +inherit eutils linux-info versionator flag-o-matic + +DESCRIPTION="LinuX Containers userspace utilities" +HOMEPAGE="http://lxc.sourceforge.net/" +SRC_URI="http://lxc.sourceforge.net/download/lxc/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +KEYWORDS="~amd64 ~ppc64 ~x86" + +LICENSE="LGPL-3" +SLOT="0" +IUSE="examples vanilla" + +RDEPEND="sys-libs/libcap" + +DEPEND="${RDEPEND} + app-text/docbook-sgml-utils + >=sys-kernel/linux-headers-2.6.29" + +# For init script, so protect with vanilla, they are not strictly +# needed. +RDEPEND="${RDEPEND} + !vanilla? ( + sys-apps/util-linux + app-misc/pax-utils + )" + +CONFIG_CHECK="~CGROUPS + ~CPUSETS ~CGROUP_CPUACCT + ~RESOURCE_COUNTERS ~CGROUP_MEM_RES_CTLR + ~CGROUP_SCHED + + ~NAMESPACES + ~IPC_NS ~USER_NS ~PID_NS + + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUP_FREEZER + ~UTS_NS ~NET_NS + ~VETH ~MACVLAN" + +ERROR_DEVPTS_MULTIPLE_INSTANCES="CONFIG_DEVPTS_MULTIPLE_INSTANCES: needed for pts inside container" + +ERROR_CGROUP_FREEZER="CONFIG_CGROUP_FREEZER: needed to freeze containers" + +ERROR_UTS_NS="CONFIG_UTS_NS: needed to unshare hostnames and uname info" +ERROR_NET_NS="CONFIG_NET_NS: needed for unshared network" + +ERROR_VETH="CONFIG_VETH: needed for internal (host-to-container) networking" +ERROR_MACVLAN="CONFIG_MACVLAN: needed for internal (inter-container) networking" + +DOCS=(AUTHORS CONTRIBUTING MAINTAINERS NEWS TODO README doc/FAQ.txt) + +src_configure() { + append-flags -fno-strict-aliasing + + econf \ + --localstatedir=/var \ + --bindir=/usr/sbin \ + --docdir=/usr/share/doc/${PF} \ + --with-config-path=/etc/lxc \ + --with-rootfs-path=/usr/lib/lxc/rootfs \ + --with-linuxdir="${KERNEL_DIR}" \ + --enable-doc \ + $(use_enable examples) +} + +src_install() { + default + + rm -r "${D}"/usr/sbin/lxc-{setcap,ls} \ + "${D}"/usr/share/man/man1/lxc-ls.1 \ + || die "unable to remove extraenous content" + + keepdir /etc/lxc /usr/lib/lxc/rootfs + + find "${D}" -name '*.la' -delete + + use vanilla && return 0 + + # Gentoo-specific additions! + newinitd "${FILESDIR}/${PN}.initd" ${PN} + keepdir /var/log/lxc +} + +pkg_postinst() { + if ! use vanilla; then + elog "There is an init script provided with the package now; no documentation" + elog "is currently available though, so please check out /etc/init.d/lxc ." + elog "You _should_ only need to symlink it to /etc/init.d/lxc.configname" + elog "to start the container defined into /etc/lxc/configname.conf ." + elog "For further information about LXC development see" + elog "http://blog.flameeyes.eu/tag/lxc" # remove once proper doc is available + elog "" + fi + ewarn "With version 0.7.4, the mountpoint syntax came back to the one used by 0.7.2" + ewarn "and previous versions. This means you'll have to use syntax like the following" + ewarn "" + ewarn " lxc.rootfs = /container" + ewarn " lxc.mount.entry = /usr/portage /container/usr/portage none bind 0 0" + ewarn "" + ewarn "To use the Fedora, Debian and (various) Ubuntu auto-configuration scripts, you" + ewarn "will need sys-apps/yum or dev-util/debootstrap." +} diff --git a/app-emulation/lxc/lxc-0.8.0_rc1-r1.ebuild b/app-emulation/lxc/lxc-0.8.0_rc1-r1.ebuild new file mode 100644 index 0000000..2d05489 --- /dev/null +++ b/app-emulation/lxc/lxc-0.8.0_rc1-r1.ebuild @@ -0,0 +1,143 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/lxc/lxc-0.8.0_rc1-r1.ebuild,v 1.2 2012/03/27 19:01:25 flameeyes Exp $ + +EAPI="4" + +MY_P="${P/_/-}" + +inherit eutils linux-info versionator flag-o-matic autotools + +DESCRIPTION="LinuX Containers userspace utilities" +HOMEPAGE="http://lxc.sourceforge.net/" +SRC_URI="http://lxc.sourceforge.net/download/lxc/${MY_P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +KEYWORDS="~amd64 ~ppc64 ~x86 ~amd64-linux ~x86-linux" + +LICENSE="LGPL-3" +SLOT="0" +IUSE="examples vanilla legacy_cgroup_fs" + +RDEPEND="sys-libs/libcap" + +DEPEND="${RDEPEND} + app-text/docbook-sgml-utils + >=sys-kernel/linux-headers-2.6.29" + +# For init script, so protect with vanilla, they are not strictly +# needed. +RDEPEND="${RDEPEND} ( + !vanilla? ( + sys-apps/util-linux + app-misc/pax-utils + !prefix? ( + >=sys-apps/openrc-0.9.9.1 + ) + ) +)" + +CONFIG_CHECK="~CGROUPS + ~CPUSETS ~CGROUP_CPUACCT + ~RESOURCE_COUNTERS ~CGROUP_MEM_RES_CTLR + ~CGROUP_SCHED + + ~NAMESPACES + ~IPC_NS ~USER_NS ~PID_NS + + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUP_FREEZER + ~UTS_NS ~NET_NS + ~VETH ~MACVLAN + + ~POSIX_MQUEUE + ~!NETPRIO_CGROUP" + +ERROR_DEVPTS_MULTIPLE_INSTANCES="CONFIG_DEVPTS_MULTIPLE_INSTANCES: needed for pts inside container" + +ERROR_CGROUP_FREEZER="CONFIG_CGROUP_FREEZER: needed to freeze containers" + +ERROR_UTS_NS="CONFIG_UTS_NS: needed to unshare hostnames and uname info" +ERROR_NET_NS="CONFIG_NET_NS: needed for unshared network" + +ERROR_VETH="CONFIG_VETH: needed for internal (host-to-container) networking" +ERROR_MACVLAN="CONFIG_MACVLAN: needed for internal (inter-container) networking" + +ERROR_POSIX_MQUEUE="CONFIG_POSIX_MQUEUE: needed for lxc-execute command" + +ERROR_NETPRIO_CGROUP="CONFIG_NETPRIO_CGROUP: as of kernel 3.3 and lxc 0.8.0_rc1 this causes LXCs to fail booting." + +DOCS=(AUTHORS CONTRIBUTING MAINTAINERS TODO README doc/FAQ.txt) + +src_prepare() { + # for old kernel, e.g. 2.6.27, the cgroup fs do not + # have lxc subdir. + # http://sourceforge.net/mailarchive/message.php?msg_id=28987803 + if use legacy_cgroup_fs; then + for src in \ + lxc-ps.in lxc-ls.in lxc-netstat.in; do + sed -i "s,init_cgroup/lxc,init_cgroup," "src/lxc/${src}" \ + || die "sed on src/lxc/${src} failed" + done + sed -i 's,%s/lxc,%s,' src/lxc/cgroup.c \ + || die "sed on src/lxc/cgroup.c failed" + fi + + if ! use vanilla; then + epatch "${FILESDIR}/${P}-libtoolize.patch" + + eautoreconf + fi +} + +src_configure() { + append-flags -fno-strict-aliasing + + econf \ + --localstatedir="${EPREFIX}"/var \ + --bindir="${EPREFIX}"/usr/sbin \ + --docdir="${EPREFIX}"/usr/share/doc/${PF} \ + --with-config-path="${EPREFIX}"/etc/lxc \ + --with-rootfs-path="${EPREFIX}"/usr/lib/lxc/rootfs \ + --with-linuxdir="${KERNEL_DIR}" \ + --enable-doc \ + $(use_enable examples) +} + +src_install() { + default + + rm -r "${ED}"/usr/sbin/lxc-{setcap,ls} \ + "${ED}"/usr/share/man/man1/lxc-ls.1 \ + || die "unable to remove extraenous content" + + keepdir /etc/lxc /usr/lib/lxc/rootfs + + find "${ED}" -name '*.la' -delete + + use vanilla && return 0 + + # Gentoo-specific additions! + newinitd "${FILESDIR}/${PN}.initd.2" ${PN} + keepdir /var/log/lxc +} + +pkg_postinst() { + if ! use vanilla; then + elog "There is an init script provided with the package now; no documentation" + elog "is currently available though, so please check out /etc/init.d/lxc ." + elog "You _should_ only need to symlink it to /etc/init.d/lxc.configname" + elog "to start the container defined into /etc/lxc/configname.conf ." + elog "For further information about LXC development see" + elog "http://blog.flameeyes.eu/tag/lxc" # remove once proper doc is available + elog "" + fi + ewarn "With version 0.7.4, the mountpoint syntax came back to the one used by 0.7.2" + ewarn "and previous versions. This means you'll have to use syntax like the following" + ewarn "" + ewarn " lxc.rootfs = /container" + ewarn " lxc.mount.entry = /usr/portage /container/usr/portage none bind 0 0" + ewarn "" + ewarn "To use the Fedora, Debian and (various) Ubuntu auto-configuration scripts, you" + ewarn "will need sys-apps/yum or dev-util/debootstrap." +} diff --git a/app-emulation/lxc/metadata.xml b/app-emulation/lxc/metadata.xml new file mode 100644 index 0000000..694fd72 --- /dev/null +++ b/app-emulation/lxc/metadata.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>virtualization</herd> + <maintainer> + <email>flameeyes@gentoo.org</email> + </maintainer> + <maintainer> + <email>dev-zero@gentoo.org</email> + </maintainer> + + <use> + <flag name="vanilla"> + Avoid adding Gentoo Linux-specific modifications, which include + the custom init script. This is present as a flag to avoid + forcing dependencies over users that might not want have them + around as they use LXC in contexts where the init script is not + useful. + </flag> + </use> +</pkgmetadata> |