Repository navigation
macOS host: qualify every concurrency Task via _Concurrency #158
This file contains hidden or 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
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| env: | |
| # Exact Rivet commit the hosts build against (migration policy: pinned). | |
| # Bump together with host code; local dev may track rivet main. | |
| RIVET_PIN: dbd032750f69c37ec577a18cb0265b68ab7551ea | |
| jobs: | |
| contract: | |
| name: Contract preflight (i18n + release metadata) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Verify platform i18n copies match shared/i18n | |
| run: scripts/sync-i18n.sh --check | |
| - name: Verify release version alignment | |
| run: bash scripts/check-release-version.sh | |
| core: | |
| name: Racket core (contract tests) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Link Rivet | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Core contract tests | |
| run: raco test racket/ | |
| linux-host: | |
| name: Linux host (GTK4 build) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Install GTK toolchain | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y cmake ninja-build pkg-config \ | |
| libgtk-4-dev libadwaita-1-dev libjson-glib-dev \ | |
| libsecret-1-dev libglib2.0-dev | |
| - name: Link Rivet | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Cache embeddable Racket CS | |
| id: cache-racket-embed | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ${{ runner.temp }}/racket-embed | |
| key: racket-embed-9.3-${{ runner.os }}-${{ runner.arch }}-v1 | |
| - name: Build embeddable Racket CS | |
| if: steps.cache-racket-embed.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| archive="$RUNNER_TEMP/racket-minimal-9.3-src-builtpkgs.tgz" | |
| source_root="$RUNNER_TEMP/racket-9.3" | |
| build_root="$RUNNER_TEMP/racket-embed-build" | |
| embed_prefix="$RUNNER_TEMP/racket-embed" | |
| curl --fail --location --retry 3 --output "$archive" \ | |
| https://download.racket-lang.org/releases/9.3/installers/racket-minimal-9.3-src-builtpkgs.tgz | |
| echo "3a01324d559a15e3f1f58b0c57a92bb344dce534e72e564e0d8b75e3b9c65295 $archive" | sha256sum --check | |
| tar -xzf "$archive" -C "$RUNNER_TEMP" | |
| mkdir -p "$build_root" | |
| cd "$build_root" | |
| "$source_root/src/configure" --prefix="$embed_prefix" | |
| make -j2 | |
| make install | |
| - name: Save embeddable Racket CS cache | |
| if: steps.cache-racket-embed.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v5 | |
| with: | |
| path: ${{ runner.temp }}/racket-embed | |
| key: racket-embed-9.3-${{ runner.os }}-${{ runner.arch }}-v1 | |
| - name: Expose embeddable runtime paths | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| embed_prefix="$RUNNER_TEMP/racket-embed" | |
| racket_include="$(racket -e '(require setup/dirs) (display (path->string (find-include-dir)))')" | |
| petite="$(find "$embed_prefix" -maxdepth 6 -name petite.boot -print -quit)" | |
| scheme="$(find "$embed_prefix" -maxdepth 6 -name scheme.boot -print -quit)" | |
| racket_boot="$(find "$embed_prefix" -maxdepth 6 -name racket.boot -print -quit)" | |
| test -n "$petite" && test -n "$scheme" && test -n "$racket_boot" | |
| library="$(find "$embed_prefix" -maxdepth 6 -name 'libracketcs*.a' -print -quit)" | |
| test -n "$library" | |
| boot_dir="$(dirname "$petite")" | |
| echo "RIVET_RACKET_INCLUDE=$racket_include" >> "$GITHUB_ENV" | |
| echo "RIVET_RACKET_LIB_DIR=$(dirname "$library")" >> "$GITHUB_ENV" | |
| echo "RIVET_RACKET_LIBRARY=$library" >> "$GITHUB_ENV" | |
| echo "RIVET_RACKET_BOOT_DIR=$boot_dir" >> "$GITHUB_ENV" | |
| - name: Toolchain doctor | |
| run: raco rivet doctor --json | |
| - name: Build host | |
| run: raco rivet build | |
| - name: Headless boot smoke | |
| run: | | |
| sudo apt-get install -y xvfb | |
| xvfb-run -a ./.rivet/stage/RivetHost & | |
| APP_PID=$! | |
| sleep 8 | |
| kill -0 $APP_PID | |
| kill $APP_PID | |
| macos-host: | |
| name: macOS host (SwiftUI build) | |
| runs-on: macos-15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Link Rivet | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Build host | |
| run: raco rivet build | |
| windows-host: | |
| name: Windows host (WinRT build) | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Link Rivet | |
| shell: bash | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Build host | |
| shell: pwsh | |
| run: raco rivet build |