name: CI on: [push, pull_request] jobs: linux: name: Linux runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo dpkg --add-architecture i386 sudo apt-get update -y sudo apt-get install -y \ expect \ gcc-multilib \ libgcc-s1:i386 \ acl \ libacl1-dev \ libacl1:i386 \ attr \ libattr1-dev \ libattr1:i386 \ libcap2-bin \ libcap-dev \ libcap2:i386 \ libonig-dev \ libonig5:i386 \ liburing-dev # Ubuntu doesn't let you install the -dev packages for both amd64 and # i386 at once, so we make our own symlinks to fix -m32 -lacl -l... sudo ln -s libacl.so.1 /lib/i386-linux-gnu/libacl.so sudo ln -s libattr.so.1 /lib/i386-linux-gnu/libattr.so sudo ln -s libcap.so.2 /lib/i386-linux-gnu/libcap.so sudo ln -s libonig.so.5 /lib/i386-linux-gnu/libonig.so - name: Run tests run: | make -j$(nproc) distcheck macos: name: macOS runs-on: macos-13 steps: - uses: actions/checkout@v4 - name: Install dependencies run: | brew install expect - name: Run tests run: | jobs=$(sysctl -n hw.ncpu) make -j$jobs distcheck JOBS=-j$jobs freebsd: name: FreeBSD if: ${{ github.repository_owner == 'tavianator' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} runs-on: ubuntu-22.04 concurrency: spurion steps: - uses: actions/checkout@v4 - uses: tailscale/github-action@v2 with: oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} tags: tag:ci - name: Run tests run: | spurion=$(tailscale ip -6 spurion) mkdir ~/.ssh printf 'Host %s\n\tStrictHostKeyChecking=accept-new\n\tUser github\n' "$spurion" >~/.ssh/config rsync -rl --delete . "[$spurion]:bfs" ssh "$spurion" '. ~/.ssh/rc; gmake -C bfs -j$(nproc) distcheck CC=clang16 JOBS=-j$(nproc)'