79 lines
2.1 KiB
Bash
Executable file
79 lines
2.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Release packager for UniversalisOS.
|
|
#
|
|
# Usage:
|
|
# tools/package.sh <version>
|
|
#
|
|
# Creates a tarball containing:
|
|
# - universalisos-*.elf (all architectures)
|
|
# - mycelium binary
|
|
# - uos-cover tools
|
|
# - docs, CHANGELOG, VERSION, LICENSE
|
|
#
|
|
# Output: release/<version>/universalisos-<version>.tar.gz
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
VERSION="${1:?Usage: $0 <version>}"
|
|
|
|
RELEASE_DIR="$REPO_ROOT/release/$VERSION"
|
|
TARBALL="$RELEASE_DIR/universalisos-$VERSION.tar.gz"
|
|
STAGING="$REPO_ROOT/release/.staging-$VERSION"
|
|
|
|
cd "$REPO_ROOT"
|
|
|
|
if [[ ! -d "$RELEASE_DIR" ]]; then
|
|
echo "error: release directory $RELEASE_DIR not found" >&2
|
|
echo " Run tools/build-release.sh $VERSION first" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# --- Clean staging ---
|
|
rm -rf "$STAGING"
|
|
mkdir -p "$STAGING/universalisos-$VERSION"
|
|
|
|
echo "==> Packaging UniversalisOS $VERSION"
|
|
|
|
# --- Copy artifacts ---
|
|
RELEASE_ROOT="$STAGING/universalisos-$VERSION"
|
|
|
|
# ELFs
|
|
for elf in "$RELEASE_DIR"/universalisos-*.elf; do
|
|
[[ -f "$elf" ]] && cp "$elf" "$RELEASE_ROOT/"
|
|
done
|
|
|
|
# mycelium
|
|
[[ -f "$RELEASE_DIR/mycelium" ]] && cp "$RELEASE_DIR/mycelium" "$RELEASE_ROOT/"
|
|
|
|
# tools
|
|
[[ -d "$RELEASE_DIR/tools" ]] && cp -r "$RELEASE_DIR/tools" "$RELEASE_ROOT/"
|
|
|
|
# Documentation
|
|
for doc in docs/*.md; do
|
|
[[ -f "$doc" ]] && cp "$doc" "$RELEASE_ROOT/"
|
|
done 2>/dev/null || true
|
|
[[ -f "$REPO_ROOT/README.md" ]] && cp "$REPO_ROOT/README.md" "$RELEASE_ROOT/"
|
|
|
|
# Metadata
|
|
[[ -f "$RELEASE_DIR/LICENSE" ]] && cp "$RELEASE_DIR/LICENSE" "$RELEASE_ROOT/"
|
|
[[ -f "$RELEASE_DIR/CHANGELOG.md" ]] && cp "$RELEASE_DIR/CHANGELOG.md" "$RELEASE_ROOT/"
|
|
[[ -f "$RELEASE_DIR/VERSION" ]] && cp "$RELEASE_DIR/VERSION" "$RELEASE_ROOT/"
|
|
|
|
# SHA256SUMS from build step
|
|
[[ -f "$RELEASE_DIR/SHA256SUMS" ]] && cp "$RELEASE_DIR/SHA256SUMS" "$RELEASE_ROOT/"
|
|
|
|
# --- Create tarball ---
|
|
echo "--- Creating tarball ---"
|
|
tar -czf "$TARBALL" -C "$STAGING" "universalisos-$VERSION"
|
|
|
|
# --- Cleanup staging ---
|
|
rm -rf "$STAGING"
|
|
|
|
echo ""
|
|
echo "==> Package complete: $TARBALL"
|
|
ls -lh "$TARBALL"
|
|
echo ""
|
|
echo "Contents:"
|
|
tar -tzf "$TARBALL" | head -30
|