Add linux/debian/README.md: packaging overview and headless service - #3799
Add linux/debian/README.md: packaging overview and headless service#3799mcfnord wants to merge 6 commits into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| `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.
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 <noreply@anthropic.com>
Co-authored-by: ann0see <20726856+ann0see@users.noreply.github.com>
Co-authored-by: ann0see <20726856+ann0see@users.noreply.github.com>
| @@ -0,0 +1,34 @@ | |||
| ### Debian packaging | |||
There was a problem hiding this comment.
Actually better
| ### Debian packaging | |
| # Debian packaging |
Per ann0see's latest review comment (h1 reads better as the page title than the h3 used previously).
| `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. |
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