release prep: rc.1 baseline and gating updates

This commit is contained in:
2026-03-02 15:54:55 -05:00
parent 97a42c8802
commit f43b2b24b6
168 changed files with 14708 additions and 982 deletions

19
packaging/aur/README.md Normal file
View File

@@ -0,0 +1,19 @@
# AUR Packaging
This directory contains AUR package sources for:
- `openbitdo` (source build)
- `openbitdo-bin` (prebuilt release assets)
Publishing is automated by `.github/workflows/aur-publish.yml` and remains gated:
- requires repository variable `AUR_PUBLISH_ENABLED=1`
- requires secrets `AUR_SSH_PRIVATE_KEY` and `AUR_USERNAME`
Publish flow:
1. wait for release assets from a `v*` tag
2. compute authoritative SHA256 values from released artifacts
3. render `PKGBUILD`/`.SRCINFO` with pinned hashes
4. push updates to AUR repos
Template files used for release rendering:
- `openbitdo/PKGBUILD.tmpl`
- `openbitdo-bin/PKGBUILD.tmpl`

View File

@@ -0,0 +1,15 @@
pkgbase = openbitdo-bin
pkgdesc = Prebuilt beginner-first clean-room 8BitDo utility
pkgver = 0.0.1rc1
pkgrel = 1
url = https://github.com/bybrooklyn/openbitdo
arch = x86_64
arch = aarch64
license = BSD-3-Clause
depends = hidapi
source_x86_64 = openbitdo-v0.0.1-rc.1-linux-x86_64.tar.gz::https://github.com/bybrooklyn/openbitdo/releases/download/v0.0.1-rc.1/openbitdo-v0.0.1-rc.1-linux-x86_64.tar.gz
sha256sums_x86_64 = 0000000000000000000000000000000000000000000000000000000000000000
source_aarch64 = openbitdo-v0.0.1-rc.1-linux-aarch64.tar.gz::https://github.com/bybrooklyn/openbitdo/releases/download/v0.0.1-rc.1/openbitdo-v0.0.1-rc.1-linux-aarch64.tar.gz
sha256sums_aarch64 = 0000000000000000000000000000000000000000000000000000000000000000
pkgname = openbitdo-bin

View File

@@ -0,0 +1,26 @@
pkgname=openbitdo-bin
pkgver=0.0.1rc1
_upstream_tag=v0.0.1-rc.1
pkgrel=1
pkgdesc="Prebuilt beginner-first clean-room 8BitDo utility"
arch=('x86_64' 'aarch64')
url="https://github.com/bybrooklyn/openbitdo"
license=('BSD-3-Clause')
depends=('hidapi')
source_x86_64=("openbitdo-${_upstream_tag}-linux-x86_64.tar.gz::${url}/releases/download/${_upstream_tag}/openbitdo-${_upstream_tag}-linux-x86_64.tar.gz")
source_aarch64=("openbitdo-${_upstream_tag}-linux-aarch64.tar.gz::${url}/releases/download/${_upstream_tag}/openbitdo-${_upstream_tag}-linux-aarch64.tar.gz")
sha256sums_x86_64=('0000000000000000000000000000000000000000000000000000000000000000')
sha256sums_aarch64=('0000000000000000000000000000000000000000000000000000000000000000')
package() {
local extracted_dir
extracted_dir="$(find "${srcdir}" -maxdepth 1 -type d -name "openbitdo-${_upstream_tag}-linux-${CARCH}" | head -n 1)"
if [[ -z "${extracted_dir}" ]]; then
echo "unable to locate extracted release payload for ${CARCH}" >&2
return 1
fi
install -Dm755 "${extracted_dir}/bin/openbitdo" "${pkgdir}/usr/bin/openbitdo"
install -Dm644 "${extracted_dir}/README.md" "${pkgdir}/usr/share/doc/openbitdo/README.md"
install -Dm644 "${extracted_dir}/LICENSE" "${pkgdir}/usr/share/licenses/openbitdo/LICENSE"
}

View File

