17e5852919
Packages/ is the canonical binary package repository for Red Bear OS. Contains stage.pkgar copies of all built packages (91 files). New scripts: - local/scripts/sync-packages.sh: syncs built pkgar → Packages/ - make packages-sync: run sync - make packages-list: list package count Future: cache-auto will auto-sync to Packages/ after each build.
45 lines
1.4 KiB
Bash
Executable File
45 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Red Bear OS — Package Repository Sync
|
|
# Copies all built stage.pkgar files to Packages/ directory.
|
|
# This is the canonical binary package repository for Red Bear OS.
|
|
#
|
|
# Usage:
|
|
# ./local/scripts/sync-packages.sh Sync all built packages
|
|
# ./local/scripts/sync-packages.sh --verify Verify package integrity
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/../.."
|
|
|
|
PKG_DIR="Packages"
|
|
mkdir -p "${PKG_DIR}"
|
|
|
|
if [ "${1:-}" = "--verify" ]; then
|
|
echo "=== Package Integrity Check ==="
|
|
ok=0; bad=0
|
|
for pkgar in "${PKG_DIR}"/*.pkgar; do
|
|
[ -f "$pkgar" ] || continue
|
|
pkg=$(basename "$pkgar" .pkgar)
|
|
if [ -s "$pkgar" ]; then
|
|
ok=$((ok+1))
|
|
else
|
|
echo " EMPTY: $pkg"
|
|
bad=$((bad+1))
|
|
fi
|
|
done
|
|
echo "Valid: $ok, Empty: $bad"
|
|
exit $bad
|
|
fi
|
|
|
|
echo "=== Syncing Packages ==="
|
|
count=0
|
|
while IFS= read -r pkgar; do
|
|
pkg_path=$(dirname "$(dirname "$(dirname "$pkgar")")")
|
|
pkg=$(basename "$pkg_path")
|
|
dest="${PKG_DIR}/${pkg}.pkgar"
|
|
if [ ! -f "$dest" ] || [ "$pkgar" -nt "$dest" ]; then
|
|
cp "$pkgar" "$dest" && count=$((count+1))
|
|
fi
|
|
done < <(find recipes local/recipes -name "stage.pkgar" -path "*/target/x86_64-unknown-redox/*" 2>/dev/null)
|
|
|
|
echo "Synced $count packages to ${PKG_DIR}/"
|
|
echo "Total: $(ls ${PKG_DIR}/*.pkgar 2>/dev/null | wc -l) pkgar files"
|