name: Installation on: [workflow_dispatch, push] defaults: run: shell: bash jobs: installation_test: name: Test installation for ${{ matrix.name }} strategy: fail-fast: false matrix: include: # Ubuntu Installations - name: ubuntu-20.04 os: ubuntu-20.04 container: null - name: ubuntu-22.04 os: ubuntu-22.04 container: null - name: ubuntu-24.04 os: ubuntu-24.04 container: null # Red Hat Installations - name: rocky-8 os: ubuntu-latest image: rockylinux:8 - name: rocky-9 os: ubuntu-latest image: rockylinux:9 - name: almalinux-8 os: ubuntu-latest image: almalinux:8 - name: almalinux-9 os: ubuntu-latest image: almalinux:9 # User level installation - name: user-install os: ubuntu-latest image: null user: true # Custom location installation - name: custom-install os: ubuntu-latest image: null riscv_path: /home/riscv runs-on: ${{ matrix.os }} container: image: ${{ matrix.image }} options: --privileged --mount type=bind,source=/,target=/host --pid=host --entrypoint /bin/bash steps: - name: Install Dependencies for Red Hat if: ${{ matrix.image != null }} run: | dnf install -y sudo git dnf install curl -y --allowerasing || true - uses: actions/checkout@v4 - name: Clone Necessary Submodules run: | git config --global --add safe.directory '*' git submodule update --init addins/riscv-arch-test addins/verilog-ethernet - name: Free Up Storage run: | df -h if [ -z ${{ matrix.image }} ]; then ./.github/cli-space-cleanup.sh else nsenter -t 1 -m -u -n -i bash -c "$(cat .github/cli-space-cleanup.sh)" fi df -h - name: Install run: | if [ -z ${{ matrix.user }} ]; then sudo ./bin/wally-tool-chain-install.sh --clean ${{ matrix.riscv_path }} else sudo ./bin/wally-package-install.sh ./bin/wally-tool-chain-install.sh --clean ${{ matrix.riscv_path }} fi - name: Set Environment Variables run: | if [ ! -z ${{ matrix.riscv_path }} ]; then sed -i 's,exit 1,export RISCV=${{ matrix.riscv_path }},g' setup.sh fi source setup.sh echo "RISCV=$RISCV" >> "$GITHUB_ENV" - name: Upload Installation Logs uses: actions/upload-artifact@v4 if: always() with: name: installation-logs-${{ matrix.name }} path: $RISCV/logs/ - name: make tests run: | source setup.sh make riscof --jobs $(nproc --ignore 1) - name: Remove Buildroot to Save Space run: | sudo rm -rf $RISCV/buildroot/output/build df -h - name: Regression run: | source setup.sh regression-wally - name: Upload regression logs uses: actions/upload-artifact@v4 if: always() with: name: regression-logs-${{ matrix.name }} path: ${{ github.workspace }}/sim/verilator/logs/