Splux Linux

source-based Linux using SPS

sps-core · log · files · refs · tags · releases · people · languages · GitHub · commit

f03c36c


core: establish repository structure

Date
Commitf03c36c46284958a06ab437686b105b9c633bca6
GitHubmirror

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`.