aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md92
1 files changed, 73 insertions, 19 deletions
diff --git a/README.md b/README.md
index fb4fd05..67e820f 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,52 @@
# sb-builder
Desktop GUI for managing a Slackware SlackBuilds build VM from one place. It
-runs slackrepo builds, overlay syncs (sbpull, sbshadow), hint file updates
-and SBo orphan discovery on the VM over ssh, as background jobs that
-keep running when the GUI disconnects and can be reattached later. A
-dashboard shows VM and repository state, and the GUI can start the VM through
-libvirt when it is off.
-
-Work in progress. See `docs/superpowers/specs/` for the design.
+runs slackrepo builds, overlay syncs (sbpull, sbshadow) and hint file updates
+on the VM over ssh, as background jobs that keep running when the GUI
+disconnects and can be reattached later. Upstream versions are checked with
+nvchecker on the desktop. A dashboard shows VM and repository state,
+including the packages SBo lists without a maintainer, and the GUI can start
+the VM through libvirt when it is off.
+
+It is built around one setup: a Slackware64-current VM building a personal
+repository with [slackrepo](https://github.com/aclemons/slackrepo), laid out
+by [slackrepo_setup](https://forge.slackware.nl/danix/slackrepo_setup) (the
+SBo tree plus overlays as git subtrees). The defaults (VM `buildsystem`,
+repository `SBo-danix`, overlays `personal` and `pentesting`) are the
+author's; every one of them is a config key. `nvchecker.toml` is the
+author's list of tracked packages.
+
+Still to come: a guarded full repository rebuild, and an SBo orphans screen.
+The design, one spec per phase, is in `docs/design/`.
## Requirements
- Desktop: Python 3.11 or newer, PyQt6 (with QtDBus), ssh access to the VM,
optionally `virsh` for starting the VM and `nvchecker` for upstream checks
- VM: Python 3.11 or newer, root ssh login, the
- [slackrepo_setup](https://forge.slackware.nl/danix/slackrepo_setup) tools (`sbpull`, `sbshadow`)
+ [slackrepo_setup](https://forge.slackware.nl/danix/slackrepo_setup) tools (`sbpull`, `sbshadow`,
+ `slackrepo_setup_SBo-danix.sh`)
+
+## VM setup
+
+1. A Slackware64-current VM with Python 3.11 or newer (stock), reachable over
+ ssh as root with a key. A host alias in `~/.ssh/config` keeps the GUI config
+ short. For start and resume from the GUI, a libvirt domain on the desktop.
+2. slackrepo and slackrepo-hints (SBo) installed on the VM.
+3. The repository and its slackrepo config from
+ [slackrepo_setup](https://forge.slackware.nl/danix/slackrepo_setup): follow
+ its Install section, fill `/etc/slackrepo/SBo-danix.local`, then run
+ `slackrepo_setup_SBo-danix.sh` once to build the repository.
+4. Package signing: a gpg key in root's keyring, `/root/.genreprc` with
+ `USE_GPGAGENT=1` and `REPOSOWNERGPG=<fingerprint>` (read by slackrepo's
+ `gen_repos_files.sh`), and slackrepo_setup's `gpg-agent.conf`, which lets
+ the GUI unlock the key for jobs.
+5. `./install.sh --remote` from the desktop (below) installs the helper and
+ `/etc/sb-builder/config.toml`. For another repository, set `repo_dir`,
+ `overlays`, `slackrepo_repo`, `slackrepo_db`, `hintdir` and
+ `slackrepo_logdir` there.
+6. The phantom deps list (`/etc/sb-builder/phantom-deps`) starts empty; fill it
+ from Hints, Phantom deps.
## Install
@@ -27,7 +59,11 @@ Work in progress. See `docs/superpowers/specs/` for the design.
- GUI: `~/.config/sb-builder/config.toml`, see `config.example.toml`
- VM: `/etc/sb-builder/config.toml`, see `remote/config.example.toml`
-Every key is optional. `File > Reload config` rereads the GUI config.
+Every key is optional. Both configs also have settings pages in Keystone (the
+quickshell desktop shell); the files stay hand-editable. The GUI rereads its
+config when the file changes (`File > Reload config` does it by hand), and
+Keystone edits the VM's through `sbb-remote config-get` / `config-set`, which
+refuse a file that does not load and keep the previous one as `config.toml.bak`.
Column widths, sort order, splitter positions and the window size are kept
across runs in `~/.config/sb-builder/state.conf` (delete it to reset them; on
Wayland the compositor may still pick the window size).
@@ -36,8 +72,8 @@ Wayland the compositor may still pick the window size).
sb-builder
-The window has five tabs, always open: Dashboard, Packages, Hints, Results,
-Jobs (Ctrl+PgUp/PgDn cycle them). The ribbon at the top holds the current
+The window has six tabs, always open: Dashboard, Packages, Hints, Results,
+Repository, Jobs (Ctrl+PgUp/PgDn cycle them). The ribbon at the top holds the current
tab's actions, in the order a task uses them; the smaller bar under it holds
its view controls (select, clear, refresh). An action that does not apply is
greyed out, its tooltip says why. Actions act on the **ticked** rows: a click
@@ -54,14 +90,24 @@ reopens it.
- **Dashboard**: VM load, uptime and free disk, package counts, slackrepo
build results, last overlay pull, SBo orphans, recent jobs. Refreshes while
visible. The tiles open Packages (the orphans tile with only the orphaned
- filter on), Results (one result kind) and Jobs.
-- **Packages**: every package of the repository, with built version and
- status (`ok`, `failed`, `never`, `outdated`). Search by name or summary, or
- with `cat:`, `maint:`, `req:`, `status:`; toggle the overlay and status
- chips, and **orphaned** for the packages SBo lists without a maintainer. The detail pane shows the package's versions, its dependencies after
+ filter on), Results (one result kind) and Jobs; Built lists the packages
+ to prune (built, SlackBuild gone).
+- **Packages**: every package of the repository, with built version, hint
+ and status (`ok`, `failed`, `never`, `outdated`, `newer`: built newer than
+ the target, e.g. after a pin left its hint, so a build would downgrade). The
+ hint column says what the hint does: `pin` (sets `VERSION`), `deps` (only
+ `DELREQUIRES`/`ADDREQUIRES`), `skip`, `other`. Search by name or summary,
+ or with `cat:`, `maint:`, `req:`, `status:`, `hint:` (`hint:none` for no
+ hint); toggle the overlay and status
+ chips, and **orphaned** for the packages SBo lists without a maintainer.
+ The detail pane shows the package's versions, its dependencies after
hints (dropped ones struck through), what its hint file does, and a link
- to it in Hints. **Build**, **Update**, **Rebuild**, **Remove** and **Update
- all** run a slackrepo `--preview` first; **New hint** creates hints, pinned
+ to it in Hints. **Build** (also updates outdated packages), **Rebuild**,
+ **Remove** and **Update all** run a slackrepo `--preview` first; **Prune**
+ removes built packages whose SlackBuild is gone from the tree (e.g. moved
+ to Slackware), the same removal Update all does, without building. A run
+ whose packages fail is marked failed and opens **Build results**: each
+ package's result, its log, and **Retry failed**; **New hint** creates hints, pinned
at the `.info` version, for the ticked packages without one; **Publish**
pushes the package repository (untick **publish** at Run it to hold a run
back and publish later).
@@ -88,10 +134,18 @@ reopens it.
the log of the package's last attempt (slackrepo keeps one per command:
`build.log`, `update.log`, `rebuild.log`, `remove.log`), where it reports
the failure, with its `resource.log` (load, memory, tmp over the build).
+- **Repository**: the packages slackrepo built, read from the local mount of
+ its package repository (`[repository] path`, default `/repo`; no VM
+ needed). Tiles for count (per overlay), size, unpublished (opens that
+ filter) and last publish; search by name or description, overlay and `unpublished` chips;
+ the detail pane shows the description, sizes and the package's ChangeLog
+ entries, with a link to it in Packages.
- **Jobs**: every job with its live log. **Pull overlay** (`sbpull <overlay>`)
and **Check shadowing** (`sbshadow`) run as previews; when one finds
`shadow:` or `unshadow:` lines, its dialog offers **Apply shadowing**.
- **Kill** stops the selected running job.
+ **Rebuild tree** (after a confirm) replaces the SBo-danix tree with a fresh
+ clone of upstream and the overlays (`slackrepo_setup_SBo-danix.sh`); the live
+ tree stays until the new one is ready. **Kill** stops the selected running job.
- Real runs sign the repository. When the package signing key is locked
(status bar 🔒), the GUI asks for its passphrase first and hands it to the
VM's gpg-agent; it is never stored.