forked from dipdup-io/stone-packaging
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Native packages for Homebrew dipdup-io#17
- Loading branch information
Anton Rudenko
committed
Oct 7, 2024
1 parent
0c42aa6
commit 16ec6ac
Showing
2 changed files
with
167 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
name: Release Homebrew Package | ||
|
||
on: | ||
push: | ||
tags: | ||
- 'v*.*.*' | ||
|
||
jobs: | ||
build: | ||
runs-on: ${{ matrix.runs-on }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- arch: x86_64 | ||
runs-on: macos-12 | ||
- arch: arm64 | ||
runs-on: macos-14 | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.9' | ||
|
||
- name: Install dependencies | ||
run: | | ||
brew install gmp bazelisk | ||
pip3 install cpplint pytest numpy sympy==1.12.1 cairo-lang==0.12.0 | ||
- name: Build binaries | ||
run: | | ||
chmod +x ./build.sh | ||
./build.sh | ||
- name: Test binaries | ||
run: | | ||
chmod +x ./test.sh | ||
./test.sh | ||
- name: Copy and rename binaries for Homebrew | ||
run: | | ||
cp /tmp/stone-prover/build/bazelbin/src/starkware/main/cpu/cpu_air_prover ./cpu_air_prover-${{ matrix.arch }} | ||
cp /tmp/stone-prover/build/bazelbin/src/starkware/main/cpu/cpu_air_verifier ./cpu_air_verifier-${{ matrix.arch }} | ||
chmod +x cpu_air_prover-${{ matrix.arch }} cpu_air_verifier-${{ matrix.arch }} | ||
- name: Package binaries | ||
run: tar -czvf stone-prover-macos-${{ matrix.arch }}.tar.gz cpu_air_prover-${{ matrix.arch }} cpu_air_verifier-${{ matrix.arch }} | ||
|
||
- name: Compute SHA256 | ||
id: compute_sha | ||
run: | | ||
SHA256=$(shasum -a 256 stone-prover-macos-${{ matrix.arch }}.tar.gz | awk '{ print $1 }') | ||
echo "${SHA256}" > sha256_${{ matrix.arch }}.txt | ||
- name: Upload binaries | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: stone-prover-macos-${{ matrix.arch }} | ||
path: | | ||
stone-prover-macos-${{ matrix.arch }}.tar.gz | ||
- name: Upload sha256 | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: sha256_${{ matrix.arch }} | ||
path: | | ||
sha256_${{ matrix.arch }}.txt | ||
release: | ||
needs: build | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Download binaries and SHA256 artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: stone-prover-macos-x86_64 | ||
path: ./release_assets/x86_64 | ||
|
||
- name: Download binaries and SHA256 artifacts for arm64 | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: stone-prover-macos-arm64 | ||
path: ./release_assets/arm64 | ||
|
||
- name: Create GitHub Release | ||
uses: softprops/action-gh-release@v2 | ||
with: | ||
files: | | ||
./release_assets/x86_64/stone-prover-macos-x86_64.tar.gz | ||
./release_assets/arm64/stone-prover-macos-arm64.tar.gz | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
update_formula: | ||
needs: release | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout Homebrew Formula Repository | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: MrRoudyk/homebrew-stone-prover | ||
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | ||
path: homebrew-stone-prover | ||
|
||
- name: Set up Git | ||
working-directory: homebrew-stone-prover | ||
run: | | ||
git config user.name "GitHub Actions" | ||
git config user.email "actions@github.com" | ||
- name: Download x86_64 SHA256 Artifact | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: sha256_x86_64 | ||
path: ./release_assets/x86_64 | ||
|
||
- name: Download arm64 SHA256 Artifact | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: sha256_arm64 | ||
path: ./release_assets/arm64 | ||
|
||
- name: Read SHA256 | ||
run: | | ||
SHA256_x86_64=$(cat ./release_assets/x86_64/sha256_x86_64.txt) | ||
SHA256_arm64=$(cat ./release_assets/arm64/sha256_arm64.txt) | ||
echo "SHA256_x86_64=${SHA256_x86_64}" >> $GITHUB_ENV | ||
echo "SHA256_arm64=${SHA256_arm64}" >> $GITHUB_ENV | ||
- name: Update Homebrew Formula | ||
working-directory: homebrew-stone-prover | ||
run: | | ||
VERSION=${GITHUB_REF#refs/tags/v} | ||
ROOT_URL="https://github.com/MrRoudyk/stone-packaging/releases/download/v${VERSION}" | ||
sed -i "/^ if Hardware::CPU.arm?$/,/^ end$/c\\ | ||
if Hardware::CPU.arm?\\ | ||
url \"${ROOT_URL}/stone-prover-macos-arm64.tar.gz\"\\ | ||
sha256 \"${SHA256_arm64}\"\\ | ||
else\\ | ||
url \"${ROOT_URL}/stone-prover-macos-x86_64.tar.gz\"\\ | ||
sha256 \"${SHA256_x86_64}\"\\ | ||
end" Formula/stone-prover.rb | ||
sed -i "s|version \".*\"|version \"${VERSION}\"|" Formula/stone-prover.rb | ||
git add Formula/stone-prover.rb | ||
git commit -m "Update Stone Prover to version ${VERSION} for arm64 and x86_64" || echo "No changes to commit" | ||
git push origin main |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters