From cca100a9aae5b555a757ea2f780a09772fa9f16d Mon Sep 17 00:00:00 2001 From: jrd Date: Fri, 17 Jul 2026 22:32:21 +0000 Subject: [PATCH 1/2] Add linux/debian/README.md: packaging overview and headless service Co-Authored-By: Claude Fable 5 --- linux/debian/README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 linux/debian/README.md diff --git a/linux/debian/README.md b/linux/debian/README.md new file mode 100644 index 0000000000..9eecc3d84f --- /dev/null +++ b/linux/debian/README.md @@ -0,0 +1,34 @@ +### Copyright (c) 2026 + +Author(s): +* The Jamulus Development Team + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see [](https://www.gnu.org/licenses/). + +--- + +# Debian Packaging + +`linux/deploy_deb.sh` (run from the repository root) uses this directory to build two packages with `debuild`: + +- **jamulus** — the desktop client/server (built with `CONFIG+=noupcasename`). +- **jamulus-headless** — a server-only binary (`CONFIG+=headless serveronly`) with no GUI library dependencies, plus a systemd service. + +Most files here are standard Debian packaging (`control`, `rules`, `copyright`, `*.install`, …). `changelog` is regenerated at build time from the top-level `ChangeLog` — don't edit it by hand. + +## jamulus-headless.service + +Installed to `lib/systemd/system` by the headless package. It runs `/usr/bin/jamulus-headless -s -n` as the unprivileged `jamulus` system user (created in `jamulus-headless.postinst`), restarts on failure, and raises CPU and I/O scheduling priority for real-time audio. + +Start it with `sudo systemctl enable --now jamulus-headless`. To name, publish or otherwise configure the server, adjust the `ExecStart=` options — see https://jamulus.io/wiki/Running-a-Server#server-mode-related-options. From aba7bf5e5422560e7dda7fabc80349f6adec7be5 Mon Sep 17 00:00:00 2001 From: jrd Date: Sat, 18 Jul 2026 22:46:55 +0000 Subject: [PATCH 2/2] Clarify qmake target naming for both packages pljones asked whether noupcasename was missing from the headless package's config line. It is not: rules passes TARGET=jamulus-headless explicitly there, which makes noupcasename redundant. State both target-naming mechanisms in the README so the asymmetry is explained. Co-Authored-By: Claude Fable 5 --- linux/debian/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux/debian/README.md b/linux/debian/README.md index 9eecc3d84f..7766c3bf91 100644 --- a/linux/debian/README.md +++ b/linux/debian/README.md @@ -22,8 +22,8 @@ along with this program. If not, see [](https:// `linux/deploy_deb.sh` (run from the repository root) uses this directory to build two packages with `debuild`: -- **jamulus** — the desktop client/server (built with `CONFIG+=noupcasename`). -- **jamulus-headless** — a server-only binary (`CONFIG+=headless serveronly`) with no GUI library dependencies, plus a systemd service. +- **jamulus** — the desktop client/server (built with `CONFIG+=noupcasename`, which renames the target from `Jamulus` to `jamulus`). +- **jamulus-headless** — a server-only binary (`CONFIG+=headless serveronly` with `TARGET=jamulus-headless`, so `noupcasename` is not needed) with no GUI library dependencies, plus a systemd service. Most files here are standard Debian packaging (`control`, `rules`, `copyright`, `*.install`, …). `changelog` is regenerated at build time from the top-level `ChangeLog` — don't edit it by hand.