From 11f87a1b361518770776af5f9afd43b36fbfb5f4 Mon Sep 17 00:00:00 2001 From: Sebastian Ehlert <28669218+awvwgk@users.noreply.github.com> Date: Fri, 4 Feb 2022 00:20:52 +0100 Subject: [PATCH] Add testing workflow --- .github/workflows/build.yml | 65 +++++++++++++++++++ src/{acos.f90 => acos.F90} | 0 src/{add.f90 => add.F90} | 0 src/{arith.f90 => arith.F90} | 0 src/{asin.f90 => asin.F90} | 0 src/{atan.f90 => atan.F90} | 0 src/{cos.f90 => cos.F90} | 0 src/{div.f90 => div.F90} | 0 src/{dot_product.f90 => dot_product.F90} | 0 src/{exp.f90 => exp.F90} | 0 src/{fazang.f90 => fazang.F90} | 0 src/{grad.f90 => grad.F90} | 0 src/{inv.f90 => inv.F90} | 0 src/{inv_sqrt.f90 => inv_sqrt.F90} | 0 src/{inv_square.f90 => inv_square.F90} | 0 src/{log.f90 => log.F90} | 0 src/{log_sum_exp.f90 => log_sum_exp.F90} | 0 src/{matmul.f90 => matmul.F90} | 0 src/meson.build | 52 +++++++-------- src/{mul.f90 => mul.F90} | 0 src/{nested.f90 => nested.F90} | 0 src/{pow.f90 => pow.F90} | 0 src/{sin.f90 => sin.F90} | 0 src/{sqrt.f90 => sqrt.F90} | 0 src/{square.f90 => square.F90} | 0 src/{sub.f90 => sub.F90} | 0 src/{sum.f90 => sum.F90} | 0 src/{tan.f90 => tan.F90} | 0 src/{test.f90 => test.F90} | 0 src/{var.f90 => var.F90} | 0 ..._sum_exp_test.f90 => log_sum_exp_test.F90} | 0 31 files changed, 91 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/build.yml rename src/{acos.f90 => acos.F90} (100%) rename src/{add.f90 => add.F90} (100%) rename src/{arith.f90 => arith.F90} (100%) rename src/{asin.f90 => asin.F90} (100%) rename src/{atan.f90 => atan.F90} (100%) rename src/{cos.f90 => cos.F90} (100%) rename src/{div.f90 => div.F90} (100%) rename src/{dot_product.f90 => dot_product.F90} (100%) rename src/{exp.f90 => exp.F90} (100%) rename src/{fazang.f90 => fazang.F90} (100%) rename src/{grad.f90 => grad.F90} (100%) rename src/{inv.f90 => inv.F90} (100%) rename src/{inv_sqrt.f90 => inv_sqrt.F90} (100%) rename src/{inv_square.f90 => inv_square.F90} (100%) rename src/{log.f90 => log.F90} (100%) rename src/{log_sum_exp.f90 => log_sum_exp.F90} (100%) rename src/{matmul.f90 => matmul.F90} (100%) rename src/{mul.f90 => mul.F90} (100%) rename src/{nested.f90 => nested.F90} (100%) rename src/{pow.f90 => pow.F90} (100%) rename src/{sin.f90 => sin.F90} (100%) rename src/{sqrt.f90 => sqrt.F90} (100%) rename src/{square.f90 => square.F90} (100%) rename src/{sub.f90 => sub.F90} (100%) rename src/{sum.f90 => sum.F90} (100%) rename src/{tan.f90 => tan.F90} (100%) rename src/{test.f90 => test.F90} (100%) rename src/{var.f90 => var.F90} (100%) rename test/unit/{log_sum_exp_test.f90 => log_sum_exp_test.F90} (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..0957d18 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,65 @@ +name: CI +on: [push, pull_request] + +jobs: + Build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + gcc: [11] # Version of GFortran we want to use. + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install GFortran (MacOS) + if: ${{ contains(matrix.os, 'macos') }} + run: | + brew install gcc@${{ matrix.gcc }} + ln -s /usr/local/bin/gfortran-${{ matrix.gcc }} /usr/local/bin/gfortran + + - name: Install GFortran (Linux) + if: ${{ contains(matrix.os, 'ubuntu') }} + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install -y gcc-${{ matrix.gcc }} gfortran-${{ matrix.gcc }} + sudo update-alternatives \ + --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.gcc }} 100 \ + --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${{ matrix.gcc }} \ + --slave /usr/bin/gcov gcov /usr/bin/gcov-${{ matrix.gcc }} + + - name: Install GFortran (Windows) + if: ${{ contains(matrix.os, 'windows') }} + run: | + Invoke-WebRequest -Uri ${{ env.DOWNLOAD }} -OutFile mingw-w64.zip + Expand-Archive mingw-w64.zip + echo "$pwd\mingw-w64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + env: + DOWNLOAD: "https://github.com/brechtsanders/winlibs_mingw/releases/download/11.2.0-9.0.0-ucrt-r4/winlibs-x86_64-posix-seh-gcc-11.2.0-mingw-w64ucrt-9.0.0-r4.zip" + + - name: Set up Python 3.x + uses: actions/setup-python@v1 # Use pip to install latest CMake, & FORD/Jin2For, etc. + with: + python-version: ${{ matrix.python-version }} + + - name: Install meson + run: pip3 install ${{ env.PACKAGES }} + env: + PACKAGES: >- + meson==0.59 + ninja + + - name: Configure build + run: meson setup _build --prefix=$PWD/fazang --default-library=static + + - name: Build project + run: meson compile -C _build + + - name: Run tests + run: meson test -C _build --print-errorlogs --no-rebuild + + - name: Install project + run: meson install -C _build --no-rebuild diff --git a/src/acos.f90 b/src/acos.F90 similarity index 100% rename from src/acos.f90 rename to src/acos.F90 diff --git a/src/add.f90 b/src/add.F90 similarity index 100% rename from src/add.f90 rename to src/add.F90 diff --git a/src/arith.f90 b/src/arith.F90 similarity index 100% rename from src/arith.f90 rename to src/arith.F90 diff --git a/src/asin.f90 b/src/asin.F90 similarity index 100% rename from src/asin.f90 rename to src/asin.F90 diff --git a/src/atan.f90 b/src/atan.F90 similarity index 100% rename from src/atan.f90 rename to src/atan.F90 diff --git a/src/cos.f90 b/src/cos.F90 similarity index 100% rename from src/cos.f90 rename to src/cos.F90 diff --git a/src/div.f90 b/src/div.F90 similarity index 100% rename from src/div.f90 rename to src/div.F90 diff --git a/src/dot_product.f90 b/src/dot_product.F90 similarity index 100% rename from src/dot_product.f90 rename to src/dot_product.F90 diff --git a/src/exp.f90 b/src/exp.F90 similarity index 100% rename from src/exp.f90 rename to src/exp.F90 diff --git a/src/fazang.f90 b/src/fazang.F90 similarity index 100% rename from src/fazang.f90 rename to src/fazang.F90 diff --git a/src/grad.f90 b/src/grad.F90 similarity index 100% rename from src/grad.f90 rename to src/grad.F90 diff --git a/src/inv.f90 b/src/inv.F90 similarity index 100% rename from src/inv.f90 rename to src/inv.F90 diff --git a/src/inv_sqrt.f90 b/src/inv_sqrt.F90 similarity index 100% rename from src/inv_sqrt.f90 rename to src/inv_sqrt.F90 diff --git a/src/inv_square.f90 b/src/inv_square.F90 similarity index 100% rename from src/inv_square.f90 rename to src/inv_square.F90 diff --git a/src/log.f90 b/src/log.F90 similarity index 100% rename from src/log.f90 rename to src/log.F90 diff --git a/src/log_sum_exp.f90 b/src/log_sum_exp.F90 similarity index 100% rename from src/log_sum_exp.f90 rename to src/log_sum_exp.F90 diff --git a/src/matmul.f90 b/src/matmul.F90 similarity index 100% rename from src/matmul.f90 rename to src/matmul.F90 diff --git a/src/meson.build b/src/meson.build index d4b4ca8..16024ff 100644 --- a/src/meson.build +++ b/src/meson.build @@ -4,33 +4,33 @@ sources = ['env.F90', 'tape.F90', 'nested.F90', 'vari.F90', - 'test.f90', - 'var.f90', - 'grad.f90', - 'sin.f90', - 'cos.f90', - 'tan.f90', - 'asin.f90', - 'acos.f90', - 'atan.f90', - 'sqrt.f90', - 'inv.f90', - 'square.f90', - 'inv_square.f90', - 'inv_sqrt.f90', - 'exp.f90', - 'log.f90', + 'test.F90', + 'var.F90', + 'grad.F90', + 'sin.F90', + 'cos.F90', + 'tan.F90', + 'asin.F90', + 'acos.F90', + 'atan.F90', + 'sqrt.F90', + 'inv.F90', + 'square.F90', + 'inv_square.F90', + 'inv_sqrt.F90', + 'exp.F90', + 'log.F90', 'relational.F90', - 'add.f90', - 'sub.f90', - 'mul.f90', - 'div.f90', - 'pow.f90', - 'sum.f90', - 'log_sum_exp.f90', - 'dot_product.f90', - 'matmul.f90', - 'fazang.f90'] + 'add.F90', + 'sub.F90', + 'mul.F90', + 'div.F90', + 'pow.F90', + 'sum.F90', + 'log_sum_exp.F90', + 'dot_product.F90', + 'matmul.F90', + 'fazang.F90'] fazanglib = library('fazang', sources, install: true) diff --git a/src/mul.f90 b/src/mul.F90 similarity index 100% rename from src/mul.f90 rename to src/mul.F90 diff --git a/src/nested.f90 b/src/nested.F90 similarity index 100% rename from src/nested.f90 rename to src/nested.F90 diff --git a/src/pow.f90 b/src/pow.F90 similarity index 100% rename from src/pow.f90 rename to src/pow.F90 diff --git a/src/sin.f90 b/src/sin.F90 similarity index 100% rename from src/sin.f90 rename to src/sin.F90 diff --git a/src/sqrt.f90 b/src/sqrt.F90 similarity index 100% rename from src/sqrt.f90 rename to src/sqrt.F90 diff --git a/src/square.f90 b/src/square.F90 similarity index 100% rename from src/square.f90 rename to src/square.F90 diff --git a/src/sub.f90 b/src/sub.F90 similarity index 100% rename from src/sub.f90 rename to src/sub.F90 diff --git a/src/sum.f90 b/src/sum.F90 similarity index 100% rename from src/sum.f90 rename to src/sum.F90 diff --git a/src/tan.f90 b/src/tan.F90 similarity index 100% rename from src/tan.f90 rename to src/tan.F90 diff --git a/src/test.f90 b/src/test.F90 similarity index 100% rename from src/test.f90 rename to src/test.F90 diff --git a/src/var.f90 b/src/var.F90 similarity index 100% rename from src/var.f90 rename to src/var.F90 diff --git a/test/unit/log_sum_exp_test.f90 b/test/unit/log_sum_exp_test.F90 similarity index 100% rename from test/unit/log_sum_exp_test.f90 rename to test/unit/log_sum_exp_test.F90