aboutsummaryrefslogtreecommitdiffstats
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-07-10 19:36:30 +0200
committerDanilo M. <danix@danix.xyz>2026-07-10 19:36:30 +0200
commitd85e36a1156a25681d81c84ff1c0b47b4eb88a35 (patch)
tree919c6432b663917bba761397614027aedae155e5 /CLAUDE.md
downloadsbo-slackbuilds-d85e36a1156a25681d81c84ff1c0b47b4eb88a35.tar.gz
sbo-slackbuilds-d85e36a1156a25681d81c84ff1c0b47b4eb88a35.zip
Initial import: r8125, UrbanTerror
SBo-official packages maintained by danix, split out of my-slackbuilds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md163
1 files changed, 163 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..41d25a8
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,163 @@
+# SBo SlackBuilds Repository
+
+SlackBuild scripts maintained by Danilo (danix) and submitted to
+[SlackBuilds.org (SBo)](https://slackbuilds.org). This repo holds ONLY the
+packages for which danix is the **official SBo maintainer**. Lead and
+experimental packages not on SBo under danix live in the separate
+`my-slackbuilds` repository.
+
+---
+
+## Repo Structure
+
+Each package lives in its own top-level subfolder:
+
+```
+<package-name>/
+├── <package-name>.SlackBuild # Main build script
+├── <package-name>.info # Metadata (version, checksums, URLs)
+├── README # Description and usage notes
+├── slack-desc # Package description (11-line format)
+├── <package-name>.desktop # (optional) Desktop entry for GUI apps
+└── [...] # other optional files
+```
+
+Version tracking is handled by a single file:
+
+```
+.extras/nvchecker.toml # nvchecker config listing all packages
+```
+
+### `.extras/` holds all non-package repo files
+
+Anything that is not a SlackBuild package must live under `.extras/`, never at
+the repo root.
+
+---
+
+## SlackBuild Scripting Guidelines
+
+- Follow the [SBo template](https://slackbuilds.org/templates/) as the base for all scripts
+- Use `set -e` to abort on errors
+- Honor `$TMP`, `$BUILD`, `$TAG`, `$OUTPUT` variables; default values must be set if unset
+- Use `$ARCH` detection with proper `SLKCFLAGS` and `LIBDIRSUFFIX`
+- Strip binaries and libraries unless upstream explicitly discourages it
+- Install docs to `/usr/doc/$PRGNAM-$VERSION/`
+- Always include `find -L` + `chown`/`chmod` cleanup block before packaging
+- Copy repo files into `$PKG` with `cat src > dest`, never `cp`. `cat` writes
+ through a fresh destination so the build's umask/root ownership sets the
+ perms; `cp` bleeds the git working-tree mode/ownership into the package.
+ Applies to `slack-desc`, `doinst.sh`, and any file staged from `$CWD`
+ (SlackBuild, README, `.nvchecker`) into `$PKG`.
+- Use `makepkg -l y -c n` to create the final package
+
+### `.info` file
+
+Must contain:
+```
+PRGNAM, VERSION, HOMEPAGE, DOWNLOAD, MD5SUM (or SHA256SUM), REQUIRES, MAINTAINER, EMAIL
+```
+- Checksums must match the exact source archive
+- MAINTAINER/EMAIL are danix's, since this repo is his SBo-official packages
+- Use `REQUIRES=""` if no SBo dependencies; list space-separated SBo package names otherwise
+
+### `slack-desc`
+
+- Exactly 11 lines in the `package-name: description` format
+- First line: `package-name: package-name (short one-liner)`
+- Lines 2–11: description, leave blank lines as `package-name:`
+- Handy ruler line must be included (but not shipped)
+
+---
+
+## Version Tracking: nvchecker
+
+A single `.extras/nvchecker.toml` tracks upstream versions for all packages.
+
+To check for new upstream versions:
+
+```bash
+nvchecker -c .extras/nvchecker.toml
+```
+
+When a new version is detected, update `VERSION` in both `.SlackBuild` and
+`.info`, then run `sbofixinfo` to refresh checksums.
+
+**Every package added to this repo must have a corresponding entry in
+`.extras/nvchecker.toml`.**
+
+For **nvchecker** github stanzas prefer `use_latest_release` (hits
+`releases/latest`, lenient) over `use_max_tag` (hits `git/refs/tags`, tightly
+rate-limited and 403s under the shared anon budget); use `use_max_tag` only for
+repos that tag but don't cut Releases (a `use_latest_release` probe 404s on
+those). Probe ONE stanza with `nvchecker -c <cfg> -e <name>`.
+
+---
+
+## Tooling: sbo-maintainer-tools
+
+Source: https://slackware.uk/~urchlay/repos/sbo-maintainer-tools
+
+| Tool | Purpose |
+|------|---------|
+| `sbolint` | Lint `.SlackBuild`, `README`, `.info`, `slack-desc` |
+| `sbopkglint` | Lint the built package |
+| `sbofixinfo` | Auto-fix common `.info` file issues |
+| `sbodl` | Download sources and verify `MD5SUM`/`SHA256SUM` from `.info` |
+
+### Git hook setup
+
+Both hooks are tracked in `.extras/hooks/`. Install them after cloning:
+
+```bash
+cp .extras/hooks/pre-commit .git/hooks/pre-commit
+cp .extras/hooks/post-commit .git/hooks/post-commit
+chmod +x .git/hooks/pre-commit .git/hooks/post-commit
+```
+
+To bypass the pre-commit lint check in exceptional cases:
+```bash
+SBOLINT=no git commit -m'Message here'
+```
+
+Note: `sbodl` creates symlinks in the package directory pointing to downloaded
+sources. Remove them before staging (`find . -type l -delete`); they must never
+be committed.
+
+---
+
+## Who builds SlackBuilds
+
+Only the user builds SlackBuilds, on their own infra. Claude authors/edits the
+sources (`.SlackBuild`, `.info`, `README`, `slack-desc`, `doinst.sh`, nvchecker
+stanzas) and runs only the non-building checks (`sbolint`, `sbodl`,
+`sbofixinfo`); the user builds and reports back. Never run or offer
+`bash <pkg>.SlackBuild`, `sbopkglint`, or `slackrepo build`.
+
+---
+
+## SBo Submission Guidelines
+
+Before submitting or updating a package on SlackBuilds.org:
+
+1. **Pass all lint checks** — `sbolint` and `sbopkglint` must report no errors
+2. **Test the build** on a clean Slackware installation (or VM snapshot)
+3. **Verify checksums** via `sbodl` before committing
+4. **Check `README`** includes all non-SBo dependencies and any special build notes
+5. **Follow the SBo submission guidelines**: https://slackbuilds.org/guidelines/
+6. **Bump `VERSION`** in both `.SlackBuild` and `.info` when updating
+7. **Run `sbofixinfo`** after every version bump to catch stale checksums/URLs
+
+---
+
+## Commit Conventions
+
+- One commit per package add/update
+- Commit message format: `<package-name>: add version X.Y.Z` or `<package-name>: update to X.Y.Z`
+- For fixes: `<package-name>: fix <short description>`
+
+---
+
+## Maintainer
+
+danix