mirror of
https://github.com/bybrooklyn/openbitdo.git
synced 2026-03-19 04:12:56 -04:00
release prep: rc.1 baseline and gating updates
This commit is contained in:
19
packaging/aur/README.md
Normal file
19
packaging/aur/README.md
Normal 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`
|
||||
15
packaging/aur/openbitdo-bin/.SRCINFO
Normal file
15
packaging/aur/openbitdo-bin/.SRCINFO
Normal 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
|
||||
26
packaging/aur/openbitdo-bin/PKGBUILD
Normal file
26
packaging/aur/openbitdo-bin/PKGBUILD
Normal 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"
|
||||
}
|
||||
26
packaging/aur/openbitdo-bin/PKGBUILD.tmpl
Normal file
26
packaging/aur/openbitdo-bin/PKGBUILD.tmpl
Normal 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"
|
||||
}
|
||||
14
packaging/aur/openbitdo/.SRCINFO
Normal file
14
packaging/aur/openbitdo/.SRCINFO
Normal 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
|
||||
24
packaging/aur/openbitdo/PKGBUILD
Normal file
24
packaging/aur/openbitdo/PKGBUILD
Normal 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"
|
||||
}
|
||||
24
packaging/aur/openbitdo/PKGBUILD.tmpl
Normal file
24
packaging/aur/openbitdo/PKGBUILD.tmpl
Normal 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"
|
||||
}
|
||||
33
packaging/homebrew/Formula/openbitdo.rb
Normal file
33
packaging/homebrew/Formula/openbitdo.rb
Normal 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
|
||||
31
packaging/homebrew/Formula/openbitdo.rb.tmpl
Normal file
31
packaging/homebrew/Formula/openbitdo.rb.tmpl
Normal 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
|
||||
14
packaging/homebrew/README.md
Normal file
14
packaging/homebrew/README.md
Normal 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
36
packaging/homebrew/sync_tap.sh
Executable 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
|
||||
111
packaging/scripts/render_release_metadata.sh
Executable file
111
packaging/scripts/render_release_metadata.sh
Executable 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}"
|
||||
Reference in New Issue
Block a user