2026-07-22 22:53:28 +02:00
|
|
|
# SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
|
# SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
|
|
|
|
|
# Maintainer: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
|
2026-09-01 23:31:27 +02:00
|
|
|
# Binary packaging: wraps a crafter-build binary cross-compiled per the
|
|
|
|
|
# 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.
|
2026-07-22 22:53:28 +02:00
|
|
|
pkgname=imsd
|
2026-09-01 23:31:27 +02:00
|
|
|
pkgver=0.3.1
|
2026-07-22 22:53:28 +02:00
|
|
|
pkgrel=0
|
|
|
|
|
pkgdesc="Userspace IMS/VoLTE daemon for mainline Linux phones"
|
|
|
|
|
url="https://forgejo.catcrafts.net/Catcrafts/imsd"
|
|
|
|
|
arch="aarch64"
|
|
|
|
|
license="GPL-3.0-only"
|
|
|
|
|
# the media leg dlopen's the AMR-WB codecs; pw-record/pw-play drive PipeWire
|
|
|
|
|
depends="modemmanager libc++ opencore-amr vo-amrwbenc pipewire-tools"
|
|
|
|
|
# versioned provides = imsd satisfies soc-qcom-modem's 81voltd dependency AND
|
|
|
|
|
# excludes the real package: 81voltd serves the modem's own ims-PDN requests,
|
|
|
|
|
# which races imsd for the PDN and flaps it with a new prefix every ~2.5 min
|
|
|
|
|
# (fp6 journal/ims.md s57) — the two IMS stacks cannot share one PDN
|
|
|
|
|
provides="81voltd=$pkgver-r$pkgrel"
|
2026-09-01 23:31:27 +02:00
|
|
|
# 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"
|
|
|
|
|
options="!check !tracedeps"
|
|
|
|
|
source="
|
|
|
|
|
imsd-$pkgver.tar.gz
|
|
|
|
|
org.kde.modem.daemon.desktop
|
|
|
|
|
80-imsd.preset
|
|
|
|
|
"
|
2026-07-22 22:53:28 +02:00
|
|
|
|
|
|
|
|
package() {
|
|
|
|
|
cd "$srcdir/imsd-$pkgver"
|
|
|
|
|
install -Dm755 imsd "$pkgdir"/usr/bin/imsd
|
|
|
|
|
install -Dm755 imsd-media "$pkgdir"/usr/libexec/imsd-media
|
|
|
|
|
install -Dm755 imsd-dialerd "$pkgdir"/usr/bin/imsd-dialerd
|
|
|
|
|
install -Dm755 ims-pdn-up.sh "$pkgdir"/usr/libexec/ims-pdn-up.sh
|
|
|
|
|
install -Dm644 imsd.service "$pkgdir"/usr/lib/systemd/system/imsd.service
|
|
|
|
|
install -Dm644 imsd-dialerd.desktop \
|
|
|
|
|
"$pkgdir"/etc/xdg/autostart/imsd-dialerd.desktop
|
|
|
|
|
install -Dm644 net.catcrafts.IMS1.conf \
|
|
|
|
|
"$pkgdir"/usr/share/dbus-1/system.d/net.catcrafts.IMS1.conf
|
2026-09-01 23:31:27 +02:00
|
|
|
# the skel override hides kde-telephony's modem daemon autostart for the
|
|
|
|
|
# account created at install — imsd-dialerd owns those session bus names
|
|
|
|
|
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
|
2026-07-22 22:53:28 +02:00
|
|
|
}
|