build: install the manual alone, into the prefix or the user datadir
The manual is the only thing udpscope installs, but the only way to get it where `help:` resolves was a whole `cmake --install`. Two opt-in targets now install just the set, each printing where it wrote: - install-help goes through the install machinery into CMAKE_INSTALL_PREFIX (reachable via the new Help component), so a packager or a system-wide user points it at /usr and wraps it in sudo; - install-help-user resolves the user data directory the way the app does ($XDG_DATA_HOME, else $HOME/.local/share) and copies there without root. Neither is built by default and neither changes what `cmake --install` does; the install() rule keeps its destination.
This commit is contained in:
1 parent
bb62b8178c
commit
669db6df9a
4 files changed
+110
-1
No files matched your search
@@ -74,6 +74,28 @@ GApplication id and the install directory at once. The figures are regenerated b
|
||||
`tools/make-help-shots.sh`, which drives the app headlessly against the mock and draws the annotation
|
||||
boxes with ImageMagick; Mallard is translatable with `itstool`, but only the `C` set is authored.
|
||||
|
||||
Because the manual is the only thing udpscope installs, it can be installed *alone* — where `help:`
|
||||
finds it, and without the `cmake --install` of a whole project — by either of two opt-in targets.
|
||||
Neither is built by default and `cmake --build build` never touches either:
|
||||
|
||||
```sh
|
||||
cmake --build build --target install-help-user # <data-home>/help/C/<id>/, no root
|
||||
cmake --build build --target install-help # <CMAKE_INSTALL_PREFIX>/share/help/C/<id>/
|
||||
```
|
||||
|
||||
`install-help-user` writes to `$XDG_DATA_HOME` when it is set and to `$HOME/.local/share` when it is
|
||||
not — the XDG Base Directory Specification's own default for the variable, and the fallback
|
||||
`help_installed_path()` uses — so it needs no root and lands the set exactly
|
||||
where `F1` and the alert look for it. `install-help` goes through the install machinery into the
|
||||
configured `CMAKE_INSTALL_PREFIX`, so a packager or a system-wide user points it at `/usr` with
|
||||
`-DCMAKE_INSTALL_PREFIX` at configure time. Neither target can install system-wide by itself: a build
|
||||
target has no more privilege than the shell that ran it, so `install-help` writes to the configured
|
||||
prefix and a system-wide caller wraps it in `sudo`. Both print where they wrote. Both land the same
|
||||
tree the `install()` rule does — the user-local copy applies that rule's file filter, and the
|
||||
prefix-wide target *is* that rule, reached through the `Help` component
|
||||
(`cmake --install --component Help`) — and the ordinary `cmake --install` still installs every
|
||||
component, so its behaviour is unchanged.
|
||||
|
||||
Options: `--server`, `--port`, `--multicast`, `--interface`, `--buffer-mb` (per
|
||||
buffer, default 200), `--max-window`, `--holdoff`, `--recv-buffer`, `--plots` (the row
|
||||
count to *start* with, 1..`RowSet::kMaxRows`; the layout editor owns it afterwards),
|
||||
|
||||
Reference in new issue
Block a user