@@ -0,0 +1,26 @@
pkgname=openbitdo-bin
pkgver=@AUR_PKGVER@
_upstream_tag=@UPSTREAM_TAG@
pkgrel=1
pkgdesc="Prebuilt beginner-first clean-room 8BitDo utility"
arch=('x86_64' 'aarch64')
url="https://github.com/@REPOSITORY@"
license=('BSD-3-Clause')
depends=('hidapi')
source_x86_64=("openbitdo-${_upstream_tag}-linux-x86_64.tar.gz::${url}/releases/download/${_upstream_tag}/openbitdo-${_upstream_tag}-linux-x86_64.tar.gz")
source_aarch64=("openbitdo-${_upstream_tag}-linux-aarch64.tar.gz::${url}/releases/download/${_upstream_tag}/openbitdo-${_upstream_tag}-linux-aarch64.tar.gz")
sha256sums_x86_64=('@LINUX_X86_64_SHA256@')
sha256sums_aarch64=('@LINUX_AARCH64_SHA256@')
package() {
local extracted_dir
extracted_dir="$(find "${srcdir}" -maxdepth 1 -type d -name "openbitdo-${_upstream_tag}-linux-${CARCH}" | head -n 1)"
if [[ -z "${extracted_dir}" ]]; then
echo "unable to locate extracted release payload for ${CARCH}" >&2
return 1
fi
install -Dm755 "${extracted_dir}/bin/openbitdo" "${pkgdir}/usr/bin/openbitdo"
install -Dm644 "${extracted_dir}/README.md" "${pkgdir}/usr/share/doc/openbitdo/README.md"
install -Dm644 "${extracted_dir}/LICENSE" "${pkgdir}/usr/share/licenses/openbitdo/LICENSE"
}

View File

@@ -0,0 +1,14 @@
pkgbase = openbitdo
pkgdesc = Beginner-first clean-room 8BitDo utility
pkgver = 0.0.1rc1
pkgrel = 1
url = https://github.com/bybrooklyn/openbitdo
arch = x86_64
arch = aarch64
license = BSD-3-Clause
makedepends = cargo
depends = hidapi
source = openbitdo-v0.0.1-rc.1.tar.gz::https://github.com/bybrooklyn/openbitdo/archive/refs/tags/v0.0.1-rc.1.tar.gz
sha256sums = 0000000000000000000000000000000000000000000000000000000000000000
pkgname = openbitdo

View File

@@ -0,0 +1,24 @@
pkgname=openbitdo
pkgver=0.0.1rc1
_upstream_tag=v0.0.1-rc.1
pkgrel=1
pkgdesc="Beginner-first clean-room 8BitDo utility"
arch=('x86_64' 'aarch64')
url="https://github.com/bybrooklyn/openbitdo"
license=('BSD-3-Clause')
depends=('hidapi')
makedepends=('cargo')
source=("${pkgname}-${_upstream_tag}.tar.gz::${url}/archive/refs/tags/${_upstream_tag}.tar.gz")
sha256sums=('0000000000000000000000000000000000000000000000000000000000000000')
build() {
cd "${srcdir}/openbitdo-${_upstream_tag#v}/sdk"
cargo build --release -p openbitdo
}
package() {
cd "${srcdir}/openbitdo-${_upstream_tag#v}"
install -Dm755 "sdk/target/release/openbitdo" "${pkgdir}/usr/bin/openbitdo"
install -Dm644 "README.md" "${pkgdir}/usr/share/doc/openbitdo/README.md"
install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/openbitdo/LICENSE"
}

View File

@@ -0,0 +1,24 @@
pkgname=openbitdo
pkgver=@AUR_PKGVER@
_upstream_tag=@UPSTREAM_TAG@
pkgrel=1
pkgdesc="Beginner-first clean-room 8BitDo utility"
arch=('x86_64' 'aarch64')
url="https://github.com/@REPOSITORY@"
license=('BSD-3-Clause')
depends=('hidapi')
makedepends=('cargo')
source=("${pkgname}-${_upstream_tag}.tar.gz::${url}/archive/refs/tags/${_upstream_tag}.tar.gz")
sha256sums=('@SOURCE_SHA256@')
build() {
cd "${srcdir}/openbitdo-${_upstream_tag#v}/sdk"
cargo build --release -p openbitdo
}
package() {
cd "${srcdir}/openbitdo-${_upstream_tag#v}"
install -Dm755 "sdk/target/release/openbitdo" "${pkgdir}/usr/bin/openbitdo"
install -Dm644 "README.md" "${pkgdir}/usr/share/doc/openbitdo/README.md"
install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/openbitdo/LICENSE"
}

View File

@@ -0,0 +1,33 @@
class Openbitdo < Formula
desc "Beginner-first clean-room 8BitDo TUI utility"
homepage "https://github.com/bybrooklyn/openbitdo"
license "BSD-3-Clause"
version "0.0.1-rc.1"
on_macos do
if Hardware::CPU.arm?
url "https://github.com/bybrooklyn/openbitdo/releases/download/v0.0.1-rc.1/openbitdo-v0.0.1-rc.1-macos-arm64.tar.gz"
sha256 "0000000000000000000000000000000000000000000000000000000000000000"
end
end
on_linux do
if Hardware::CPU.intel?
url "https://github.com/bybrooklyn/openbitdo/releases/download/v0.0.1-rc.1/openbitdo-v0.0.1-rc.1-linux-x86_64.tar.gz"
sha256 "0000000000000000000000000000000000000000000000000000000000000000"
elsif Hardware::CPU.arm?
url "https://github.com/bybrooklyn/openbitdo/releases/download/v0.0.1-rc.1/openbitdo-v0.0.1-rc.1-linux-aarch64.tar.gz"
sha256 "0000000000000000000000000000000000000000000000000000000000000000"
end
end
# Release automation rewrites checksums in the tap with authoritative values
# from published assets.
def install
bin.install "bin/openbitdo"
end
test do
assert_match "openbitdo", shell_output("#{bin}/openbitdo --help")
end
end

View File

@@ -0,0 +1,31 @@
class Openbitdo < Formula
desc "Beginner-first clean-room 8BitDo TUI utility"
homepage "https://github.com/@REPOSITORY@"
license "BSD-3-Clause"
version "@VERSION@"
on_macos do
if Hardware::CPU.arm?
url "https://github.com/@REPOSITORY@/releases/download/@UPSTREAM_TAG@/openbitdo-@UPSTREAM_TAG@-macos-arm64.tar.gz"
sha256 "@MACOS_ARM64_SHA256@"
end
end
on_linux do
if Hardware::CPU.intel?
url "https://github.com/@REPOSITORY@/releases/download/@UPSTREAM_TAG@/openbitdo-@UPSTREAM_TAG@-linux-x86_64.tar.gz"
sha256 "@LINUX_X86_64_SHA256@"
elsif Hardware::CPU.arm?
url "https://github.com/@REPOSITORY@/releases/download/@UPSTREAM_TAG@/openbitdo-@UPSTREAM_TAG@-linux-aarch64.tar.gz"
sha256 "@LINUX_AARCH64_SHA256@"
end
end
def install
bin.install "bin/openbitdo"
end
test do
assert_match "openbitdo", shell_output("#{bin}/openbitdo --help")
end
end

View File

@@ -0,0 +1,14 @@
# Homebrew Packaging
Formula source lives in `Formula/openbitdo.rb`.
Template source used for release rendering: `Formula/openbitdo.rb.tmpl`.
Planned tap:
- `bybrooklyn/homebrew-openbitdo`
Current status:
- release workflow computes checksum-pinned formula values from published assets
- tap sync remains gated by `HOMEBREW_PUBLISH_ENABLED=1`
Optional sync helper:
- `sync_tap.sh` (disabled by default unless `HOMEBREW_PUBLISH_ENABLED=1`)

36
packaging/homebrew/sync_tap.sh Executable file
View File

@@ -0,0 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ "${HOMEBREW_PUBLISH_ENABLED:-0}" != "1" ]]; then
echo "homebrew tap sync disabled (set HOMEBREW_PUBLISH_ENABLED=1 to enable)"
exit 0
fi
if [[ -z "${HOMEBREW_TAP_TOKEN:-}" ]]; then
echo "missing HOMEBREW_TAP_TOKEN" >&2
exit 1
fi
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
TAP_REPO="${HOMEBREW_TAP_REPO:-bybrooklyn/homebrew-openbitdo}"
FORMULA_SOURCE="${FORMULA_SOURCE:-$ROOT/packaging/homebrew/Formula/openbitdo.rb}"
TMP="$(mktemp -d)"
if [[ ! -f "$FORMULA_SOURCE" ]]; then
echo "formula source not found: $FORMULA_SOURCE" >&2
exit 1
fi
git clone "https://x-access-token:${HOMEBREW_TAP_TOKEN}@github.com/${TAP_REPO}.git" "$TMP/tap"
mkdir -p "$TMP/tap/Formula"
cp "$FORMULA_SOURCE" "$TMP/tap/Formula/openbitdo.rb"
cd "$TMP/tap"
git config user.name "${GIT_AUTHOR_NAME:-openbitdo-ci}"
git config user.email "${GIT_AUTHOR_EMAIL:-actions@users.noreply.github.com}"
git add Formula/openbitdo.rb
git commit -m "Update openbitdo formula" || {
echo "no formula changes to push"
exit 0
}
git push

View File

