try glibc 2.17 #11
Workflow file for this run
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: BAML Release - Build Typescript AArch64 GLIBC | |
| on: | |
| workflow_call: {} | |
| workflow_dispatch: {} | |
| push: | |
| branches: | |
| - sam/ts-release | |
| concurrency: | |
| # suffix is important to prevent a concurrency deadlock with the calling workflow | |
| group: ${{ github.workflow }}-${{ github.ref }}-build-typescript-aarch64 | |
| cancel-in-progress: true | |
| env: | |
| DEBUG: napi:* | |
| APP_NAME: baml | |
| MACOSX_DEPLOYMENT_TARGET: "10.13" | |
| # Turbo remote caching | |
| TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} | |
| TURBO_TEAM: gloo | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| _: | |
| - target: aarch64-unknown-linux-gnu | |
| host: ubuntu-latest-arm | |
| # Target glibc 2.17. This is the oldest glibc we can practically support. | |
| # Note that ubuntu-22.04-arm has glibc 2.35, but our users need older glibc. | |
| # See https://github.com/BoundaryML/baml/issues/2736 | |
| container: ghcr.io/rust-cross/manylinux2014-cross:aarch64 | |
| before: | | |
| echo "CFLAGS_aarch64_unknown_linux_gnu=-D__ARM_ARCH=8" >> "$GITHUB_ENV" | |
| node_build: pnpm build:napi-release --target aarch64-unknown-linux-gnu | |
| cargo_args: -p baml-typescript-ffi -p baml-python-ffi | |
| name: ${{ matrix._.target }} | |
| runs-on: ${{ matrix._.host }} | |
| container: ${{ matrix._.container }} | |
| env: | |
| ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # Dump GLIBC version for Linux targets (skip musl targets) | |
| # NB: this is the fallback glibc that we link against; the manylinux containers | |
| # link against older glibc versions by default. Using objdump/readelf to inspect | |
| # the .node binary we build is more authoritative (use your preferred AI coding | |
| # assistant to inspect the binary). | |
| - name: Check GLIBC version | |
| if: contains(matrix._.target, 'linux') && !contains(matrix._.target, 'musl') | |
| run: | | |
| ldd --version | |
| # Setup using standardized actions | |
| - name: Setup Node.js | |
| uses: ./.github/actions/setup-node | |
| - name: Setup Rust | |
| uses: ./.github/actions/setup-rust | |
| with: | |
| targets: ${{ matrix._.target }} | |
| prefix-key: v5-rust-${{ matrix._.target }} | |
| cache-on-failure: true | |
| - name: Setup Go | |
| uses: ./.github/actions/setup-go | |
| # per-matrix-entry dependency setup | |
| - name: Build tools setup | |
| if: matrix._.before | |
| run: ${{ matrix._.before }} | |
| # Build the NAPI library and bindings | |
| - name: PNPM Build | |
| run: ${{ matrix._.node_build }} | |
| working-directory: engine/language_client_typescript | |
| - name: Build TS | |
| run: pnpm build:ts_build | |
| working-directory: engine/language_client_typescript | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bindings-${{ matrix._.target }} | |
| path: engine/language_client_typescript/*.node | |
| if-no-files-found: error |