diff --git a/.github/actions/install-dotslash/action.yml b/.github/actions/install-dotslash/action.yml new file mode 100644 index 0000000000..878195a88c --- /dev/null +++ b/.github/actions/install-dotslash/action.yml @@ -0,0 +1,30 @@ +name: Install DotSlash +description: Install DotSlash on the current system +inputs: + version: + description: "version of dotslash" + required: false + default: "0.4.1" +runs: + using: "composite" + steps: + - name: Install DotSlash + shell: bash + run: | + mkdir -p $RUNNER_TEMP/dotslash + echo "$RUNNER_TEMP/dotslash" >> $GITHUB_PATH + + if [[ "$RUNNER_OS" == "Windows" ]]; then + C:\\msys64\\usr\\bin\\wget.exe https://github.com/facebook/dotslash/releases/download/v0.4.1/dotslash-windows.v0.4.1.tar.gz + tar xf dotslash-windows.v0.4.1.tar.gz + mv dotslash.exe $RUNNER_TEMP/dotslash + else + if [[ "$RUNNER_OS" == "macOS" ]]; then + wget https://github.com/facebook/dotslash/releases/download/v0.4.1/dotslash-macos.v0.4.1.tar.gz + tar xf dotslash-macos.v0.4.1.tar.gz + elif [[ "$RUNNER_OS" == "Linux" ]]; then + wget https://github.com/facebook/dotslash/releases/download/v0.4.1/dotslash-ubuntu-22.04.x86_64.v0.4.1.tar.gz + tar xf dotslash-ubuntu-22.04.x86_64.v0.4.1.tar.gz + fi + mv dotslash $RUNNER_TEMP/dotslash + fi diff --git a/.github/workflows/build-buck2.yml b/.github/workflows/build-buck2.yml new file mode 100644 index 0000000000..448c366b91 --- /dev/null +++ b/.github/workflows/build-buck2.yml @@ -0,0 +1,56 @@ +name: buck2 + +on: + push: + branches: + - main + pull_request: + +permissions: read-all + +jobs: + buck2: + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + abi: x86_64-unknown-linux-gnu + - os: windows-latest + abi: x86_64-pc-windows-msvc + - os: macos-latest + abi: aarch64-apple-darwin + runs-on: ${{ matrix.os }} + timeout-minutes: 15 # NOTE (aseipp): keep in-sync with the build.yml timeout limit + + name: build with buck2 + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + - name: Install Rust + uses: dtolnay/rust-toolchain@1482605bfc5719782e1267fd0c0cc350fe7646b8 + with: + toolchain: 1.76 + - name: (Linux) Install Mold + if: runner.os == 'Linux' + run: | + sudo apt-get update && sudo apt-get install -y mold + - name: Install DotSlash + uses: ./.github/actions/install-dotslash + - name: Add build tools to $PATH + run: echo "$PWD/tools/bin" >> $GITHUB_PATH + # FIXME (aseipp): use 'buck2' out of `$PATH` after we have dotslash .exe + # shim files for windows. until then just invoke manually + - name: buck2 build //... + run: | + mkdir -p out + dotslash ./tools/bin/buck2 build @mode//debug //... + cp buck-out/v2/log/*.pb.zst out + dotslash ./tools/bin/buck2 build @mode//debug cli --out out/jj.exe + ./out/jj.exe version + + - name: "Upload artifact" + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 + with: + name: jj-${{ matrix.abi }} + path: out + retention-days: 14