@@ -0,0 +1,111 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
Usage:
render_release_metadata.sh <tag> <repository> <input_dir> <output_dir>
Inputs expected in <input_dir>:
openbitdo-<tag>-source.tar.gz
openbitdo-<tag>-linux-x86_64.tar.gz
openbitdo-<tag>-linux-aarch64.tar.gz
openbitdo-<tag>-macos-arm64.tar.gz
EOF
}
if [[ $# -ne 4 ]]; then
usage >&2
exit 1
fi
TAG="$1"
REPOSITORY="$2"
INPUT_DIR="$3"
OUTPUT_DIR="$4"
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
sha256() {
if command -v sha256sum >/dev/null 2>&1; then
sha256sum "$1" | awk '{print $1}'
else
shasum -a 256 "$1" | awk '{print $1}'
fi
}
aur_pkgver_from_tag() {
local version
version="${1#v}"
version="${version/-rc./rc}"
version="${version/-alpha./alpha}"
version="${version/-beta./beta}"
echo "$version"
}
VERSION="${TAG#v}"
AUR_PKGVER="$(aur_pkgver_from_tag "$TAG")"
SOURCE_ARCHIVE="${INPUT_DIR}/openbitdo-${TAG}-source.tar.gz"
LINUX_X86_ARCHIVE="${INPUT_DIR}/openbitdo-${TAG}-linux-x86_64.tar.gz"
LINUX_AARCH64_ARCHIVE="${INPUT_DIR}/openbitdo-${TAG}-linux-aarch64.tar.gz"
MACOS_ARM64_ARCHIVE="${INPUT_DIR}/openbitdo-${TAG}-macos-arm64.tar.gz"
for required in \
"$SOURCE_ARCHIVE" \
"$LINUX_X86_ARCHIVE" \
"$LINUX_AARCH64_ARCHIVE" \
"$MACOS_ARM64_ARCHIVE"; do
if [[ ! -f "$required" ]]; then
echo "missing required release input: $required" >&2
exit 1
fi
done
SOURCE_SHA256="$(sha256 "$SOURCE_ARCHIVE")"
LINUX_X86_SHA256="$(sha256 "$LINUX_X86_ARCHIVE")"
LINUX_AARCH64_SHA256="$(sha256 "$LINUX_AARCH64_ARCHIVE")"
MACOS_ARM64_SHA256="$(sha256 "$MACOS_ARM64_ARCHIVE")"
mkdir -p \
"${OUTPUT_DIR}/aur/openbitdo" \
"${OUTPUT_DIR}/aur/openbitdo-bin" \
"${OUTPUT_DIR}/homebrew/Formula"
render() {
local template="$1"
local destination="$2"
sed \
-e "s|@AUR_PKGVER@|${AUR_PKGVER}|g" \
-e "s|@UPSTREAM_TAG@|${TAG}|g" \
-e "s|@VERSION@|${VERSION}|g" \
-e "s|@REPOSITORY@|${REPOSITORY}|g" \
-e "s|@SOURCE_SHA256@|${SOURCE_SHA256}|g" \
-e "s|@LINUX_X86_64_SHA256@|${LINUX_X86_SHA256}|g" \
-e "s|@LINUX_AARCH64_SHA256@|${LINUX_AARCH64_SHA256}|g" \
-e "s|@MACOS_ARM64_SHA256@|${MACOS_ARM64_SHA256}|g" \
"$template" > "$destination"
}
render \
"${ROOT}/packaging/aur/openbitdo/PKGBUILD.tmpl" \
"${OUTPUT_DIR}/aur/openbitdo/PKGBUILD"
render \
"${ROOT}/packaging/aur/openbitdo-bin/PKGBUILD.tmpl" \
"${OUTPUT_DIR}/aur/openbitdo-bin/PKGBUILD"
render \
"${ROOT}/packaging/homebrew/Formula/openbitdo.rb.tmpl" \
"${OUTPUT_DIR}/homebrew/Formula/openbitdo.rb"
cat > "${OUTPUT_DIR}/checksums.env" <<EOF
TAG=${TAG}
VERSION=${VERSION}
AUR_PKGVER=${AUR_PKGVER}
REPOSITORY=${REPOSITORY}
SOURCE_SHA256=${SOURCE_SHA256}
LINUX_X86_64_SHA256=${LINUX_X86_SHA256}
LINUX_AARCH64_SHA256=${LINUX_AARCH64_SHA256}
MACOS_ARM64_SHA256=${MACOS_ARM64_SHA256}
EOF
echo "rendered release metadata into ${OUTPUT_DIR}"