diff --git a/implementations/main.cpp b/implementations/main.cpp index dee97cf..0ee64c4 100644 --- a/implementations/main.cpp +++ b/implementations/main.cpp @@ -41,7 +41,7 @@ import Imsd; namespace { // ---- static config (env-overridable, same knobs as imsd.py) --------------- -constexpr const char* Version = "0.3.0"; +constexpr const char* Version = "0.3.1"; constexpr const char* BusName = "net.catcrafts.IMS1"; constexpr const char* ObjPath = "/net/catcrafts/IMS1"; constexpr const char* Iface = "net.catcrafts.IMS1"; diff --git a/packaging/aport/80-imsd.preset b/packaging/aport/80-imsd.preset new file mode 100644 index 0000000..9ee121f --- /dev/null +++ b/packaging/aport/80-imsd.preset @@ -0,0 +1 @@ +enable imsd.service diff --git a/packaging/aport/APKBUILD b/packaging/aport/APKBUILD new file mode 100644 index 0000000..7912d38 --- /dev/null +++ b/packaging/aport/APKBUILD @@ -0,0 +1,81 @@ +# 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/aport/org.kde.modem.daemon.desktop b/packaging/aport/org.kde.modem.daemon.desktop new file mode 100644 index 0000000..e1e3e17 --- /dev/null +++ b/packaging/aport/org.kde.modem.daemon.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true