209 lines
4.4 KiB
Bash
209 lines
4.4 KiB
Bash
# Copyright 2020 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
|
|
MINKV="3.11"
|
|
PYTHON_COMPAT=( python3_{7..9} )
|
|
inherit meson python-any-r1
|
|
|
|
DESCRIPTION="Creates, deletes and cleans up volatile and temporary files and directories"
|
|
HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd"
|
|
SRC_URI="https://github.com/systemd/systemd/archive/v${PV}.tar.gz -> systemd-${PV}.tar.gz
|
|
elibc_musl? ( https://dev.gentoo.org/~gyakovlev/distfiles/${P}-musl.tar.xz )"
|
|
|
|
LICENSE="BSD-2 GPL-2 LGPL-2.1 MIT public-domain"
|
|
SLOT="0"
|
|
KEYWORDS="amd64 arm arm64 ppc ppc64 sparc x86"
|
|
IUSE="test"
|
|
RESTRICT="!test? ( test )"
|
|
|
|
DEPEND="
|
|
sys-apps/acl:0=
|
|
>=sys-apps/util-linux-2.30:0=
|
|
>=sys-kernel/linux-headers-${MINKV}
|
|
sys-libs/libcap:0=
|
|
"
|
|
RDEPEND="${DEPEND}
|
|
!sys-apps/opentmpfiles
|
|
!sys-apps/systemd
|
|
"
|
|
|
|
BDEPEND="
|
|
app-text/docbook-xml-dtd:4.2
|
|
app-text/docbook-xml-dtd:4.5
|
|
app-text/docbook-xsl-stylesheets
|
|
dev-libs/libxslt:0
|
|
>=dev-util/meson-0.46
|
|
>=dev-util/intltool-0.50
|
|
>=sys-apps/coreutils-8.16
|
|
sys-devel/m4
|
|
virtual/pkgconfig
|
|
test? ( ${PYTHON_DEPS} )
|
|
"
|
|
|
|
S="${WORKDIR}/systemd-${PV}"
|
|
|
|
pkg_setup() {
|
|
use test && python-any-r1_pkg_setup
|
|
}
|
|
|
|
src_prepare() {
|
|
# musl patchset from:
|
|
# http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/systemd/systemd
|
|
use elibc_musl && eapply "${WORKDIR}/${P}-musl"
|
|
default
|
|
}
|
|
|
|
src_configure() {
|
|
# disable everything until configure says "enabled features: ACL, tmpfiles"
|
|
local systemd_disable_options=(
|
|
adm-group
|
|
analyze
|
|
apparmor
|
|
audit
|
|
backlight
|
|
binfmt
|
|
blkid
|
|
bzip2
|
|
coredump
|
|
dbus
|
|
efi
|
|
elfutils
|
|
environment-d
|
|
fdisk
|
|
gcrypt
|
|
glib
|
|
gshadow
|
|
gnutls
|
|
hibernate
|
|
hostnamed
|
|
hwdb
|
|
idn
|
|
ima
|
|
initrd
|
|
firstboot
|
|
kernel-install
|
|
kmod
|
|
ldconfig
|
|
libcryptsetup
|
|
libcurl
|
|
libfido2
|
|
libidn
|
|
libidn2
|
|
libiptc
|
|
link-networkd-shared
|
|
link-systemctl-shared
|
|
link-timesyncd-shared
|
|
link-udev-shared
|
|
localed
|
|
logind
|
|
lz4
|
|
machined
|
|
microhttpd
|
|
networkd
|
|
nss-myhostname
|
|
nss-resolve
|
|
nss-systemd
|
|
openssl
|
|
p11kit
|
|
pam
|
|
pcre2
|
|
polkit
|
|
portabled
|
|
pstore
|
|
pwquality
|
|
randomseed
|
|
resolve
|
|
rfkill
|
|
seccomp
|
|
selinux
|
|
smack
|
|
sysusers
|
|
timedated
|
|
timesyncd
|
|
tpm
|
|
qrencode
|
|
quotacheck
|
|
userdb
|
|
utmp
|
|
vconsole
|
|
wheel-group
|
|
xdg-autostart
|
|
xkbcommon
|
|
xz
|
|
zlib
|
|
zstd
|
|
)
|
|
|
|
# prepend -D and append =false, e.g. zstd becomes -Dzstd=false
|
|
systemd_disable_options=( ${systemd_disable_options[@]/#/-D} )
|
|
systemd_disable_options=( ${systemd_disable_options[@]/%/=false} )
|
|
|
|
local emesonargs=(
|
|
-Dacl=true
|
|
-Dtmpfiles=true
|
|
-Dstandalone-binaries=true # this and below option does the magic
|
|
-Dstatic-libsystemd=true
|
|
-Dsysvinit-path=''
|
|
${systemd_disable_options[@]}
|
|
)
|
|
meson_src_configure
|
|
}
|
|
|
|
src_compile() {
|
|
# tmpfiles and sysusers can be built as standalone, link systemd-shared in statically.
|
|
# https://github.com/systemd/systemd/pull/16061 original implementation
|
|
# we just need to pass -Dstandalone-binaries=true and
|
|
# use <name>.standalone target below.
|
|
# check meson.build for if have_standalone_binaries condition per target.
|
|
local mytargets=(
|
|
systemd-tmpfiles.standalone
|
|
man/tmpfiles.d.5
|
|
man/systemd-tmpfiles.8
|
|
)
|
|
meson_src_compile "${mytargets[@]}"
|
|
}
|
|
|
|
src_install() {
|
|
# lean and mean installation, single binary and man-pages
|
|
pushd "${BUILD_DIR}" > /dev/null || die
|
|
into /
|
|
newbin systemd-tmpfiles.standalone systemd-tmpfiles
|
|
|
|
doman man/{systemd-tmpfiles.8,tmpfiles.d.5}
|
|
|
|
popd > /dev/null || die
|
|
|
|
# service files adapter from opentmpfiles
|
|
newinitd "${FILESDIR}"/stmpfiles-dev.initd stmpfiles-dev
|
|
newinitd "${FILESDIR}"/stmpfiles-setup.initd stmpfiles-setup
|
|
|
|
# same content, but install as different file
|
|
newconfd "${FILESDIR}"/stmpfiles.confd stmpfiles-dev
|
|
newconfd "${FILESDIR}"/stmpfiles.confd stmpfiles-setup
|
|
}
|
|
|
|
src_test() {
|
|
# 'meson test' will compile full systemd, but we can still outsmart it
|
|
python_fix_shebang src/test/test-systemd-tmpfiles.py
|
|
"${EPYTHON}" src/test/test-systemd-tmpfiles.py \
|
|
"${BUILD_DIR}"/systemd-tmpfiles.standalone || die "${FUNCNAME} failed"
|
|
}
|
|
|
|
# adapted from opentmpfiles ebuild
|
|
add_service() {
|
|
local initd=$1
|
|
local runlevel=$2
|
|
|
|
elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
|
|
mkdir -p "${EROOT}/etc/runlevels/${runlevel}"
|
|
ln -snf "${EROOT}/etc/init.d/${initd}" "${EROOT}/etc/runlevels/${runlevel}/${initd}"
|
|
}
|
|
|
|
pkg_postinst() {
|
|
if [[ -z $REPLACING_VERSIONS ]]; then
|
|
add_service stmpfiles-dev sysinit
|
|
add_service stmpfiles-setup boot
|
|
fi
|
|
}
|