imsd 0.3.1: aport ownership moves to the imsd repo
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 <noreply@anthropic.com>
This commit is contained in:
parent
01ee20ddba
commit
bd8971dc89
4 changed files with 15 additions and 82 deletions
|
|
@ -1 +0,0 @@
|
|||
enable imsd.service
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
maintainer="Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>"
|
||||
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
|
||||
"
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[Desktop Entry]
|
||||
Hidden=true
|
||||
20
build.sh
20
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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue