Add linux/debian/README.md: packaging overview and headless service - #3799
Conversation
| `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. |
There was a problem hiding this comment.
noupcasename missing here?
There was a problem hiding this comment.
Not missing — rules sets TARGET=jamulus-headless explicitly for that build, which overrides the target name directly (noupcasename only renames the default Jamulus → jamulus). Updated the README to spell out both mechanisms so the asymmetry is clear.
There was a problem hiding this comment.
Thanks.
I wonder why, though. Unless there's a good reason, we should be consistent. Is TARGET used elsewhere? (I mean, we added noupcasename specifically for Debian, if I remember correctly.)
There was a problem hiding this comment.
Note
📡 STAND BY FOR AN LLM-AUTHORED MESSAGE.
TARGET isn't used anywhere else in Jamulus.pro for naming — it's set in exactly two places: the noupcasename block (TARGET = jamulus) and the qmake command line in rules (TARGET=jamulus-headless). A qmake command-line variable always overrides an assignment in the .pro file, so passing TARGET=jamulus-headless on the command line makes noupcasename redundant for that build regardless — it would just get overridden right back. So there's no real inconsistency: noupcasename is the mechanism for the desktop build (there's no better name-changing hook at that call site), and an explicit TARGET= override is the mechanism for headless, because that build wants a completely different binary name, not just a case change. I've trimmed the README line per the suggestion below so it states the facts without asserting a design opinion — happy to spell the reasoning out inline instead if you'd rather have it in the doc than in this thread.
There was a problem hiding this comment.
It might be worth documenting in the Jamulus.pro rather than surfacing it to the debian-specific README. Anyone maintaining Jamulus.pro would need to be aware of the intent.
Probably a separate PR, though, at this point.
| @@ -0,0 +1,34 @@ | |||
| ### Debian packaging | |||
There was a problem hiding this comment.
Actually better
| ### Debian packaging | |
| # 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`, 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. |
There was a problem hiding this comment.
| - **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. | |
| - **jamulus-headless** — a server-only binary (`CONFIG+=headless serveronly` with `TARGET=jamulus-headless`) with no GUI library dependencies, plus a systemd service. |
ann0see
left a comment
There was a problem hiding this comment.
Once everything is squashed into one commit I think this is ready.
Documents the Debian packaging layout (jamulus and jamulus-headless targets), qmake target naming, and how to build and install both packages, including the headless systemd service. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Requested by @ann0see in #3790 (comment) ("Add a README.md to linux/debian explaining this then").
One new file. Explains what
deploy_deb.shbuilds from this directory (the two packages and their qmake configs), notes thatchangelogis generated at build time, and documentsjamulus-headless.service: what it runs, as which user, and where to configure it — linking to the server options page on jamulus.io rather than duplicating it.CHANGELOG: SKIP
🤖 Generated with Claude Code