forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- inherit go-module.eclass; upstream uses go.mod now, - new documentation offered by upstream, e.g. a handy cheatsheet, - openrc init file and systemd service file now manages the log directory (#817287), - virtfs-proxy-helper bin path isn't hardcoded anymore (#798924), - -Werror patch turned into sed for easier maintainability. Bug: https://bugs.gentoo.org/798924 Closes: https://bugs.gentoo.org/817287 Signed-off-by: Joonas Niilola <[email protected]>
- Loading branch information
Showing
4 changed files
with
250 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
DIST lxd-4.0.8.tar.gz 8898153 BLAKE2B c02bea1019079f59fff5fbb2c3d3ebf13e01751fd1c18b9aa44a9306a8f631cb0c0a55f77eb17945e44c040dfdad5c790bb2c2e3ab165356e3900c3d6cccec0e SHA512 9bf5ee91438bc14e916410254979838a110d21d8329c0eaa0a5eecfd378039a3ac10291197d2f680dc12484866f21ef724618e88e6c02038e6d2484d33571dd6 | ||
DIST lxd-4.0.8.tar.gz.asc 833 BLAKE2B 2073b113f34b2ab052e6e4f406016ac04631ec63269b79dd1e85ca5191aa73ed1f47f0e87f5155b6e5c6659138a182c4c403a66e20925cdb347f49e542e8139b SHA512 9b5f00f9d4a601e718ca91f623dd31e864963b7b8a9e9be6af8da2288b775c4fc8c60b0d6fcefa2a347d733d1e002a3714ac3dbfadf9a1188f9747e9682fe8b9 | ||
DIST lxd-4.0.9.tar.gz 9117078 BLAKE2B aa6689c1e958258484fba5c060765dd71d5406cb4375d3132cdc38633277e6c95322e8e3aed5e9dd251140c6868ec42470e797639dde4af42848e138f3b45ee2 SHA512 657949311753895f3941deaabae2d03092fc67490d2de78db48b296fdd3e9df4c5844467dd6913814426ca423a6ee1da9705bb1a2652ea99fe1356eb7da97ebb | ||
DIST lxd-4.0.9.tar.gz.asc 833 BLAKE2B 7cd0d3ab518d947ca3ea6dc804c6a59b592e4e568152c078fdd3c102420bcd94d2f0b2c335b8b4ecdb19dc3c9a10f665a1510903f395247da956717beaa172a3 SHA512 79a4111571ab43e79cf669e416ed50f3ccae0fbceb86d73757d23c778035e827f47643bc87ff6a2fc64b095345a3d53cbd0c4eb245c75364e907d7449f3a0886 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
#!/sbin/openrc-run | ||
# Copyright 1999-2022 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
DAEMON=/usr/sbin/lxd | ||
PIDFILE=/run/lxd.pid | ||
|
||
depend() { | ||
need net | ||
need lxcfs | ||
} | ||
|
||
start() { | ||
ebegin "Starting lxd service" | ||
|
||
modprobe -f loop > /dev/null 2>&1 | ||
|
||
# Fix permissions on /var/lib/lxd and make sure it exists. | ||
# Create a log directory for lxd with correct permissions. | ||
install -d /var/lib/lxd --group lxd --owner root --mode 0775 | ||
install -d /var/log/lxd --group lxd --owner root | ||
start-stop-daemon --start \ | ||
--pidfile ${PIDFILE} \ | ||
--exec ${DAEMON} \ | ||
--background \ | ||
--make-pidfile \ | ||
-- \ | ||
${LXD_OPTIONS} | ||
eend ${?} | ||
} | ||
|
||
stop() { | ||
if [ "${RC_CMD}" = restart ]; then | ||
ebegin "Stopping lxd service (but not containers)" | ||
# start-stop-daemon sends SIGTERM with a timeout of 5s by default. | ||
# SIGTERM indicates to LXD that it will be stopped temporarily. | ||
# Instances will keep running. | ||
start-stop-daemon --stop --quiet -p "${PIDFILE}" | ||
eend ${?} | ||
else | ||
ebegin "Stopping lxd service and containers, waiting 40s" | ||
# SIGPWR indicates to LXD that the host is going down. | ||
# LXD will do a clean shutdown of all instances. | ||
# After 30s all remaining instances will be killed. | ||
# We wait up to 40s for LXD. | ||
start-stop-daemon --stop --quiet -R SIGPWR/40 -p "${PIDFILE}" | ||
eend ${?} | ||
fi | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
[Unit] | ||
Description=LXD - main daemon | ||
After=network-online.target lxcfs.service lxd.socket | ||
Requires=network-online.target lxcfs.service lxd.socket | ||
Documentation=man:lxd(1) | ||
|
||
[Service] | ||
Group=lxd | ||
User=root | ||
EnvironmentFile=-/etc/environment | ||
ExecStart=/usr/sbin/lxd --group lxd --syslog | ||
ExecStartPost=/usr/sbin/lxd waitready --timeout=600 | ||
ExecStartPre=/bin/mkdir -p /var/log/lxd | ||
ExecStartPre=/bin/chown -R root:lxd /var/log/lxd | ||
KillMode=process | ||
PermissionsStartOnly=true | ||
TimeoutStartSec=600s | ||
TimeoutStopSec=30s | ||
Restart=on-failure | ||
LimitNOFILE=1048576 | ||
LimitNPROC=infinity | ||
TasksMax=infinity | ||
|
||
[Install] | ||
Also=lxd-containers.service lxd.socket |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,174 @@ | ||
# Copyright 1999-2022 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=7 | ||
|
||
inherit bash-completion-r1 go-module linux-info optfeature systemd verify-sig | ||
|
||
DESCRIPTION="Fast, dense and secure container management" | ||
HOMEPAGE="https://linuxcontainers.org/lxd/introduction/ https://github.com/lxc/lxd" | ||
SRC_URI="https://linuxcontainers.org/downloads/lxd/${P}.tar.gz | ||
verify-sig? ( https://linuxcontainers.org/downloads/lxd/${P}.tar.gz.asc )" | ||
|
||
LICENSE="Apache-2.0" | ||
SLOT="0" | ||
KEYWORDS="~amd64 ~x86" | ||
IUSE="apparmor ipv6 nls verify-sig" | ||
|
||
DEPEND="acct-group/lxd | ||
app-arch/xz-utils | ||
>=app-containers/lxc-3.0.0[apparmor?,seccomp(+)] | ||
dev-db/sqlite:3 | ||
dev-libs/dqlite | ||
dev-libs/lzo | ||
dev-libs/raft[lz4] | ||
>=dev-util/xdelta-3.0[lzma(+)] | ||
net-dns/dnsmasq[dhcp,ipv6?] | ||
sys-libs/libcap | ||
virtual/udev" | ||
RDEPEND="${DEPEND} | ||
net-firewall/ebtables | ||
net-firewall/iptables[ipv6?] | ||
sys-apps/iproute2[ipv6?] | ||
sys-fs/fuse:* | ||
sys-fs/lxcfs | ||
sys-fs/squashfs-tools[lzma] | ||
virtual/acl" | ||
BDEPEND="dev-lang/go | ||
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/fuidshift | ||
/usr/bin/lxc | ||
/usr/bin/lxc-to-lxd | ||
/usr/bin/lxd-agent | ||
/usr/bin/lxd-benchmark | ||
/usr/bin/lxd-p2c | ||
/usr/sbin/lxd" | ||
|
||
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/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_prepare() { | ||
export GOPATH="${S}/_dist" | ||
|
||
default | ||
|
||
sed -i \ | ||
-e "s:\./configure:./configure --prefix=/usr --libdir=${EPREFIX}/usr/lib/lxd: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.secboot.fd:g" \ | ||
doc/environment.md \ | ||
lxd/apparmor/instance.go \ | ||
lxd/apparmor/instance_qemu.go \ | ||
lxd/instance/drivers/driver_qemu.go || die "Failed to fix hardcoded ovmf paths." | ||
|
||
cp "${FILESDIR}"/lxd-4.0.9.service "${T}"/lxd.service || die | ||
if use apparmor; then | ||
sed -i \ | ||
'/^EnvironmentFile=.*/a ExecStartPre=\/usr\/libexec\/lxc\/lxc-apparmor-load' \ | ||
"${T}"/lxd.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 fuidshift lxd-benchmark lxc lxc-to-lxd; do | ||
go install -v -x "${S}/${k}" || die "failed compiling ${k}" | ||
done | ||
|
||
go install -v -x -tags libsqlite3 ${S}/lxd || die "Failed to build the daemon" | ||
|
||
# Needs to be built statically | ||
CGO_ENABLED=0 go install -v -tags netgo "${S}"/lxd-p2c | ||
CGO_ENABLED=0 go install -v -tags agent,netgo "${S}"/lxd-agent | ||
|
||
use nls && emake build-mo | ||
} | ||
|
||
src_test() { | ||
emake check | ||
} | ||
|
||
src_install() { | ||
export GOPATH="${S}/_dist" | ||
local bindir="_dist/bin" | ||
|
||
dosbin ${bindir}/lxd | ||
|
||
for l in fuidshift lxd-agent lxd-benchmark lxd-p2c lxc lxc-to-lxd; do | ||
dobin ${bindir}/${l} | ||
done | ||
|
||
newbashcomp scripts/bash/lxd-client lxc | ||
|
||
newconfd "${FILESDIR}"/lxd-4.0.0.confd lxd | ||
newinitd "${FILESDIR}"/lxd-4.0.9.initd lxd | ||
|
||
systemd_dounit "${T}"/lxd.service | ||
systemd_newunit "${FILESDIR}"/lxd-containers-4.0.0.service lxd-containers.service | ||
systemd_newunit "${FILESDIR}"/lxd-4.0.0.socket lxd.socket | ||
|
||
dodoc AUTHORS doc/* | ||
use nls && domo po/*.mo | ||
} | ||
|
||
pkg_postinst() { | ||
elog | ||
elog "Consult https://wiki.gentoo.org/wiki/LXD for more information," | ||
elog "including a Quick Start." | ||
elog "For virtual machine support, see:" | ||
elog "https://wiki.gentoo.org/wiki/LXD#Virtual_machines" | ||
elog | ||
elog "Please run 'lxc-checkconfig' to see all optional kernel features." | ||
elog | ||
optfeature "virtual machine support" app-emulation/qemu[spice,usbredir,virtfs] | ||
optfeature "btrfs storage backend" sys-fs/btrfs-progs | ||
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 lxd group." | ||
} |