From 1987275a54a8a9a7b84502dfb3b7d611c7f9b7f7 Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Wed, 2 Sep 2026 16:08:21 +0200 Subject: [PATCH] packaging: drop the aport; fp6-img installs the published apk fp6-img no longer builds imsd from source: its images install the apk this repo's package CI publishes to the registry (pinned version + sha256), so the image and 'apk upgrade' carry the same binary and APKBUILD.binary is the only imsd packaging left. The two payload files the aport carried (kde-modem-daemon skel override, systemd preset) move up to packaging/, where build-package.sh now takes them from. --- .forgejo/workflows/package.yml | 7 +- packaging/{aport => }/80-imsd.preset | 0 packaging/APKBUILD.binary | 8 +- packaging/aport/APKBUILD | 81 ------------------- packaging/build-package.sh | 4 +- .../{aport => }/org.kde.modem.daemon.desktop | 0 6 files changed, 10 insertions(+), 90 deletions(-) rename packaging/{aport => }/80-imsd.preset (100%) delete mode 100644 packaging/aport/APKBUILD rename packaging/{aport => }/org.kde.modem.daemon.desktop (100%) diff --git a/.forgejo/workflows/package.yml b/.forgejo/workflows/package.yml index 9db1013..783fa74 100644 --- a/.forgejo/workflows/package.yml +++ b/.forgejo/workflows/package.yml @@ -14,9 +14,10 @@ name: package # Release gating is the version: pkgver comes from implementations/main.cpp, # the registry answers 409 for an already-published version, and the publish # step treats that as "nothing to do" — so pushes only release when the -# Version constant bumps. fp6-img images keep building imsd from their own -# pinned checkout of this repo (packaging/aport/); APKBUILD.binary's payload -# must stay identical to that aport's, so the two pipelines cannot skew. +# Version constant bumps. This is the only producer of the imsd apk: fp6-img +# images install the published package from the registry (pinned version, +# pinned sha256) instead of building their own, so image and 'apk upgrade' +# carry the same binary. # # Publishing needs PACKAGE_TOKEN (catbot account, package:write scope) — an # org-level secret on Catcrafts since 2026-09-02, shared with fp6-img; diff --git a/packaging/aport/80-imsd.preset b/packaging/80-imsd.preset similarity index 100% rename from packaging/aport/80-imsd.preset rename to packaging/80-imsd.preset diff --git a/packaging/APKBUILD.binary b/packaging/APKBUILD.binary index e874d5d..0043af0 100644 --- a/packaging/APKBUILD.binary +++ b/packaging/APKBUILD.binary @@ -5,10 +5,10 @@ # README's "Cross-compiling" section into a proper apk — used by this repo's # package CI (packaging/build-package.sh, which also seds pkgver from # implementations/main.cpp) and runnable by hand. The source tarball is -# produced by packaging/make-bin-tarball.sh; the desktop/preset files come -# from packaging/aport/ (copy them next to this file). The package payload -# must stay identical to packaging/aport/APKBUILD's, or an apk upgrade -# across the two pipelines would add/strip files on users' phones. +# produced by packaging/make-bin-tarball.sh; the desktop/preset files live +# next to it in packaging/ (copy them beside this file). Since 2026-09-02 +# this is the only imsd packaging: fp6-img images install the apk this +# builds from the registry rather than building their own. pkgname=imsd pkgver=0.3.1 pkgrel=0 diff --git a/packaging/aport/APKBUILD b/packaging/aport/APKBUILD deleted file mode 100644 index 7912d38..0000000 --- a/packaging/aport/APKBUILD +++ /dev/null @@ -1,81 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only -# SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts® -# The canonical apk aport for imsd, owned by this repository since -# 2026-09-01 (transferred from fp6-img, which now consumes this directory: -# its build.sh copies packaging/aport/ into the pmaports overlay, pins -# _commit to a reviewed commit, and generates the source tarball with -# git-archive — the Forgejo instance serves no source archives). -# packaging/APKBUILD{,.binary} are the older standalone variants. -maintainer="Jorijn van der Graaf " -pkgname=imsd -pkgver=0.3.1 -pkgrel=0 -pkgdesc="Userspace IMS/VoLTE daemon for mainline Linux phones" -url="https://forgejo.catcrafts.net/Catcrafts/imsd" -# other arches: nothing wrong known, just never run there -arch="aarch64 x86_64" -license="GPL-3.0-only" -# the media leg dlopen's the AMR-WB codecs; pw-record/pw-play drive PipeWire — -# none of which abuild's .so auto-scan can see -depends="modemmanager opencore-amr vo-amrwbenc pipewire-tools" -# clang/libc++ C++26-modules build (upstream Makefile); llvm-runtimes ships -# the libc++ std module sources the build precompiles -makedepends="clang lld libc++-dev llvm-libunwind-dev llvm-runtimes glib-dev pkgconf" -# the versioned provides both satisfies soc-qcom-modem's 81voltd dependency -# and excludes the real package: 81voltd serves the modem firmware's own -# ims-PDN requests, which races imsd for the PDN and flaps it (a new prefix -# every ~2.5 min) — two IMS stacks cannot share one PDN. Installing imsd is -# an explicit choice to hand the IMS PDN to userspace. -provides="81voltd=$pkgver-r$pkgrel" -# no OpenRC service yet: the unit's PDN-bring-up/env-file sequencing is only -# tested under systemd; an initd is welcome once someone can verify one -subpackages="$pkgname-systemd" -# _commit is pinned by the consuming CI, which also drops the git-archive -# tarball (prefix imsd/) next to this APKBUILD. The skel override hides -# kde-telephony's modem daemon autostart for the account created at install — -# imsd-dialerd owns those session D-Bus names instead. -_commit="REPLACED_BY_CI" -source=" - imsd-$_commit.tar.gz - org.kde.modem.daemon.desktop - 80-imsd.preset -" -builddir="$srcdir/$pkgname" - -build() { - make -} - -check() { - make check -} - -package() { - make install DESTDIR="$pkgdir" - install -Dm644 "$srcdir"/org.kde.modem.daemon.desktop \ - "$pkgdir"/etc/skel/.config/autostart/org.kde.modem.daemon.desktop - # enabled by preset: the unit is a no-op until /etc/imsd.env exists, and - # VoLTE surviving reboots must not depend on a manual systemctl enable - install -Dm644 "$srcdir"/80-imsd.preset \ - "$pkgdir"/usr/lib/systemd/system-preset/80-imsd.preset - mkdir -p "$pkgdir"/etc/systemd/system/multi-user.target.wants - ln -s /usr/lib/systemd/system/imsd.service \ - "$pkgdir"/etc/systemd/system/multi-user.target.wants/imsd.service - # ...but only actually start once the carrier config exists, so - # unconfigured systems don't boot into a failing unit - mkdir -p "$pkgdir"/usr/lib/systemd/system/imsd.service.d - printf '[Unit]\nConditionPathExists=/etc/imsd.env\n' \ - > "$pkgdir"/usr/lib/systemd/system/imsd.service.d/10-require-config.conf -} - -systemd() { - install_if="$pkgname=$pkgver-r$pkgrel systemd" - - amove usr/lib/systemd/system -} - -sha512sums=" -REPLACED_BY_CI imsd-REPLACED_BY_CI.tar.gz -REPLACED_BY_CI org.kde.modem.daemon.desktop -REPLACED_BY_CI 80-imsd.preset -" diff --git a/packaging/build-package.sh b/packaging/build-package.sh index 9b130aa..e035173 100755 --- a/packaging/build-package.sh +++ b/packaging/build-package.sh @@ -88,8 +88,8 @@ PKG="$HOME/pkg" rm -rf "$PKG" mkdir -p "$PKG" cp "$SRC/packaging/APKBUILD.binary" "$PKG/APKBUILD" -cp "$SRC/packaging/aport/org.kde.modem.daemon.desktop" \ - "$SRC/packaging/aport/80-imsd.preset" "$PKG/" +cp "$SRC/packaging/org.kde.modem.daemon.desktop" \ + "$SRC/packaging/80-imsd.preset" "$PKG/" mv "imsd-$VER.tar.gz" "$PKG/" sed -i "s/^pkgver=.*/pkgver=$VER/" "$PKG/APKBUILD" # a throwaway signing key: phones trust the registry-signed APKINDEX, not diff --git a/packaging/aport/org.kde.modem.daemon.desktop b/packaging/org.kde.modem.daemon.desktop similarity index 100% rename from packaging/aport/org.kde.modem.daemon.desktop rename to packaging/org.kde.modem.daemon.desktop