sps-community · log · files · refs · tags · releases · people · languages · GitHub · commit
85d4779
Initial commit: sps-community opt-in recipe tree
Parents
Stat
.github/pull_request_template.md | 13 +++++++ .github/workflows/lint.yml | 73 +++++++++++++++++++++++++++++++++++ .gitignore | 5 +++ CONTRIBUTING.md | 48 +++++++++++++++++++++++ LICENSE | 15 ++++++++ README.md | 82 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 236 insertions(+)
Diff
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..be95e1e
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,13 @@
+## Package
+
+- Name:
+- Version:
+- Category directory:
+
+## Checklist
+
+- [ ] `name` is not used in sps-core or sps-extra
+- [ ] Canonical HTTPS source and a SHA-256 I computed myself
+- [ ] `depend` / `builddep` cover the isolated build
+- [ ] I ran `mkpkg`, installed into a disposable SPS root, smoke-tested, and `pkdel`
+- [ ] No source tarballs, binary packages, or build logs in this PR
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..76c078b
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,73 @@
+name: repository-check
+
+on:
+ push:
+ pull_request:
+
+permissions:
+ contents: read
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out community tree
+ uses: actions/checkout@v4
+ with:
+ path: community
+ - name: Check out core tree
+ uses: actions/checkout@v4
+ with:
+ repository: RobertFlexx/sps-core
+ path: core
+ - name: Check out extra tree
+ uses: actions/checkout@v4
+ with:
+ repository: RobertFlexx/sps-extra
+ path: extra
+ - name: Check out SPS
+ uses: actions/checkout@v4
+ with:
+ repository: RobertFlexx/SPS
+ path: sps
+ - name: Validate recipes, graph, and official name collisions
+ shell: sh
+ run: |
+ set -eu
+ work=$(mktemp -d)
+ trap 'rm -rf "$work"' 0 1 2 3 15
+ mkdir -p "$work/root" "$work/db" "$work/cache" "$work/build"
+ : >"$work/sps.conf"
+ {
+ printf 'dir core %s 100\n' "$GITHUB_WORKSPACE/core"
+ printf 'dir extra %s 80\n' "$GITHUB_WORKSPACE/extra"
+ printf 'dir community %s 50\n' "$GITHUB_WORKSPACE/community"
+ } >"$work/repos.conf"
+ SPS_ROOT="$work/root" \
+ SPS_DB="$work/db" \
+ SPS_CACHE="$work/cache" \
+ SPS_BUILD="$work/build" \
+ SPS_CONFIG="$work/sps.conf" \
+ SPS_REPOS_CONFIG="$work/repos.conf" \
+ "$GITHUB_WORKSPACE/sps/bin/src" update
+ index=$work/cache/indexes/packages.index
+ [ -f "$index" ] || {
+ printf '%s\n' 'repository-check: missing package index' >&2
+ exit 1
+ }
+ awk -F '\t' '
+ $8 == "core" { official[$1] = "core" }
+ $8 == "extra" { official[$1] = "extra" }
+ $8 == "community" { community[$1] = 1 }
+ END {
+ err = 0
+ for (name in community) {
+ if (name in official) {
+ printf "community package \"%s\" collides with %s\n", \
+ name, official[name] > "/dev/stderr"
+ err = 1
+ }
+ }
+ exit err
+ }
+ ' "$index"
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..194a1c1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.pkg.tar
+*.pkg.tar.gz
+*.pkg.tar.xz
+*.pkg.tar.zst
+build-logs/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..dbb7a92
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,48 @@
+# Contributing to sps-community
+
+One package per pull request. The pull request is not merged until the
+recipe indexes, the sources hash, and someone has actually built it.
+
+## Before you open a PR
+
+1. Confirm the `name` is not already in
+ [sps-core](https://github.com/RobertFlexx/sps-core) or
+ [sps-extra](https://github.com/RobertFlexx/sps-extra). Search
+ https://splux.robertflexx.dev/packages/ as well.
+2. Read the [SPS package maintainer guide](https://github.com/RobertFlexx/SPS/blob/main/PACKAGE-MAINTAINER.md).
+3. Put the recipe in `category/name/recipe`. Create the category directory
+ only for this package.
+4. Use a canonical upstream tarball or zip, HTTPS, with `hash sha256:` and
+ exactly 64 hex digits. Download it yourself and hash it. Do not copy a
+ digest from a web page you did not verify.
+5. Declare every library and tool the build needs. Isolated builds install
+ only `depend` and `builddep`. If configure auto-detects a library, name
+ it and fail the build when that feature is missing.
+6. Shared libraries go in `lib64` on this architecture
+ (`--libdir=/usr/lib64` or Meson `--libdir=lib64`).
+7. Build it:
+
+```sh
+cd category/name
+mkpkg
+```
+
+8. Install into a disposable root, run `pkcheck` and a smoke test, then
+ `pkdel`. Do not open a PR for a recipe that has never been compiled.
+
+## What the bots check
+
+GitHub Actions runs `src update` with core (100), extra (80), and this
+tree (50). That catches unknown recipe keys, bad hashes, dependency cycles,
+and package names that collide with core or extra. It does not compile
+upstream software. A green check is necessary, not sufficient.
+
+## Commit messages
+
+Use a package-specific subject, for example `ripgrep: add 15.0.0`.
+
+## After merge
+
+Users who enabled community run `src update` and can `sget install` the
+package. Official Splux installs do not see it until they add the git line
+themselves.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..409cde7
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2026 SPS contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..11ef150
--- /dev/null
+++ b/README.md
@@ -0,0 +1,82 @@
+# SPS community package collection
+
+This repository is the **opt-in** community recipe tree for **SPS Linux**
+(informally Splux). Recipes only; no source tarballs or binary packages.
+
+It is **not** enabled by `setup`, `mkiso`, or a fresh `install-config`.
+Core (priority 100) and extra (80) are. Community uses priority **50**, so an
+official package of the same name always wins if both trees are configured.
+
+SPS the package system is not tied to Splux. Any SPS root can index this tree
+the same way.
+
+## Enable it
+
+Add one line to `/etc/sps/repos.conf`, below extra, then update:
+
+```text
+git core https://github.com/RobertFlexx/sps-core.git 100
+git extra https://github.com/RobertFlexx/sps-extra.git 80
+git community https://github.com/RobertFlexx/sps-community.git 50
+```
+
+On a machine that already has bundled `dir` trees:
+
+```text
+dir core /usr/src/sps/core 100
+dir extra /usr/src/sps/extra 80
+git community https://github.com/RobertFlexx/sps-community.git 50
+```
+
+Then:
+
+```sh
+src update
+src search PATTERN
+sget info PACKAGE
+sget install PACKAGE
+```
+
+`src update` clones the checkout to `/usr/src/sps/community` by default.
+Remove the `git community` line and run `src update` again to drop it from
+the index. The checkout on disk is yours to delete.
+
+Do not put community at a priority above extra or core. Do not reuse a
+package `name` that already exists in those trees.
+
+## What belongs here
+
+Software that is useful on Splux, has a canonical upstream archive and a
+SHA-256, and is not already in core or extra. Category directories are
+organizational and are created only when they contain a package:
+
+```text
+audio/ cli/ devel/ editors/ fonts/ games/ graphics/ lang/ libs/
+misc/ net/ science/ shells/ sys/ www/ x11/
+```
+
+Other category names are fine when they fit the software. The category is
+not part of the package name.
+
+Promote a package into extra only after it has been built, installed,
+checked, and used. Community is the front door, not a second extra with
+weaker review.
+
+## Contributions
+
+Open a pull request against `main` with **one package**. Follow
+[CONTRIBUTING.md](CONTRIBUTING.md). CI runs `src update` against core,
+extra, and this tree together, so undeclared dependencies and name
+collisions fail the index.
+
+Use canonical stable upstream archives, exact SHA-256 hashes, declared
+`depend` / `builddep` lines, and the upstream build system. Do not commit
+downloads, package archives, or build logs. A recipe that merely parses is
+not ready; build it with `mkpkg`, install it into a disposable SPS root,
+smoke-test it, and remove it with `pkdel`.
+
+The recipe format is documented in the SPS package maintainer guide.
+
+```text
+git clone https://github.com/RobertFlexx/sps-community.git
+```