blob: 98dac6fa2dbb6435e4211b995afb954b177bc3c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit linux-info toolchain-funcs
DESCRIPTION="The container system for secure high-performance computing"
HOMEPAGE="https://apptainer.org/"
SRC_URI="https://github.com/apptainer/${PN}/releases/download/v${PV}/${P}.tar.gz"
SLOT="0"
LICENSE="BSD"
KEYWORDS="~amd64 ~riscv ~x86 ~amd64-linux ~x86-linux"
IUSE="examples +network suid systemd"
# Do not complain about CFLAGS etc. since go projects do not use them.
QA_FLAGS_IGNORED='.*'
DEPEND="app-crypt/gpgme
>=dev-lang/go-1.20.0
dev-libs/openssl
sys-apps/util-linux
sys-fs/cryptsetup
sys-fs/squashfs-tools
sys-libs/libseccomp
!suid? (
sys-fs/e2fsprogs[fuse]
sys-fs/squashfuse
)"
RDEPEND="${DEPEND}
!sys-cluster/singularity"
BDEPEND="virtual/pkgconfig"
CONFIG_CHECK="~SQUASHFS"
PATCHES=(
"${FILESDIR}"/${PN}-1.0.2-trim_upstream_cflags.patch
)
DOCS=( README.md CONTRIBUTORS.md CONTRIBUTING.md )
src_configure() {
local myconfargs=(
-c "$(tc-getBUILD_CC)" \
-x "$(tc-getBUILD_CXX)" \
-C "$(tc-getCC)" \
-X "$(tc-getCXX)" \
--prefix="${EPREFIX}"/usr \
--sysconfdir="${EPREFIX}"/etc \
--runstatedir="${EPREFIX}"/run \
--localstatedir="${EPREFIX}"/var \
$(usex network "" "--without-network") \
$(use_with suid)
)
./mconfig -v ${myconfargs[@]} || die "Error invoking mconfig"
}
src_compile() {
emake -C builddir
}
src_install() {
emake DESTDIR="${D}" -C builddir install
keepdir /var/${PN}/mnt/session
if use systemd; then
sed -i -e '/systemd cgroups/ s/no/yes/' "${ED}"/etc/${PN}/${PN}.conf \
|| die "Failed to enable systemd use in configuration"
else
sed -i -e '/systemd cgroups/ s/yes/no/' "${ED}"/etc/${PN}/${PN}.conf \
|| die "Failed to disable systemd use in configuration"
fi
einstalldocs
if use examples; then
dodoc -r examples
fi
}
pkg_postinst() {
if ! use suid; then
local oldver
for oldver in ${REPLACING_VERSIONS}; do
if ver_test "${oldver}" -lt 1.1.0; then
ewarn "Since version 1.1.0 ${PN} no longer installs setuid-root components by default, relying on unprivileged user namespaces instead. For details, see https://apptainer.org/docs/admin/main/user_namespace.html"
ewarn "Make sure user namespaces (possibly except network ones for improved security) are enabled on your system, or re-enable installation of setuid root components by passing USE=suid to ${CATEGORY}/${PN}"
break
fi
done
fi
}
|