diff options
Diffstat (limited to 'app-containers')
-rw-r--r-- | app-containers/Manifest.gz | bin | 8739 -> 8734 bytes | |||
-rw-r--r-- | app-containers/devcontainer/Manifest | 4 | ||||
-rw-r--r-- | app-containers/devcontainer/devcontainer-0.60.0.ebuild (renamed from app-containers/devcontainer/devcontainer-0.57.0.ebuild) | 2 | ||||
-rw-r--r-- | app-containers/incus/Manifest | 3 | ||||
-rw-r--r-- | app-containers/incus/incus-6.1.ebuild | 219 | ||||
-rw-r--r-- | app-containers/lxc/Manifest | 1 | ||||
-rw-r--r-- | app-containers/lxc/lxc-6.0.0-r2.ebuild | 172 |
7 files changed, 398 insertions, 3 deletions
diff --git a/app-containers/Manifest.gz b/app-containers/Manifest.gz Binary files differindex 435c5e1df9d4..21dddd7ac90b 100644 --- a/app-containers/Manifest.gz +++ b/app-containers/Manifest.gz diff --git a/app-containers/devcontainer/Manifest b/app-containers/devcontainer/Manifest index 04e0575020da..20d708f82868 100644 --- a/app-containers/devcontainer/Manifest +++ b/app-containers/devcontainer/Manifest @@ -1,7 +1,7 @@ -DIST devcontainer-0.57.0.tgz 617323 BLAKE2B 74dd49c0e741715e34dce79cdc73617f4bed68b87f11fafa403a9548b334ecff1af8e2e3705c57c31ca057e12b19094a75a3a3e339cac3b6d005e00e7e08b433 SHA512 7b5680d003630af459d5bf12f6873ea990a67b5f16888317a27d7197799d9ff1cd802834e669c4e1c601780fa8a07c38ec4dab77e7bf64de08406403e163e954 DIST devcontainer-0.58.0.tgz 618922 BLAKE2B e0962e273f6a28d4c6897523b565634d7849a37ed5866e47430080ac8e42026e888ba2a13cbcbb62dd6974f753383882b66b0129d1e7aad8321c938c58ffec58 SHA512 57beb86d4fcefddbaa4f13612cca0538b2449932164c062082a8ef62f3a7bd57ed6f7bb09e5954fe479c6da9caebc0b3075783fb3ba3391381ab7ce9027e5f08 DIST devcontainer-0.59.1.tgz 619278 BLAKE2B 793ac8856814cb35ad668b496b12c8bf6e92277014ca2efd245cdebd5b032cbd574017bf758fcb92a675d7bbd07c966bb7c4344b8cb774ad11c02a4daac91eca SHA512 27bfd94b2a34815f90579ed136b6c032dc5f3b5172dfa5c124c151ef5b156038afdbc7b2bf189314c6f910bc7182117977b42712a172ca44af20c8ba481762cf -EBUILD devcontainer-0.57.0.ebuild 871 BLAKE2B 1233ec4b1f837432ba4260d0dcf5153a551fe088b6dd2367fc8223819dfe5682a0314d6db0ec590188fa26fe0e6ed3749f54cf9aff6366b39a81e9dc1b35ede9 SHA512 7dc3111668960995c21f17ebfc583035e23b58560a26289390a8da2050270b2d66e6d7e4e8bdf465b2aa712ace6c9fd57943aecaacd27f90a485b2fb45cd5d5e +DIST devcontainer-0.60.0.tgz 619324 BLAKE2B 8ef60c2a195b24e850ce923b79983a2514645587a2ef9739a05ce4440140595dad3d87896e6997455daf2afd3d09b8da77d9c304a3ce305b4ab6edb2ea41ab9a SHA512 f1edba9bbb8d635db492daa52d6b38063d426b7860bd9d56327ecf1b66a3777374ee1cc96cff080fe6af7e384e64e608516412c71eb1437c82938868f6389439 EBUILD devcontainer-0.58.0.ebuild 871 BLAKE2B 1233ec4b1f837432ba4260d0dcf5153a551fe088b6dd2367fc8223819dfe5682a0314d6db0ec590188fa26fe0e6ed3749f54cf9aff6366b39a81e9dc1b35ede9 SHA512 7dc3111668960995c21f17ebfc583035e23b58560a26289390a8da2050270b2d66e6d7e4e8bdf465b2aa712ace6c9fd57943aecaacd27f90a485b2fb45cd5d5e EBUILD devcontainer-0.59.1.ebuild 872 BLAKE2B a49d606609bab843fc1f6f8edecdaa2b837a385f6583d99e97c07168795f8b41057d912fc0b82c5afbb2861efeef9e7fb0fa5b3752fd66f7211f51c31aa10519 SHA512 1d2925d3544b438ef352bf3b386ba65686c888c9cdc5841e4ba280b457ead591c1f91d9ad06e6e4db41d5d9fe0094c1b8b7ab2112730eab88ff7921fefed937b +EBUILD devcontainer-0.60.0.ebuild 872 BLAKE2B a49d606609bab843fc1f6f8edecdaa2b837a385f6583d99e97c07168795f8b41057d912fc0b82c5afbb2861efeef9e7fb0fa5b3752fd66f7211f51c31aa10519 SHA512 1d2925d3544b438ef352bf3b386ba65686c888c9cdc5841e4ba280b457ead591c1f91d9ad06e6e4db41d5d9fe0094c1b8b7ab2112730eab88ff7921fefed937b MISC metadata.xml 886 BLAKE2B 6255ba2337a21bd814e0472648cf4eb78b7c3e6ca6ead9f154cc70b662b7721ddc62137f1ebf542123c7d716e0ff94527f7a1aa99786446c7ffd36bbbf9c9efe SHA512 6dd2c48ee1dc5b722768780f20c32dd424af327fe7a580eb4f8ce31712dff211ecc9ebe1eae4ca22ec3a90ef5b3a6690407b24fc11c45000a7d986871956d407 diff --git a/app-containers/devcontainer/devcontainer-0.57.0.ebuild b/app-containers/devcontainer/devcontainer-0.60.0.ebuild index 10d7f50fc167..991cd956e37b 100644 --- a/app-containers/devcontainer/devcontainer-0.57.0.ebuild +++ b/app-containers/devcontainer/devcontainer-0.60.0.ebuild @@ -12,7 +12,7 @@ S="${WORKDIR}/package" LICENSE="MIT" SLOT="0" -KEYWORDS="amd64 ~x86" +KEYWORDS="~amd64 ~x86" RDEPEND=" net-libs/nodejs diff --git a/app-containers/incus/Manifest b/app-containers/incus/Manifest index 20ab18e01ce8..62113d7c8aaa 100644 --- a/app-containers/incus/Manifest +++ b/app-containers/incus/Manifest @@ -9,5 +9,8 @@ AUX incus-user-0.4.service 247 BLAKE2B 97c181da8dc7c91e8effec89a8bac17b626e8e2f3 AUX incus-user-0.4.socket 204 BLAKE2B df26315099820f77fc875c1619078c0b3adc1cf131f4a2c5f3b6f91609bc07a4535d9fb24d20f91c77b0de7f8334442ba17c704310f35ccbc2864a6148f78389 SHA512 a2541cc29d87e96d6a2ebec1cb72dd5779648b4d739657cf123590c23ae00b8022ebf68a7a2af24cfdb9fcb89a05ec87ecd15e37f3160c7ceedf23f3a2459950 DIST incus-6.0.0.tar.xz 11839792 BLAKE2B 135574e6f19262992bb068a3c0a0045c192699503e417eb861e00a974e631fd869485eb96238d1dbe4712e789367d31afae1c62bade2a8b75f7e9a7620547e74 SHA512 eb6d784a535d487bd85b3e8272d7cddc23f2ed98ca2b3e2f19c038b4a6f910d4030822424154489adef7a688757905927309d25f6d1ff621d99d678fe6aeae2b DIST incus-6.0.0.tar.xz.asc 833 BLAKE2B f35c38f886290ff08e017cd54e8019c43bfbf1f9c84b26ede2cfa78acbe4047af4314465e77d6e900f296552d5ac8f8c07d26a11920bff937fbb8a0a910efb0d SHA512 0360520752fad3e95807d09e4fd6d60c96a202d0dbb61621925abd75aa801b6d573abbece3179a8906bdc47e96ddec4a746607ce2d10dcc1a76d0afd459cbf81 +DIST incus-6.1.tar.xz 11594436 BLAKE2B 086d5fbc56a7867a5be0ce7fd5c7292fc889611536f99ad8cdcd47168ebfe7c836952b80d6a4846feae7d3bc2be1f18fe1df2a4ef0ec7abbd4ab78d2d4e3cab0 SHA512 1e4b07801789742597fedb2059fc24153a451d2f680c04722b2c025bc2a2792314d0cb32478dd97c91350388009eb67e4d2de504634c2bda38fac2c660a2873e +DIST incus-6.1.tar.xz.asc 833 BLAKE2B 6c223614a0fec661596b2a61a3c640b43bed5e861304dca6fab07b81595ba3ba4aab94a7087522db51983767d35c6a5945afe852a08d4d4693d15c7818b75658 SHA512 a4329a2425c094cf1e4f451682dd839a51cc072e0cee89932cc3e2fcbc3d6fddabc1fdf7d3f6f61c5ae95299a91c3dcf05f502b7a42135a9d2ed215932bfa51b EBUILD incus-6.0.0-r1.ebuild 6229 BLAKE2B dd8718d50a4945c2c441bacb460d284ed74f5b165900a83d2c8eab5dc4d5659dd2fcc72e837ee34c64e1fa601ec72d0a4fde89041e24765a495a4660f6ed93ac SHA512 7a55a66ff408d76ad702d3645cca4211a931d9b127ed94912650f1c4595e7b38962cf46098ae9b03c3f3709d317a9eeea243ade6e2f010c29a64b917fecf5ab5 +EBUILD incus-6.1.ebuild 6230 BLAKE2B 84fe8adf62a9e2790de3dcef052bd5bd77e251b7040f516d041732ae12ffa389b3b50133c5b884af7cbe212a4b7ca930a32a072780b5a4fba6dfbed0e61d0e88 SHA512 3f07dae0bfee0faa020d9b308c6ad8dab9be18c8cde84603cc19d9e25251269a4623e203040ad21ac676eca970a8e2680e9e0225a12d667484378b51813597be MISC metadata.xml 1597 BLAKE2B 6e8ceafa8dca7d49fa754470c9645e11946d3419135ec3a12581e227945b64a13612a7eb3e833027bbf6d3c795acbaced979ba80f00a9e36f6831fb6111dd2d2 SHA512 d3c0ec128f715627addc5be758c87bea808626f9d9ada75aeac9be9a84039b68385ae65edfb5d57951ff4e7352565fbba040035da82ce8eaffcca585811d3577 diff --git a/app-containers/incus/incus-6.1.ebuild b/app-containers/incus/incus-6.1.ebuild new file mode 100644 index 000000000000..79a1af3f07c5 --- /dev/null +++ b/app-containers/incus/incus-6.1.ebuild @@ -0,0 +1,219 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit go-module linux-info optfeature systemd toolchain-funcs verify-sig + +DESCRIPTION="Modern, secure and powerful system container and virtual machine manager" +HOMEPAGE="https://linuxcontainers.org/incus/introduction/ https://github.com/lxc/incus" +SRC_URI="https://linuxcontainers.org/downloads/incus/${P}.tar.xz + verify-sig? ( https://linuxcontainers.org/downloads/incus/${P}.tar.xz.asc )" + +LICENSE="Apache-2.0 BSD LGPL-3 MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm64" +IUSE="apparmor fuidshift nls" + +DEPEND="acct-group/incus + acct-group/incus-admin + app-arch/xz-utils + >=app-containers/lxc-5.0.0:=[apparmor?,seccomp(+)] + dev-db/sqlite:3 + >=dev-libs/cowsql-1.15.6 + dev-libs/lzo + >=dev-libs/raft-0.22.1:=[lz4] + >=dev-util/xdelta-3.0[lzma(+)] + net-dns/dnsmasq[dhcp] + sys-libs/libcap + virtual/udev" +RDEPEND="${DEPEND} + fuidshift? ( !app-containers/lxd ) + net-firewall/ebtables + net-firewall/iptables + sys-apps/iproute2 + sys-fs/fuse:* + >=sys-fs/lxcfs-5.0.0 + sys-fs/squashfs-tools[lzma] + virtual/acl" +BDEPEND=">=dev-lang/go-1.21 + nls? ( sys-devel/gettext ) + verify-sig? ( sec-keys/openpgp-keys-linuxcontainers )" + +CONFIG_CHECK=" + ~CGROUPS + ~IPC_NS + ~NET_NS + ~PID_NS + + ~SECCOMP + ~USER_NS + ~UTS_NS + + ~KVM + ~MACVTAP + ~VHOST_VSOCK +" + +ERROR_IPC_NS="CONFIG_IPC_NS is required." +ERROR_NET_NS="CONFIG_NET_NS is required." +ERROR_PID_NS="CONFIG_PID_NS is required." +ERROR_SECCOMP="CONFIG_SECCOMP is required." +ERROR_UTS_NS="CONFIG_UTS_NS is required." + +WARNING_KVM="CONFIG_KVM and CONFIG_KVM_AMD/-INTEL is required for virtual machines." +WARNING_MACVTAP="CONFIG_MACVTAP is required for virtual machines." +WARNING_VHOST_VSOCK="CONFIG_VHOST_VSOCK is required for virtual machines." + +# Go magic. +QA_PREBUILT="/usr/bin/incus + /usr/bin/lxc-to-incus + /usr/bin/incus-agent + /usr/bin/incus-benchmark + /usr/bin/incus-migrate + /usr/sbin/fuidshift + /usr/sbin/lxd-to-incus + /usr/sbin/incusd" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/linuxcontainers.asc + +# The testsuite must be run as root. +# make: *** [Makefile:156: check] Error 1 +RESTRICT="test" + +GOPATH="${S}/_dist" + +src_unpack() { + verify-sig_src_unpack + go-module_src_unpack +} + +src_prepare() { + export GOPATH="${S}/_dist" + + default + + sed -i \ + -e "s:\./configure:./configure --prefix=/usr --libdir=${EPREFIX}/usr/lib/incus:g" \ + -e "s:make:make ${MAKEOPTS}:g" \ + Makefile || die + + # Fix hardcoded ovmf file path, see bug 763180 + sed -i \ + -e "s:/usr/share/OVMF:/usr/share/edk2-ovmf:g" \ + -e "s:OVMF_VARS.ms.fd:OVMF_VARS.fd:g" \ + doc/environment.md \ + internal/server/apparmor/instance.go \ + internal/server/apparmor/instance_qemu.go \ + internal/server/instance/drivers/driver_qemu.go || die "Failed to fix hardcoded ovmf paths." + + # Fix hardcoded virtfs-proxy-helper file path, see bug 798924 + sed -i \ + -e "s:/usr/lib/qemu/virtfs-proxy-helper:/usr/libexec/virtfs-proxy-helper:g" \ + internal/server/device/device_utils_disk.go || die "Failed to fix virtfs-proxy-helper path." + + cp "${FILESDIR}"/incus-0.4.service "${T}"/incus.service || die + if use apparmor; then + sed -i \ + '/^EnvironmentFile=.*/a ExecStartPre=\/usr\/libexec\/lxc\/lxc-apparmor-load' \ + "${T}"/incus.service || die + fi + + # Disable -Werror's from go modules. + find "${S}" -name "cgo.go" -exec sed -i "s/ -Werror / /g" {} + || die +} + +src_configure() { :; } + +src_compile() { + export GOPATH="${S}/_dist" + export CGO_LDFLAGS_ALLOW="-Wl,-z,now" + + for k in incus-benchmark incus-simplestreams incus-user incus lxc-to-incus lxd-to-incus ; do + ego install -v -x "${S}/cmd/${k}" + done + + if use fuidshift ; then + ego install -v -x "${S}/cmd/fuidshift" + fi + + ego install -v -x -tags libsqlite3 "${S}"/cmd/incusd + + # Needs to be built statically + CGO_ENABLED=0 go install -v -tags netgo "${S}"/cmd/incus-migrate + CGO_ENABLED=0 go install -v -tags agent,netgo "${S}"/cmd/incus-agent + + use nls && emake build-mo +} + +src_test() { + emake check +} + +src_install() { + export GOPATH="${S}/_dist" + + if tc-is-cross-compiler ; then + local bindir="_dist/bin/linux_${GOARCH}" + else + local bindir="_dist/bin" + fi + + newsbin "${FILESDIR}"/incus-startup-0.4.sh incus-startup + + # Admin tools + for l in incusd incus-user lxd-to-incus ; do + dosbin ${bindir}/${l} + done + + # User tools + for m in incus-agent incus-benchmark incus-migrate incus-simplestreams incus lxc-to-incus ; do + dobin ${bindir}/${m} + done + + # fuidshift, should be moved under admin tools at some point + if use fuidshift ; then + dosbin ${bindir}/fuidshift + fi + + newconfd "${FILESDIR}"/incus-0.4.confd incus + newinitd "${FILESDIR}"/incus-0.4.initd incus + newinitd "${FILESDIR}"/incus-user-0.4.initd incus-user + + systemd_dounit "${T}"/incus.service + systemd_newunit "${FILESDIR}"/incus-0.4.socket incus.socket + systemd_newunit "${FILESDIR}"/incus-startup-0.4.service incus-startup.service + systemd_newunit "${FILESDIR}"/incus-user-0.4.service incus-user.service + systemd_newunit "${FILESDIR}"/incus-user-0.4.socket incus-user.socket + + if ! tc-is-cross-compiler; then + # Generate and install shell completion files. + mkdir -p "${D}"/usr/share/{bash-completion/completions/,fish/vendor_completions.d/,zsh/site-functions/} || die + "${bindir}"/incus completion bash > "${D}"/usr/share/bash-completion/completions/incus || die + "${bindir}"/incus completion fish > "${D}"/usr/share/fish/vendor_completions.d/incus.fish || die + "${bindir}"/incus completion zsh > "${D}"/usr/share/zsh/site-functions/_incus || die + else + ewarn "Shell completion files not installed! Install them manually with incus completion --help" + fi + + dodoc AUTHORS + dodoc -r doc/* + use nls && domo po/*.mo +} + +pkg_postinst() { + elog + elog "Please see" + elog " https://wiki.gentoo.org/wiki/Incus" + elog " https://wiki.gentoo.org/wiki/Incus#Migrating_from_LXD" + elog + optfeature "virtual machine support" app-cdr/cdrtools app-emulation/qemu[spice,usbredir,virtfs] + optfeature "btrfs storage backend" sys-fs/btrfs-progs + optfeature "ipv6 support" net-dns/dnsmasq[ipv6] + optfeature "full incus-migrate support" net-misc/rsync + optfeature "lvm2 storage backend" sys-fs/lvm2 + optfeature "zfs storage backend" sys-fs/zfs + elog + elog "Be sure to add your local user to the incus group." + elog +} diff --git a/app-containers/lxc/Manifest b/app-containers/lxc/Manifest index a5bdfca199b9..c4383fd2144b 100644 --- a/app-containers/lxc/Manifest +++ b/app-containers/lxc/Manifest @@ -9,4 +9,5 @@ DIST lxc-6.0.0.tar.gz 964053 BLAKE2B d41bcab4e225c139d4d41df5291717e4d196fe3b48d DIST lxc-6.0.0.tar.gz.asc 833 BLAKE2B d2cda07e605d64dbb650506cf536c545e2c5746973c834f4d4f409064e2ba8265040b13a60e124e30e154bbc5a51c704bad0fa2ff5530effddfa449618aa60a7 SHA512 4e56ffa7395877714f993d9c54cf8b9df91cdced96c5a609b63f5e3896a0a51db8ba6f99bf2360d60af202df79123deea72215bf854d8798d3af361a4888445e EBUILD lxc-5.0.3.ebuild 5052 BLAKE2B 99a20e705617194a9e38ec6dabbc52fd43dbd5615a6b00379921f4ba200c2110f666878c00195917109f37cfed961258978b79bc3db0814986c36429537e660c SHA512 050ebb35250bd258a602ee84f9f1b1c35531caa0c3f9954bb8380927a8c262ffd66776cc0af643aaf69a7e0c51dccfe82bb2e3993e264ba2a0c91de8bd94faf5 EBUILD lxc-6.0.0-r1.ebuild 5162 BLAKE2B 0f6933ac4fa24bb20553c2c74f79bbd755add34f292de6d5fda953c7a51e9caa971d97a374efbc118cff55c0f3a0fc98870ed12569355c2641f351c217aa679b SHA512 c9addd684c2eb0fcf7a9d7b9220773391712cd22dcba47b7a7a353985a580505422c794a004f14312048c02a250ebe64f335d48c267a1d9ef655564bed7cd577 +EBUILD lxc-6.0.0-r2.ebuild 5195 BLAKE2B 1d5f632c92a214ded8f92fcafdc119c9c8ef9510a629849062d55f8061d57ac3b7cf82c2ce8798d166912b2cdab315c21456d5fe98aeb8a46e0d66d9187f5450 SHA512 3a4e41f4527f6871016a7730b84be5b6ecec43290eb6f5838e883ea3d4b69c2c63a58287bffee09875f4bdcb8fbc280e03e2a23fab51b4093cec045004f43e45 MISC metadata.xml 721 BLAKE2B 8aaa67af4ae36f07ac2d893f0d67d86de08d9da065b5ca7118a7a795a2b2ecb55b37a87b95b456ebc8806bbdc9f36e92901b6888cb75f494a7151393b33b6d44 SHA512 3b90cb1c80e2ee9ef3d30273c91ab625ec79ad240edc40dea011078ab44759b03c3ac28484cfc639b4108557a7c5e00e798b4e335da9ba94a5a836f51ee7701a diff --git a/app-containers/lxc/lxc-6.0.0-r2.ebuild b/app-containers/lxc/lxc-6.0.0-r2.ebuild new file mode 100644 index 000000000000..dcbf0d98541a --- /dev/null +++ b/app-containers/lxc/lxc-6.0.0-r2.ebuild @@ -0,0 +1,172 @@ +# Copyright 2022-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit bash-completion-r1 linux-info meson optfeature systemd toolchain-funcs verify-sig + +DESCRIPTION="A userspace interface for the Linux kernel containment features" +HOMEPAGE="https://linuxcontainers.org/ https://github.com/lxc/lxc" +SRC_URI="https://linuxcontainers.org/downloads/lxc/${P}.tar.gz + verify-sig? ( https://linuxcontainers.org/downloads/lxc/${P}.tar.gz.asc )" + +LICENSE="GPL-2 LGPL-2.1 LGPL-3" +SLOT="0/1.8" # SONAME liblxc.so.1 + ${PV//./} _if_ breaking ABI change while bumping. +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +IUSE="apparmor +caps examples io-uring lto man pam seccomp selinux ssl systemd test +tools" + +RDEPEND="acct-group/lxc + acct-user/lxc + apparmor? ( sys-libs/libapparmor ) + caps? ( sys-libs/libcap[static-libs] ) + io-uring? ( >=sys-libs/liburing-2:= ) + pam? ( sys-libs/pam ) + seccomp? ( sys-libs/libseccomp ) + selinux? ( sys-libs/libselinux ) + ssl? ( dev-libs/openssl:0= ) + systemd? ( + sys-apps/dbus + sys-apps/systemd:= + ) + tools? ( sys-libs/libcap[static-libs] )" +DEPEND="${RDEPEND} + sys-kernel/linux-headers" +BDEPEND="virtual/pkgconfig + man? ( app-text/docbook2X ) + verify-sig? ( sec-keys/openpgp-keys-linuxcontainers )" + +RESTRICT="!test? ( test )" + +CONFIG_CHECK="~!NETPRIO_CGROUP + ~CGROUPS + ~CGROUP_CPUACCT + ~CGROUP_DEVICE + ~CGROUP_FREEZER + + ~CGROUP_SCHED + ~CPUSETS + ~IPC_NS + ~MACVLAN + + ~MEMCG + ~NAMESPACES + ~NET_NS + ~PID_NS + + ~POSIX_MQUEUE + ~USER_NS + ~UTS_NS + ~VETH" + +ERROR_CGROUP_FREEZER="CONFIG_CGROUP_FREEZER: needed to freeze containers" +ERROR_MACVLAN="CONFIG_MACVLAN: needed for internal (inter-container) networking" +ERROR_MEMCG="CONFIG_MEMCG: needed for memory resource control in containers" +ERROR_NET_NS="CONFIG_NET_NS: needed for unshared network" +ERROR_POSIX_MQUEUE="CONFIG_POSIX_MQUEUE: needed for lxc-execute command" +ERROR_UTS_NS="CONFIG_UTS_NS: needed to unshare hostnames and uname info" +ERROR_VETH="CONFIG_VETH: needed for internal (host-to-container) networking" + +VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/linuxcontainers.asc + +DOCS=( AUTHORS CONTRIBUTING MAINTAINERS README.md doc/FAQ.txt ) + +pkg_setup() { + linux-info_pkg_setup +} + +src_configure() { + + # -Dtools-multicall=false: will create a single binary called 'lxc' that conflicts with LXD. + local emesonargs=( + --localstatedir "${EPREFIX}/var" + + -Dcoverity-build=false + -Dinstall-state-dirs=false + -Doss-fuzz=false + -Dspecfile=false + -Dtools-multicall=false + + -Dcommands=true + -Dinstall-init-files=true + -Dmemfd-rexec=true + -Dthread-safety=true + + $(meson_use apparmor) + $(meson_use caps capabilities) + $(meson_use examples) + $(meson_use io-uring io-uring-event-loop) + $(meson_use lto b_lto) + $(meson_use man) + $(meson_use pam pam-cgroup) + $(meson_use seccomp) + $(meson_use selinux) + $(meson_use ssl openssl) + $(meson_use test tests) + $(meson_use tools) + + $(usex systemd -Ddbus=true -Ddbus=false) + $(usex systemd -Dinit-script="systemd" -Dinit-script="sysvinit") + + -Ddata-path=/var/lib/lxc + -Ddoc-path=/usr/share/doc/${PF} + -Dlog-path=/var/log/lxc + -Drootfs-mount-path=/var/lib/lxc/rootfs + -Druntime-path=/run + ) + + use tools && local emesonargs+=( -Dcapabilities=true ) + + if $(tc-ld-is-gold) || $(tc-ld-is-lld); then + local emesonargs+=( -Db_lto_mode=thin ) + else + local emesonargs+=( -Db_lto_mode=default ) + fi + + meson_src_configure +} + +src_install() { + meson_src_install + + # The main bash-completion file will collide with lxd, need to relocate and update symlinks. + mkdir -p "${ED}"/$(get_bashcompdir) || die "Failed to create bashcompdir." + + if use tools; then + bashcomp_alias lxc-start lxc-{attach,autostart,cgroup,checkpoint,config,console,copy,create,destroy,device,execute,freeze,info,ls,monitor,snapshot,stop,top,unfreeze,unshare,usernsexec,wait} + else + bashcomp_alias lxc-start lxc-usernsexec + fi + + find "${ED}" -name '*.la' -delete -o -name '*.a' -delete || die + + # Replace upstream sysvinit/systemd files. + if use systemd; then + rm -r "${D}$(systemd_get_systemunitdir)" || die "Failed to remove systemd lib dir" + else + rm "${ED}"/etc/init.d/lxc-{containers,net} || die "Failed to remove sysvinit scripts" + fi + + newinitd "${FILESDIR}/${PN}.initd.9" ${PN} + systemd_newunit "${FILESDIR}"/lxc-monitord.service.5.0.0 lxc-monitord.service + systemd_newunit "${FILESDIR}"/lxc-net.service.5.0.0 lxc-net.service + systemd_newunit "${FILESDIR}"/lxc.service-5.0.0 lxc.service + systemd_newunit "${FILESDIR}"/lxc_at.service.5.0.0 "lxc@.service" + + if ! use apparmor; then + sed -i '/lxc-apparmor-load/d' "${D}$(systemd_get_systemunitdir)/lxc.service" || + die "Failed to remove apparmor references from lxc.service systemd unit." + fi +} + +pkg_postinst() { + elog "Please refer to " + elog "https://wiki.gentoo.org/wiki/LXC for introduction and usage guide." + elog + elog "Run 'lxc-checkconfig' to see optional kernel features." + elog + + optfeature "creating your own LXC containers" app-containers/distrobuilder + optfeature "automatic template scripts" app-containers/lxc-templates + optfeature "Debian-based distribution container image support" dev-util/debootstrap + optfeature "snapshot & restore functionality" sys-process/criu +} |