sps-core · log · files · refs · tags · releases · people · languages · GitHub · commit
f03c36c
core: establish repository structure
Parents
Stat
.github/workflows/lint.yml | 38 +++++++++++++++++++++++++ .gitignore | 5 ++++ BOOTSTRAP.md | 63 ++++++++++++++++++++++++++++++++++++++++++ LICENSE | 16 +++++++++++ README.md | 69 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 191 insertions(+)
Diff
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..e64f408
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,38 @@
+name: repository-check
+
+on:
+ push:
+ pull_request:
+
+permissions:
+ contents: read
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out package tree
+ uses: actions/checkout@v4
+ with:
+ path: tree
+ - name: Check out SPS
+ uses: actions/checkout@v4
+ with:
+ repository: RobertFlexx/SPS
+ path: sps
+ - name: Validate recipes and dependency graph
+ 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/tree" >"$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
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/BOOTSTRAP.md b/BOOTSTRAP.md
new file mode 100644
index 0000000..aa09dbe
--- /dev/null
+++ b/BOOTSTRAP.md
@@ -0,0 +1,63 @@
+# SPS bootstrap notes
+
+The core tree is not yet bootstrap-ready. No end-to-end build from a clean host
+to a self-hosting, bootable SPS system has passed. This file separates the
+current bootstrap contract from work still requiring validation.
+
+## Seed environment
+
+The first pass necessarily starts from host tools. The seed environment must
+provide a Linux build host with a C and C++ compiler, assembler and linker,
+POSIX shell and AWK, make, tar, patch, basic text/file utilities, a SHA-256
+implementation, and the decompressors required by selected sources. Exact
+host versions and commands will be recorded with the first successful
+bootstrap.
+
+The seed toolchain is an explicit bootstrap input, not an undeclared package
+dependency. Ordinary packages must otherwise build in an SPS root containing
+only their selected runtime/build closure. Once native toolchain packages are
+installed, later passes must use those SPS-owned tools.
+
+## Planned passes
+
+1. Install the `filesystem` package into an empty root.
+2. Install Linux API headers and build a temporary binutils/GCC toolchain.
+3. Build and install glibc against those headers.
+4. Rebuild binutils and GCC as native SPS packages.
+5. Build the shell, AWK, make, core text utilities, archives, and compression
+ stack.
+6. Build TLS, download, and Git support, then install SPS from its official
+ release package.
+7. Run `src update` inside the target and rebuild the remaining core closure
+ through `sget` in dependency order.
+8. Add device management, filesystems, networking, service scripts, the
+ kernel, and bootloader packages.
+9. Boot the result, verify network and repository updates, rebuild a package,
+ and test a complete SPS self-upgrade.
+
+Pass-specific bootstrap recipes or commands must remain visible. The normal
+package recipes must not be distorted into one universal bootstrap mode.
+
+## System direction
+
+The intended base is GNU libc with eudev for device management and elogind for
+session interfaces. systemd is not a base dependency. Service installation and
+service enablement are separate operations; packages may provide service files
+but do not enable them automatically.
+
+Kernel configuration is a visible distribution baseline beside the kernel
+recipe, not hidden build logic. Installing GRUB files must never run
+`grub-install` or alter disks or EFI variables. Those are explicit
+administrator actions.
+
+Packages requiring system accounts remain on a testing branch until their
+account requirement and an idempotent, visible creation policy are reviewed.
+Recipes must not choose arbitrary numeric UIDs.
+
+## Proof still required
+
+Before removing the warning at the top of this file, retain external logs for
+both toolchain passes and every core package, verify no undeclared host tools or
+libraries enter the build, test upgrades of critical packages, boot the root,
+and complete the self-hosting sequence above. Package count alone is not
+bootstrap evidence.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..07a1b16
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,16 @@
+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..d8218c0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,69 @@
+# SPS core package collection
+
+This repository contains the official SPS source definitions for the base
+system: the bootstrap toolchain, fundamental libraries and utilities, boot and
+device infrastructure, networking, and SPS itself. It contains recipes and
+small supporting files, not source archives or binary packages.
+
+Package categories are organizational. A package's `name` record is its
+identity; the category is not part of the name. Core uses these categories as
+packages are added:
+
+```text
+base/ boot/ devel/ libs/ net/ system/
+```
+
+No category directory is kept empty.
+
+## Configuration
+
+The normal official configuration is:
+
+```text
+git core https://github.com/RobertFlexx/sps-core.git 100
+```
+
+`src update` clones it to `/usr/src/sps/core` by default and builds the local
+package index. The checkout remains an ordinary Git repository.
+
+```sh
+src update
+src status
+src search bash
+src show bash
+```
+
+An administrator can put overrides in a higher-priority directory repository:
+
+```text
+dir local /usr/local/src/sps-local 200
+git core https://github.com/RobertFlexx/sps-core.git 100
+```
+
+`src which PACKAGE` shows the selected definition and alternatives.
+
+## Building a package
+
+Enter the package directory and run `mkpkg`:
+
+```sh
+cd /usr/src/sps/core/libs/zlib
+mkpkg
+```
+
+Inspect the archive, install it into a disposable SPS root, run `pkcheck` and
+`pkstat`, perform an appropriate smoke test, then remove it with `pkdel`.
+The exact recipe format and verification procedure are documented in the SPS
+package maintainer guide.
+
+## Contributions
+
+Base changes must keep `main` indexable and buildable. Use canonical stable
+upstream archives, exact SHA-256 hashes, reviewed dependencies, and short
+recipes using the upstream build system. Do not commit downloads, package
+archives, or build logs. A package is ready for `main` only after its source,
+build, staged files, install, checks, smoke test, and removal have been
+reviewed. Work that has not passed those checks belongs on a testing branch.
+
+Update one package in place and commit it with a package-specific message, for
+example `zlib: update to 1.3.2`.