aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 731fafdfbec609156b04cade24f059c0f583a65f (plain)
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
# 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 `mkhint -F` to regenerate phantom-dep hintfiles.
  `--yes` applies without asking, `--no` only shows the plan and skips
  `mkhint -F` (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.