From cb1da17fcd43101decc2fb0dd6d2195d32aabab0 Mon Sep 17 00:00:00 2001 From: Eric <5089238+emizzle@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:23:25 +1000 Subject: [PATCH] try completely different workflow --- .github/workflows/test.yml | 165 +++++-------------------------------- 1 file changed, 19 insertions(+), 146 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 403a6f9..05aa81a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,155 +1,28 @@ name: Tests -on: [pull_request, push] +on: + push: + branches: + - master + pull_request: jobs: - tests: - env: - NPROC: 2 + test: + name: Run tests + runs-on: ubuntu-latest strategy: - fail-fast: false matrix: - cache_nonce: [ 1 ] - nim_version: [ 1.6.6 ] - platform: - - { - icon: 🐧, - label: Linux, - os: ubuntu, - shell: bash --noprofile --norc -eo pipefail - } - - { - icon: 🍎, - label: macOS, - os: macos, - shell: bash --noprofile --norc -eo pipefail - } - - { - icon: 🏁, - label: Windows, - os: windows, - shell: msys2 - } - name: ${{ matrix.platform.icon }} ${{ matrix.platform.label }} - Nim v${{ matrix.nim_version }} - runs-on: ${{ matrix.platform.os }}-latest - defaults: - run: - shell: ${{ matrix.platform.shell }} {0} - + nim: [1.6.16, stable] steps: - # - name: Install tools and libraries via APT (Linux) - # if: matrix.platform.os == 'ubuntu' - # run: | - # sudo apt update - # sudo apt install -y \ - # ... + - name: Checkout + uses: actions/checkout@v4 - - name: Install tools and libraries via Homebrew (macOS) - if: matrix.platform.os == 'macos' - run: | - brew update - brew install \ - findutils \ - libomp \ - llvm@14 + - name: Install Nim + uses: iffy/install-nim@v4 + with: + version: ${{ matrix.nim }} + - name: Build + run: nimble install -y - - name: Install tools and libraries via MSYS2 (Windows) - if: matrix.platform.os == 'windows' - uses: msys2/setup-msys2@v2 - with: - msystem: UCRT64 - install: > - base-devel - git - mingw-w64-ucrt-x86_64-cmake - mingw-w64-ucrt-x86_64-toolchain - - - name: Checkout sources from GitHub - uses: actions/checkout@v2 - with: - submodules: true - - - name: Calculate cache member paths - id: calc-paths - run: | - if [[ ${{ matrix.platform.os }} = windows ]]; then - echo "::set-output name=bash_env::$(cygpath -m "${HOME}")/.bash_env" - echo "::set-output name=choosenim::$(cygpath -m "${USERPROFILE}")/.choosenim" - echo "::set-output name=nimble::$(cygpath -m "${HOME}")/.nimble" - else - echo "::set-output name=bash_env::${HOME}/.bash_env" - echo "::set-output name=choosenim::${HOME}/.choosenim" - echo "::set-output name=nimble::${HOME}/.nimble" - fi - - - name: Restore choosenim and Nim tooling from cache - id: choosenim-nim-tooling-cache - uses: actions/cache@v2 - with: - path: | - ${{ steps.calc-paths.outputs.bash_env }} - ${{ steps.calc-paths.outputs.choosenim }} - ${{ steps.calc-paths.outputs.nimble }}/bin - key: ${{ matrix.platform.os }}-nim_version:${{ matrix.nim_version }}-cache_nonce:${{ matrix.cache_nonce }} - - - name: Install choosenim and Nim tooling - if: steps.choosenim-nim-tooling-cache.outputs.cache-hit != 'true' - run: | - mkdir -p "${HOME}/Downloads" - cd "${HOME}/Downloads" - curl https://nim-lang.org/choosenim/init.sh -sSf -O - chmod +x init.sh - if [[ ${{ matrix.platform.os }} = windows ]]; then - mkdir -p "$(cygpath "${USERPROFILE}")/.nimble/bin" - fi - CHOOSENIM_CHOOSE_VERSION=${{ matrix.nim_version }} ./init.sh -y - if [[ ${{ matrix.platform.os }} = windows ]]; then - mv "$(cygpath "${USERPROFILE}")/.nimble" "${HOME}/" - # intention is to rely only on libs provided by the OS and MSYS2 env - rm -rf "${HOME}/.nimble/bin/"*.dll - rm -rf "${HOME}/.nimble/bin/"*.pem - fi - echo 'export NIMBLE_DIR="${HOME}/.nimble"' >> "${HOME}/.bash_env" - echo 'export PATH="${NIMBLE_DIR}/bin:${PATH}"' >> "${HOME}/.bash_env" - - - name: Install project dependencies - run: | - source "${HOME}/.bash_env" - cd "${NIMBLE_DIR}/bin" - # delete broken symlinks, which can arise because e.g. the cache - # restored a symlink that points to an executable within - # ../pkgs/foo-1.2.3/ but the project's .nimble file has been updated - # to install foo-#head; in the case of a broken symlink, nimble's - # auto-overwrite fails - if [[ ${{ matrix.platform.os }} = macos ]]; then - gfind . -xtype l -delete - else - find . -xtype l -delete - fi - cd - - nimble --accept install - - - name: Build and run tests - run: | - source "${HOME}/.bash_env" - if [[ ${{ matrix.platform.os }} = windows ]]; then - touch tests/testleopard.exe - else - touch tests/testleopard - fi - if [[ ${{ matrix.platform.os }} = macos ]]; then - export PATH="$(brew --prefix llvm@14)/bin:${PATH}" - export LDFLAGS="-L$(brew --prefix libomp)/lib -L$(brew --prefix llvm@14)/lib -Wl,-rpath,$(brew --prefix llvm@14)/lib" - compiler_extra_options="-d:LeopardCmakeFlags='-DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=$(brew --prefix llvm@14)/bin/clang -DCMAKE_CXX_COMPILER=$(brew --prefix llvm@14)/bin/clang++' -d:LeopardExtraCompilerlags='-fopenmp' -d:LeopardExtraLinkerFlags='-fopenmp -L$(brew --prefix libomp)/lib'" - fi - eval nimble --verbose test -d:release --mm:refc ${compiler_extra_options} - eval nimble --verbose test -d:release --mm:orc ${compiler_extra_options} - if [[ ${{ matrix.platform.os }} = macos ]]; then - echo - echo otool -L tests/testleopard - otool -L tests/testleopard - else - echo - echo ldd tests/testleopard - ldd tests/testleopard - fi + - name: Test + run: nimble test -y