diff --git a/.github/workflows/netbsd.yml b/.github/workflows/netbsd.yml new file mode 100644 index 000000000..9dd38cbfd --- /dev/null +++ b/.github/workflows/netbsd.yml @@ -0,0 +1,76 @@ +name: CI NetBSD + +on: + push: + branches: [ master ] + tags: + - '2.*' + pull_request: + branches: [ master ] + paths: + - '**.py' + - '**.pyx' + - '**.c' + - '**.h' + - '**.yml' + - '**.toml' + - '**.cfg' + - '**.ini' + - 'requirements.d/*' + - '!docs/**' + +jobs: + netbsd_tests: + name: NetBSD tests + runs-on: ubuntu-24.04 + timeout-minutes: 90 + continue-on-error: true + + steps: + - name: Check out repository + uses: actions/checkout@v4 + with: + # setuptools-scm needs full history for versioning + fetch-depth: 0 + fetch-tags: true + + - name: Run on NetBSD + id: netbsd + uses: cross-platform-actions/action@v0.29.0 + with: + operating_system: netbsd + version: '10.1' + shell: bash + cpu_count: 3 + memory: 6G + run: | + set -euxo pipefail + # Configure pkgin repository based on architecture. + arch="$(uname -m)" + sudo -E mkdir -p /usr/pkg/etc/pkgin + echo "http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/${arch}/10.1/All" | sudo tee /usr/pkg/etc/pkgin/repositories.conf > /dev/null + sudo -E pkgin update || true + sudo -E pkgin -y upgrade || true + + # Base tools and libraries + sudo -E pkgin -y install zstd lz4 xxhash git || true + sudo -E pkgin -y install rust || true + # Work around NetBSD 9.3 bug with .bash_profile in screen sessions + # echo "export PROMPT_COMMAND=" >> ~/.bash_profile || true + sudo -E pkgin -y install pkg-config || true + # Python 3.11 and tools + sudo -E pkgin -y install py311-pip py311-virtualenv || true + sudo -E ln -sf /usr/pkg/bin/python3.11 /usr/pkg/bin/python3 || true + sudo -E ln -sf /usr/pkg/bin/pip3.11 /usr/pkg/bin/pip3 || true + sudo -E ln -sf /usr/pkg/bin/virtualenv-3.11 /usr/pkg/bin/virtualenv3 || true + + # Create and activate a virtualenv + python3 -m virtualenv .venv + . .venv/bin/activate + python -m pip install --upgrade pip + # Install development/test dependencies + pip install -r requirements.d/development.txt + # Build Borg (editable) + pip install -e . + # Run tests; skip benchmarks + pytest -v -n auto --benchmark-skip