2026-08-08 15:42:45 +02:00
|
|
|
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"
|
2026-08-08 20:54:29 +02:00
|
|
|
# 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
|
2026-08-08 23:46:01 +02:00
|
|
|
80-imsd.preset
|
2026-08-08 20:54:29 +02:00
|
|
|
"
|
2026-08-08 15:42:45 +02:00
|
|
|
builddir="$srcdir/$pkgname"
|
|
|
|
|
|
|
|
|
|
build() {
|
|
|
|
|
make
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
check() {
|
|
|
|
|
make check
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
package() {
|
|
|
|
|
make install DESTDIR="$pkgdir"
|
2026-08-08 20:54:29 +02:00
|
|
|
install -Dm644 "$srcdir"/org.kde.modem.daemon.desktop \
|
|
|
|
|
"$pkgdir"/etc/skel/.config/autostart/org.kde.modem.daemon.desktop
|
2026-08-08 23:46:01 +02:00
|
|
|
# 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
|
2026-08-08 15:42:45 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
systemd() {
|
|
|
|
|
install_if="$pkgname=$pkgver-r$pkgrel systemd"
|
|
|
|
|
|
|
|
|
|
amove usr/lib/systemd/system
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sha512sums="
|
2026-08-08 20:54:29 +02:00
|
|
|
REPLACED_BY_CI imsd-REPLACED_BY_CI.tar.gz
|
|
|
|
|
REPLACED_BY_CI org.kde.modem.daemon.desktop
|
2026-08-08 23:46:01 +02:00
|
|
|
REPLACED_BY_CI 80-imsd.preset
|
2026-08-08 15:42:45 +02:00
|
|
|
"
|