# SPDX-License-Identifier: GPL-3.0-only # SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts® # Maintainer: Jorijn van der Graaf # 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 live # next to it in packaging/ (copy them beside this file). Since 2026-09-02 # this is the only imsd packaging: fp6-img images install the apk this # builds from the registry rather than building their own. pkgname=imsd pkgver=0.3.1 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" # 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 " 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 # 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 }