1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# slackrepo_setup
Builds a personal Slackware SlackBuilds repository for
[slackrepo](https://github.com/aclemons/slackrepo) at `/var/lib/sbopkg/SBo-danix`,
targeting slackware64-current.
The upstream SBo tree (`Ponce/slackbuilds`, branch `current`) is cloned, then two
personal overlays are added as squashed git subtrees:
- `personal/` from [my-slackbuilds](https://github.com/danixland/my-slackbuilds)
- `pentesting/` from [Slackware-Pentesting-Suite](https://github.com/danixland/Slackware-Pentesting-Suite)
Any upstream package also carried in an overlay is *shadowed* (removed from the
upstream tree), so the overlay version wins.
## Files
- `slackrepo_setup_SBo-danix.sh`: full rebuild. Wipes the repo, clones upstream,
adds the subtrees, then runs `sbshadow`. **Destructive**: `rm -rf`s the repo
on every run.
- `sbshadow`: reconciles shadowing both ways. Shadows upstream packages now
carried in an overlay, and restores (unshadows) upstream packages no longer
carried, from the pristine `current` branch. Asks once before changing
anything, commits, then runs `sbb-remote fix-current-now` (sb-builder's
helper) to regenerate phantom-dep hintfiles. `--yes` applies without
asking, `--no` only shows the plan and skips the regen (for
non-interactive callers such as sb-builder). `SBO_REPO` overrides the repo
path.
- `slackrepo_SBo-danix.conf`: the slackrepo config for this repo
(`/etc/slackrepo/`). Site values (rsync target, Gotify URL and key) are not
in it: it sources the root-only `/etc/slackrepo/SBo-danix.local`, see
`SBo-danix.local.example`. Hooks honour `SBB_PUBLISH=n` (no rsync push, set by
sb-builder for unpublished runs), and a `--preview` neither notifies Gotify
nor runs `manage-packages.sh` for real.
- `sb-publish`: pushes the package repository to the mirror. Called by the
config's `rsync_push_hook`; run it by hand to publish builds made with
`SBB_PUBLISH=n`.
- `gpg-agent.conf`: root's gpg-agent config, with `allow-preset-passphrase` so
sb-builder can unlock the package signing key for jobs that have no tty.
- `make-local.py`: one-off migration, builds `SBo-danix.local` from the values
in an older config that still had them inline.
- `sbpull.bash`: `sbpull {personal|pentesting} [--yes|--no]` shell function.
Pulls one overlay subtree and runs `sbshadow` (passing the flag on), to
carry overlay changes without a full rebuild. Source it from root's
`~/.bashrc`.
## Install
```bash
install -m 755 slackrepo_setup_SBo-danix.sh sbshadow sb-publish /usr/local/bin/
echo ". /path/to/sbpull.bash" >> ~/.bashrc
install -m 644 slackrepo_SBo-danix.conf /etc/slackrepo/
install -m 600 SBo-danix.local.example /etc/slackrepo/SBo-danix.local # then edit
install -m 600 gpg-agent.conf /root/.gnupg/ && gpgconf --reload gpg-agent
```
Optional: `mkhint` (mkhintfile repo) for phantom-dep hintfile
regeneration. Without it, `sbshadow` prints a note and skips that step.
## Usage
```bash
slackrepo_setup_SBo-danix.sh # weekly full rebuild
sbpull personal # pull overlay changes in between
```
## License
GPLv2 only. See [LICENSE](LICENSE).
## Development Approach
This project is developed using AI-assisted tools. Code is generated with the help of AI based on human-provided specifications, design decisions, and iterative feedback.
All contributions are reviewed, tested, and curated by the maintainer before being included in the codebase. AI is used as a productivity and exploration tool, while human oversight remains central to all decisions.
The goal is to combine the flexibility of AI-assisted development with standard open-source practices such as transparency, review, and accountability.
|