rm unused Windows i386 CI support (#227) #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - os: linux | |
| cpu: amd64 | |
| - os: linux-gcc-14 # This is to use ubuntu 24 and install gcc 14. Should be removed when ubuntu-latest is 26.04 | |
| cpu: amd64 | |
| - os: linux | |
| cpu: i386 | |
| - os: macos | |
| cpu: arm64 | |
| - os: windows | |
| cpu: amd64 | |
| branch: [version-2-0, version-2-2, devel] | |
| include: | |
| - target: | |
| os: linux | |
| builder: ubuntu-latest | |
| shell: bash | |
| - target: | |
| os: linux-gcc-14 # This is to use ubuntu 24 and install gcc 14. Should be removed when ubuntu-latest is 26.04 | |
| builder: ubuntu-24.04 | |
| shell: bash | |
| - target: | |
| os: macos | |
| cpu: arm64 | |
| builder: macos-latest | |
| shell: bash | |
| - target: | |
| os: windows | |
| builder: windows-latest | |
| shell: msys2 {0} | |
| defaults: | |
| run: | |
| shell: ${{ matrix.shell }} | |
| name: '${{ matrix.target.os }}-${{ matrix.target.cpu }} (Nim ${{ matrix.branch }})' | |
| runs-on: ${{ matrix.builder }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Install build dependencies (Linux i386) | |
| if: runner.os == 'Linux' && matrix.target.cpu == 'i386' | |
| run: | | |
| sudo dpkg --add-architecture i386 | |
| sudo apt-get update -qq | |
| sudo DEBIAN_FRONTEND='noninteractive' apt-get install \ | |
| --no-install-recommends -yq gcc-multilib g++-multilib \ | |
| libssl-dev:i386 | |
| mkdir -p external/bin | |
| cat << EOF > external/bin/gcc | |
| #!/bin/bash | |
| exec $(which gcc) -m32 "\$@" | |
| EOF | |
| cat << EOF > external/bin/g++ | |
| #!/bin/bash | |
| exec $(which g++) -m32 "\$@" | |
| EOF | |
| chmod 755 external/bin/gcc external/bin/g++ | |
| echo '${{ github.workspace }}/external/bin' >> $GITHUB_PATH | |
| - name: MSYS2 (Windows amd64) | |
| if: runner.os == 'Windows' && matrix.target.cpu == 'amd64' | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| path-type: inherit | |
| install: >- | |
| base-devel | |
| git | |
| mingw-w64-x86_64-toolchain | |
| - name: Restore Nim DLLs dependencies (Windows) from cache | |
| if: runner.os == 'Windows' | |
| id: windows-dlls-cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: external/dlls | |
| key: 'dlls' | |
| - name: Install DLL dependencies (Windows) | |
| if: > | |
| steps.windows-dlls-cache.outputs.cache-hit != 'true' && | |
| runner.os == 'Windows' | |
| run: | | |
| mkdir external | |
| curl -L "https://nim-lang.org/download/windeps.zip" -o external/windeps.zip | |
| 7z x external/windeps.zip -oexternal/dlls | |
| - name: Path to cached dependencies (Windows) | |
| if: > | |
| runner.os == 'Windows' | |
| run: | | |
| echo '${{ github.workspace }}'"/external/dlls" >> $GITHUB_PATH | |
| - name: Derive environment variables | |
| run: | | |
| if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then | |
| PLATFORM=x64 | |
| elif [[ '${{ matrix.target.cpu }}' == 'arm64' ]]; then | |
| PLATFORM=arm64 | |
| else | |
| PLATFORM=x86 | |
| fi | |
| echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
| ncpu= | |
| MAKE_CMD="make" | |
| case '${{ runner.os }}' in | |
| 'Linux') | |
| ncpu=$(nproc) | |
| ;; | |
| 'macOS') | |
| ncpu=$(sysctl -n hw.ncpu) | |
| ;; | |
| 'Windows') | |
| ncpu=$NUMBER_OF_PROCESSORS | |
| MAKE_CMD="mingw32-make" | |
| ;; | |
| esac | |
| [[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1 | |
| echo "ncpu=$ncpu" >> $GITHUB_ENV | |
| echo "MAKE_CMD=${MAKE_CMD}" >> $GITHUB_ENV | |
| - name: Configure ARM64 build environment (macOS) | |
| if: runner.os == 'macOS' && matrix.target.cpu == 'arm64' | |
| run: | | |
| # Force ARM64 architecture for Nim compilation with proper flags passed to clang | |
| echo "NIMFLAGS=--cpu:arm64 --cc:clang --passC:\"-target arm64-apple-macos11\" --passL:\"-target arm64-apple-macos11\"" >> $GITHUB_ENV | |
| - name: Build Nim and Nimble | |
| run: | | |
| curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh | |
| env MAKE="${MAKE_CMD} -j${ncpu}" ARCH_OVERRIDE=${PLATFORM} NIM_COMMIT=${{ matrix.branch }} \ | |
| QUICK_AND_DIRTY_COMPILER=1 QUICK_AND_DIRTY_NIMBLE=1 CC=gcc \ | |
| bash build_nim.sh nim csources dist/nimble NimBinaries | |
| echo '${{ github.workspace }}/nim/bin' >> $GITHUB_PATH | |
| - name: Setup Nimble | |
| uses: nim-lang/setup-nimble-action@v1 | |
| with: | |
| nimble-version: 'latest' | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Use gcc 14 | |
| # Should be removed when ubuntu-latest is 26.04 | |
| if : ${{ matrix.target.os == 'linux-gcc-14' }} | |
| run: | | |
| # Add GCC-14 to alternatives | |
| sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14 | |
| # Set GCC-14 as the default | |
| sudo update-alternatives --set gcc /usr/bin/gcc-14 | |
| - name: Run tests | |
| run: | | |
| nim --version | |
| nimble --version | |
| gcc --version | |
| ./ci-test.sh |