Skip to content

[NO UPSTREAM] readme: explain this fork #63

[NO UPSTREAM] readme: explain this fork

[NO UPSTREAM] readme: explain this fork #63

Workflow file for this run

name: Build, upload, and tag `buck2`
on:
push:
branches:
- main
jobs:
build:
strategy:
fail-fast: false
matrix:
target:
- os: 'ubuntu-22.04'
triple: 'aarch64-unknown-linux-gnu'
cross: true
- os: 'ubuntu-22.04'
triple: 'aarch64-unknown-linux-musl'
cross: true
- os: 'ubuntu-22.04'
triple: 'x86_64-unknown-linux-gnu'
- os: 'ubuntu-22.04'
triple: 'x86_64-unknown-linux-musl'
cross: true
- os: 'macos-12'
triple: 'aarch64-apple-darwin'
cross: true
- os: 'macos-12'
triple: 'x86_64-apple-darwin'
- os: 'windows-2022'
triple: 'x86_64-pc-windows-msvc'
is_windows: true
runs-on: ${{ matrix.target.os }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: SebRollen/toml-action@v1.0.2
id: read_rust_toolchain
with:
file: 'rust-toolchain'
field: 'toolchain.channel'
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ steps.read_rust_toolchain.outputs.value }}
targets: ${{ matrix.target.triple }}
- uses: Swatinem/rust-cache@v2
with:
prefix-key: buck2-upload
key: ${{ matrix.target.triple }}
- uses: actions-rs/install@v0.1
if: matrix.target.cross
with:
crate: cross
version: latest
- name: Set variables
id: set_variables
shell: bash
run: |
if [ -n "${{ matrix.target.is_windows }}" ]; then
echo "buck2_out=target/${{ matrix.target.triple }}/release/buck2.exe" >> "$GITHUB_OUTPUT"
echo "buck2_zst=artifacts/buck2-${{ matrix.target.triple }}.exe.zst" >> "$GITHUB_OUTPUT"
echo "buck2_rust_project_out=target/${{ matrix.target.triple }}/release/rust-project.exe" >> "$GITHUB_OUTPUT"
echo "buck2_rust_project_zst=artifacts/rust-project-${{ matrix.target.triple }}.exe.zst" >> "$GITHUB_OUTPUT"
else
echo "buck2_out=target/${{ matrix.target.triple }}/release/buck2" >> "$GITHUB_OUTPUT"
echo "buck2_zst=artifacts/buck2-${{ matrix.target.triple }}.zst" >> "$GITHUB_OUTPUT"
echo "buck2_rust_project_out=target/${{ matrix.target.triple }}/release/rust-project" >> "$GITHUB_OUTPUT"
echo "buck2_rust_project_zst=artifacts/rust-project-${{ matrix.target.triple }}.zst" >> "$GITHUB_OUTPUT"
fi
- name: Build
shell: bash
env:
RUSTFLAGS: "-C strip=debuginfo -C codegen-units=1"
run: |
# aarch64-linux builds need JEMALLOC_SYS_WITH_LG_PAGE=16
# this is for e.g. linux running on apple silicon with native 16k pages
if [[ "${{ matrix.target.triple }}" == aarch64-unknown-linux* ]]; then
export JEMALLOC_SYS_WITH_LG_PAGE=16
fi
if [ -n "${{ matrix.target.cross }}" ]; then
CARGO=cross
else
CARGO=cargo
fi
$CARGO build --release --bin buck2 --bin rust-project --target ${{ matrix.target.triple }}
- name: Sanity check with examples/with_prelude
if: ${{ !matrix.target.cross }}
shell: bash
run: |
BUCK2="$(pwd)/${{ steps.set_variables.outputs.buck2_out }}"
cd examples/with_prelude
"$BUCK2" build //rust/... //cpp/... //python/... -v=2
- name: Move binary to artifacts/
shell: bash
run: |
mkdir artifacts
zstd -z ${{ steps.set_variables.outputs.buck2_out }} -o ${{ steps.set_variables.outputs.buck2_zst }}
zstd -z ${{ steps.set_variables.outputs.buck2_rust_project_out }} -o ${{ steps.set_variables.outputs.buck2_rust_project_zst }}
- name: Upload
uses: actions/upload-artifact@v4
with:
name: buck2-${{ matrix.target.triple }}
path: artifacts/
release_latest_snapshot:
name: Release latest push snapshot
needs:
- build
runs-on: ubuntu-latest
steps:
- name: Get snapshot tag (YYYYMMDD-HHMMSS)
id: get_tag
run: |
TAG=snapshot-$(date +'%Y%m%d-%H%M%S')
echo "tag_name=$TAG" >> "$GITHUB_OUTPUT"
echo "Release tag: $TAG"
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: ./.github/actions/publish_tag
with:
tag: "${{ steps.get_tag.outputs.tag_name }}"
github_token: ${{ secrets.GITHUB_TOKEN }}
- uses: facebook/dotslash-publish-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
config: .github/dotslash-config.json
tag: "${{ steps.get_tag.outputs.tag_name }}"