systemd/systemd: upgrade to 260

This also adds some helper functions to finding dlopened dependencies.
They're printed out during package(), and useful for figuring out which
packages to depend on when adding dependencies manually to the APKBUILD.
They're also quite gross (e.g. invoking apk) so it's commented out by
default.

Trigger change is because `reload-or-restart ---marked` is now
deprecated:

    * --marked is deprecated. Please use 'systemctl enqueue-marked' instead.

Signed-off-by: Clayton Craft <craftyguy@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8198>
This commit is contained in:
Clayton Craft 2026-03-18 10:27:24 -07:00 committed by The Friendly Meow (merge) Bot
parent 1ab8eefdd5
commit de93133170
No known key found for this signature in database
2 changed files with 49 additions and 5 deletions

View file

@ -7,7 +7,7 @@
maintainer="Clayton Craft <craftyguy@postmarketos.org>"
pkgname=systemd
pkgver=259.5
pkgver=260
_pkgver="${pkgver/_/-}"
pkgrel=0
pkgdesc="System and service manager"
@ -267,6 +267,10 @@ package() {
DESTDIR="$pkgdir" meson install --no-rebuild -C build
# NOTE: Uncomment to print dlopened dependencies and crash the build:
# _dump_dlopen_metadata "$pkgdir" | _extract_sonames | _resolve_packages; exit 1
# ship default policy to leave services disabled
for type in system user; do
mkdir -p "$pkgdir"/usr/lib/systemd/"$type"-preset
@ -472,8 +476,49 @@ libs() {
default_libs
}
# Scan for dlopened dependencies
_dump_dlopen_metadata() {
mkdir -p "$pkgbasedir/.dlopen-metadata-tmp"
mkdir -p "$pkgbasedir/.dlopen-metadata"
scanelf -RyB -E ET_DYN --section '.note.dlopen' "$pkgdir" | while read type section src; do
[ "$section" != ".note.dlopen" ] && continue
section_data="$(readelf -j .note.dlopen "$src")"
local filename="${src##*/}"
if [ -e "$pkgbasedir/.dlopen-metadata/$filename" ]; then
error "filename reused, cannot handle this yet: $filename"
fi
readelf -j .note.dlopen "$src" | tee "$pkgbasedir/.dlopen-metadata/$filename"
local tmp="$pkgbasedir/.dlopen-metadata-tmp/$filename"
strip --remove-section=.note.dlopen -o "$tmp" "$src"
# only replace content to preserve attributes
cat "$tmp" > "$src"
rm "$tmp"
done
rm -r "$pkgbasedir/.dlopen-metadata-tmp"
}
# Extract sonames from readelf output
_extract_sonames() {
grep 'Dlopen Metadata:' | \
sed 's/.*"soname":\[//' | \
sed 's/\].*//' | \
tr ',' '\n' | \
sed 's/"//g' | \
sort -u
}
# Resolve each soname to package
_resolve_packages() {
while read -r soname; do
apk search "so:$soname" 2>/dev/null || true
done | sed 's/-[0-9].*//' | sort -u
}
sha512sums="
cb76b3a11b400fea94de2be74bcd9178b2e986c1965cbc19824114fe14fdd9b6aed43ae325cf5bc505efa1333adc71e131e0a8b54519e6741baa090392bf0a98 systemd-259.5.tar.gz
2b81a327319c6b06c04742aa8ee5f36ebc7b78aa6db2a82f2a7376fda8bf2079bfc418db290b0522e1d01a3449b3a4e847ebe22d260cc83aeb86a7a4de714d41 systemd-260.tar.gz
81c897fed8a3fbfb67ec591b2398a5d65e4af1b3ef379376c157c98d71f085b707f8ebc896d5571a94f99f8fc84fd6b43e3b879ca9b0d57fc6c4596034c7a777 wired.network
8b0360acd46f8918ccaf4bcfbf8b2e60ba0d1d6ea6c575fa51668e129b421edc3e7503db7790b6abce8d926b6c8493c02893f70eb481e3fdd935c7b90f442474 bless-boot.patch
"

View file

@ -75,7 +75,7 @@ trigger_user_and_system_services() {
# respective package post-upgrade scripts
if $SYSTEM_SERVICES_CHANGED; then
echo "Reloading/restarting marked system services..."
systemctl reload-or-restart --marked
systemctl enqueue-marked
fi
if $USER_SERVICES_CHANGED; then
@ -87,8 +87,7 @@ trigger_user_and_system_services() {
systemctl \
--user \
-M "$uid@" \
reload-or-restart \
--marked &
enqueue-marked &
done
wait
fi