From 6d32d10a8af67f33bb257328341b75595b85fe14 Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Tue, 1 Sep 2026 18:26:33 +0200 Subject: [PATCH] imsd 0.3.1: aport ownership moves to the imsd repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The imsd repo now owns its apk packaging (packaging/aport/, imsd commit 17e0f6b); build.sh copies the aport out of the same pinned checkout it archives, so daemon and packaging can never skew. The local aports/modem/imsd copy is gone. 0.3.1 ships the ims-pdn-up hardening (mmcli errors logged verbatim per attempt, connect attempts gated on network registration, IMS_IP_TYPE configurable) — the field-debugging fix for undecodable bearer failures (journal/users/tu11ebukk), tested on the dev phone. build-info.txt now derives the imsd version from the aport instead of hardcoding it. Co-Authored-By: Claude Fable 5 --- aports/modem/imsd/80-imsd.preset | 1 - aports/modem/imsd/APKBUILD | 74 ------------------- .../modem/imsd/org.kde.modem.daemon.desktop | 2 - build.sh | 20 +++-- 4 files changed, 15 insertions(+), 82 deletions(-) delete mode 100644 aports/modem/imsd/80-imsd.preset delete mode 100644 aports/modem/imsd/APKBUILD delete mode 100644 aports/modem/imsd/org.kde.modem.daemon.desktop diff --git a/aports/modem/imsd/80-imsd.preset b/aports/modem/imsd/80-imsd.preset deleted file mode 100644 index 9ee121f..0000000 --- a/aports/modem/imsd/80-imsd.preset +++ /dev/null @@ -1 +0,0 @@ -enable imsd.service diff --git a/aports/modem/imsd/APKBUILD b/aports/modem/imsd/APKBUILD deleted file mode 100644 index 8314201..0000000 --- a/aports/modem/imsd/APKBUILD +++ /dev/null @@ -1,74 +0,0 @@ -maintainer="Jorijn van der Graaf " -pkgname=imsd -pkgver=0.3.0 -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" -# Pinned by CI (see build.sh at the repository root): the Forgejo instance -# serves no source archives, so the tarball is generated with git-archive -# (prefix imsd/) and placed 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/aports/modem/imsd/org.kde.modem.daemon.desktop b/aports/modem/imsd/org.kde.modem.daemon.desktop deleted file mode 100644 index e1e3e17..0000000 --- a/aports/modem/imsd/org.kde.modem.daemon.desktop +++ /dev/null @@ -1,2 +0,0 @@ -[Desktop Entry] -Hidden=true diff --git a/build.sh b/build.sh index 9c5cd0b..6b70485 100755 --- a/build.sh +++ b/build.sh @@ -18,9 +18,12 @@ set -eu KERNEL_REPO=https://forgejo.catcrafts.net/Catcrafts/milos-linux.git KERNEL_BRANCH=combined-stable IMSD_REPO=https://forgejo.catcrafts.net/Catcrafts/imsd.git -# imsd 0.3.0: what the dev phone runs (0.2.7) + emergency-calling stage 1 + -# the make build path the aport needs. Bump deliberately, not via tip-chasing. -IMSD_COMMIT=1037958 +# imsd 0.3.1: 0.3.0 + the ims-pdn-up hardening (mmcli errors logged +# verbatim, registration gate, configurable ip-type) + README carrier +# updates. The aport now lives IN the imsd repo (packaging/aport/, +# transferred 2026-09-01) and is copied out of this checkout below. +# Bump deliberately, not via tip-chasing. +IMSD_COMMIT=17e0f6b PMAPORTS_REPO=https://gitlab.postmarketos.org/postmarketOS/pmaports.git cd "$(dirname "$0")" @@ -135,7 +138,8 @@ cp -r aports/device/fp6-device-tweaks "$WORK/pmaports/device/" cp -r aports/device/fp6-charging-mode "$WORK/pmaports/device/" cp -r aports/device/catcrafts-fp6-repo "$WORK/pmaports/device/" cp -r aports/main/postmarketos-config-nftables "$WORK/pmaports/main/" -cp -r aports/modem/imsd "$WORK/pmaports/modem/" +# imsd's aport is NOT carried here: the imsd repo owns it (packaging/aport/) +# and section 2 copies it out of the pinned checkout. # Alpine forks carrying the GNSS patches (libqmi !470 unreleased; MM !1463 # draft) - deps of modemmanager/imsd, built from aports because r100 > repo. cp -r aports/temp/libqmi "$WORK/pmaports/temp/" @@ -162,10 +166,16 @@ KDATE=$(git -C "$WORK/milos-src" log -1 --format=%cd --date=format:%Y%m%d) sed -i "s/^pkgver=\([0-9.]*\)\$/pkgver=\1_git$KDATE/" "$KAPORT/APKBUILD" # Same dance for imsd, pinned to a reviewed commit rather than branch tip. +# The aport itself comes from the same pinned checkout (packaging/aport/, +# owned by the imsd repo since 2026-09-01), so daemon and packaging can +# never skew. clone_retry "$WORK/imsd-src" -q "$IMSD_REPO" git -C "$WORK/imsd-src" checkout -q "$IMSD_COMMIT" IAPORT="$WORK/pmaports/modem/imsd" +mkdir -p "$WORK/pmaports/modem" +rm -rf "$IAPORT" +cp -r "$WORK/imsd-src/packaging/aport" "$IAPORT" git -C "$WORK/imsd-src" archive --prefix=imsd/ \ -o "$IAPORT/imsd-$IMSD_COMMIT.tar.gz" HEAD sed -i "s/^_commit=.*/_commit=\"$IMSD_COMMIT\"/" "$IAPORT/APKBUILD" @@ -281,7 +291,7 @@ cp README.md install.sh "$STAGE/fp6-img/" echo "kernel: $KERNEL_REPO $KERNEL_BRANCH @ $COMMIT" echo "built: $(date -u +%Y-%m-%dT%H:%M:%SZ)" echo "default login: user / 147147 (same as official postmarketOS images)" - echo "imsd: $IMSD_REPO @ $IMSD_COMMIT (0.3.0)" + echo "imsd: $IMSD_REPO @ $IMSD_COMMIT ($(apkbuild_var "$IAPORT" pkgver))" } > "$STAGE/fp6-img/build-info.txt" # sums of the extracted contents (cd "$STAGE/fp6-img" && sha256sum -- * > sha256sums.txt)