mirror of
https://github.com/funkemunky/codex-copr.git
synced 2026-05-31 14:21:56 +00:00
83 lines
2.5 KiB
Bash
Executable File
83 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
TOPDIR="${TOPDIR:-$PWD/.rpmbuild}"
|
|
SOURCES_DIR="$TOPDIR/SOURCES"
|
|
SRPMS_DIR="$TOPDIR/SRPMS"
|
|
SPECS_DIR="$TOPDIR/SPECS"
|
|
WORK_DIR="$(mktemp -d)"
|
|
LATEST_RELEASE_API="https://api.github.com/repos/openai/codex/releases/latest"
|
|
|
|
cleanup() {
|
|
rm -rf "$WORK_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
mkdir -p "$SOURCES_DIR" "$SRPMS_DIR" "$SPECS_DIR"
|
|
|
|
echo "Resolving latest release tag..."
|
|
TAG="$(
|
|
curl -fsSL --retry 3 --retry-delay 2 "$LATEST_RELEASE_API" \
|
|
| sed -n 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p' \
|
|
| head -n1
|
|
)"
|
|
if [[ -z "$TAG" ]]; then
|
|
echo "Failed to determine latest release tag from GitHub API." >&2
|
|
exit 1
|
|
fi
|
|
|
|
VERSION="${TAG#rust-v}"
|
|
if [[ -z "$VERSION" || "$VERSION" == "$TAG" ]]; then
|
|
echo "Unexpected tag format: $TAG (expected rust-v<version>)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Downloading LICENSE and README for $TAG..."
|
|
curl -fL --retry 3 --retry-delay 2 \
|
|
-o "$WORK_DIR/LICENSE" \
|
|
"https://raw.githubusercontent.com/openai/codex/$TAG/LICENSE"
|
|
curl -fL --retry 3 --retry-delay 2 \
|
|
-o "$WORK_DIR/README.md" \
|
|
"https://raw.githubusercontent.com/openai/codex/$TAG/README.md"
|
|
|
|
for ARCH in x86_64 aarch64; do
|
|
ASSET_BASENAME="codex-$ARCH-unknown-linux-musl"
|
|
LATEST_URL="https://github.com/openai/codex/releases/latest/download/$ASSET_BASENAME.tar.gz"
|
|
ARCHIVE="$WORK_DIR/$ASSET_BASENAME.tar.gz"
|
|
UNPACK_DIR="$WORK_DIR/unpack-$ARCH"
|
|
SOURCE_TREE="$WORK_DIR/codex-$VERSION-$ARCH"
|
|
|
|
echo "Downloading latest Codex release tarball for $ARCH..."
|
|
curl -fL --retry 3 --retry-delay 2 -o "$ARCHIVE" "$LATEST_URL"
|
|
|
|
mkdir -p "$UNPACK_DIR"
|
|
tar -xzf "$ARCHIVE" -C "$UNPACK_DIR"
|
|
|
|
UPSTREAM_BINARY="$UNPACK_DIR/$ASSET_BASENAME"
|
|
if [[ ! -x "$UPSTREAM_BINARY" ]]; then
|
|
echo "Expected upstream binary $ASSET_BASENAME, but it was not found." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$SOURCE_TREE/codex-$VERSION"
|
|
install -pm 0755 "$UPSTREAM_BINARY" "$SOURCE_TREE/codex-$VERSION/codex"
|
|
install -pm 0644 "$WORK_DIR/LICENSE" "$SOURCE_TREE/codex-$VERSION/LICENSE"
|
|
install -pm 0644 "$WORK_DIR/README.md" "$SOURCE_TREE/codex-$VERSION/README.md"
|
|
|
|
SOURCE_ARCHIVE="$SOURCES_DIR/codex-$VERSION-$ARCH-unknown-linux-musl.tar.gz"
|
|
tar -C "$SOURCE_TREE" -czf "$SOURCE_ARCHIVE" "codex-$VERSION"
|
|
done
|
|
|
|
sed "s/^%global up_version .*/%global up_version $VERSION/" \
|
|
codex.spec > "$SPECS_DIR/codex.spec"
|
|
|
|
echo "Building SRPM for version $VERSION..."
|
|
rpmbuild \
|
|
--define "_topdir $TOPDIR" \
|
|
-bs "$SPECS_DIR/codex.spec"
|
|
|
|
echo
|
|
echo "SRPM written to:"
|
|
find "$SRPMS_DIR" -maxdepth 1 -type f -name "codex-$VERSION-*.src.rpm" -print
|