99e5641127
Pipeline (3 operator asks): - bump-release.sh: canonical orchestrator (forks + sources + external) - upgrade-forks.sh --to=<tag>: rebase forks with diverged-mode guard - bump-graphics-recipes.sh: map-driven group-aware graphics bumps - check-external-versions.sh: drift checker for Qt6/KF6/Plasma/Mesa/Wayland - refresh-fork-upstream-map.sh: append-only map updater with --check - post-checkout-version-sync.sh + install-git-hooks.sh: opt-in branch hook - external_version_lib.py: shared version-parsing/bumping library - external-upstream-map.toml: ~80 external package entries - bump-fork.sh: deprecated (REDBEAR_I_KNOW_BUMP_FORK_IS_DEPRECATED=1) - RELEASE-BUMP-WORKFLOW.md: operator runbook Quality fixes (8 defects from two independent audits): - blake2b stable cache keys (was hash(), non-portable) - atomic cache writes via os.replace - version_sort_key pre-release demotion (was sorting after finals) - apply_ver_transform re.error tolerance - grep || true (pipefail abort) - cd failure detection in upgrade-forks - sed URL escape (injection hardening) - refresh-fork-upstream-map last-row drop fix Doc cleanup: - Archive 5 obsolete plans to local/docs/archived/ - Remove 14 stale/superseded docs - Update 18 docs to reference bump-release.sh and fix inbound links - TOOLS.md drift fixes
3.2 KiB
3.2 KiB
Source Archival Policy — Red Bear OS
Effective: 2026-04-29 Status: Active / Enforceable
Principle
Every source archive exported to sources/<target-triple>/ must include the package version
number in its filename, and must contain the fully-patched source tree as it was used during the
build. No archive may be named solely by category — every archive filename must carry a version
qualifier.
Naming Convention
sources/<target-triple>/<category>-<pkgname>-v<version>-patched.tar.gz
| Component | Meaning | Example |
|---|---|---|
<category> |
Recipe category directory | core, libs, wip |
<pkgname> |
Package name from recipe directory | base, dbus, qtbase |
<version> |
Source version from recipe (tar/git rev) | 1.16.2, 6.11.0, 463f76b |
patched |
Indicates all recipe patches are applied | always present |
Examples:
core-base-v463f76b-patched.tar.gz
wip-services-dbus-v1.16.2-patched.tar.gz
wip-qt-qtbase-v6.11.0-patched.tar.gz
wip-qt-qtdeclarative-v6.11.0-patched.tar.gz
core-relibc-v2025-10-03-patched.tar.gz
Version Sources
The version is extracted from the recipe's [source] block:
| Source type | Version extraction |
|---|---|
tar = "https://.../pkg-X.Y.Z.tar.xz" |
Extract X.Y.Z from URL |
git = "https://...repo.git" + rev = "abc123" |
Use git rev short hash (abc123) |
path = "source" (local) |
Use the recipe's [source] section name or a manual version marker |
Archive Contents
Each versioned archive must contain:
- The fully patched source tree at
recipes/<category>/<pkgname>/source/— after allpatches = [...]have been applied - The recipe file (
recipe.toml) that defines the build - A metadata file (
source-info.json) with: package name, version, source type, patch list, and build date
Metadata format
{
"package": "dbus",
"version": "1.16.2",
"source_type": "tar",
"source_url": "https://dbus.freedesktop.org/releases/dbus/dbus-1.16.2.tar.xz",
"blake3": "b1d1f22858a8f04665e5dca29d194f892620f00fd3e3f4e89dd208e78868436e",
"patches": ["redox.patch"],
"build_date": "2026-04-29T00:00:00Z",
"target": "x86_64-unknown-redox"
}
Enforcement
- The
packages.txtmanifest insources/<target-triple>/lists all exported packages with versions - Every CI/documentation run that exports sources must use versioned naming
- An archive without a version number is considered incomplete — it must be regenerated
- The
make sourcestarget (when created) will auto-generate versioned archives
Existing Non-Versioned Archives (Migration)
Current archives in sources/x86_64-unknown-redox/ named like core-base.tar.gz are legacy.
They must be migrated to the versioned naming convention on next rebuild:
| Old name | New name |
|---|---|
core-base.tar.gz |
core-base-v463f76b-patched.tar.gz |
core-kernel.tar.gz |
core-kernel-v<rev>-patched.tar.gz |
core-relibc.tar.gz |
core-relibc-v<rev>-patched.tar.gz |
libs-mesa.tar.gz |
libs-mesa-v<ver>-patched.tar.gz |
Related
../AGENTS.md— repository structure and durability policydocs/06-BUILD-SYSTEM-SETUP.md— build system mechanicslocal/docs/PATCH-GOVERNANCE.md— patch governance policy