aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/CI.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/CI.yml')
-rw-r--r--.github/workflows/CI.yml143
1 files changed, 1 insertions, 142 deletions
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 9fc7918..8aabcf5 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -13,138 +13,8 @@ env:
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: "ON"
HOMEBREW_NO_GITHUB_API: "ON"
HOMEBREW_NO_INSTALL_CLEANUP: "ON"
- RUST_BACKTRACE: "full" # Make Rust print full backtrace on error
jobs:
- stack-build:
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- os: [ubuntu-latest, macos-latest, windows-latest]
- gcc_v: [9] # Version of GFortran we want to use.
- include:
- - os: ubuntu-latest
- STACK_CACHE: "/home/runner/.stack/"
- STACK_CACHE_VERSION: ""
- TEST_SCRIPT: ci/run_tests.sh
- GET_VERSION_CMD: echo ${{ github.ref }} | cut -dv -f2
- CHECK_VERSION_CMD: grep $(cat fpm_version)
- RELEASE_CMD: "cp -- fpm-$(cat fpm_version)-linux-x86_64"
- BOOTSTRAP_RELEASE_CMD: cp /home/runner/.local/bin/fpm fpm-haskell-$(cat fpm_version)-linux-x86_64
- HASH_CMD: ls fpm-*|xargs -i{} sh -c 'sha256sum $1 > $1.sha256' -- {}
- RELEASE_FLAGS: --flag --static --flag -g --flag -fbacktrace --flag -O3
-
- - os: macos-latest
- STACK_CACHE: |
- /Users/runner/.stack/snapshots
- /Users/runner/.stack/setup-exe-src
- STACK_CACHE_VERSION: "v2"
- TEST_SCRIPT: ci/run_tests.sh
- GET_VERSION_CMD: echo ${{ github.ref }} | cut -dv -f2
- CHECK_VERSION_CMD: grep $(cat fpm_version)
- RELEASE_CMD: "cp -- fpm-$(cat fpm_version)-macos-x86_64"
- BOOTSTRAP_RELEASE_CMD: cp /Users/runner/.local/bin/fpm fpm-haskell-$(cat fpm_version)-macos-x86_64
- HASH_CMD: ls fpm-*|xargs -I{} sh -c 'shasum -a 256 $1 > $1.sha256' -- {}
- RELEASE_FLAGS: --flag -g --flag -fbacktrace --flag -O3
-
- - os: windows-latest
- STACK_CACHE: |
- C:\Users\runneradmin\AppData\Roaming\stack
- C:\Users\runneradmin\AppData\Local\Programs\stack
- STACK_CACHE_VERSION: "v2"
- TEST_SCRIPT: ci\run_tests.bat
- GET_VERSION_CMD: ("${{ github.ref }}" -Split "v")[1]
- CHECK_VERSION_CMD: Select-String -Pattern Version | Where-Object { if ($_ -like -join("*",(Get-Content fpm_version),"*")) {echo $_} else {Throw} }
- RELEASE_CMD: copy -- (-join("fpm-",(Get-Content fpm_version),"-windows-x86_64.exe"))
- BOOTSTRAP_RELEASE_CMD: copy C:\Users\runneradmin\AppData\Roaming\local\bin\fpm.exe (-join("fpm-haskell-",(Get-Content fpm_version),"-windows-x86_64.exe"))
- HASH_CMD: Get-ChildItem -File -Filter "fpm-*" | Foreach-Object {echo (Get-FileHash -Algorithm SHA256 $PSItem | Select-Object hash | Format-Table -HideTableHeaders | Out-String) > (-join($PSItem,".sha256"))}
- RELEASE_FLAGS: --flag --static --flag -g --flag -fbacktrace --flag -O3
-
- env:
- FC: gfortran
- GCC_V: ${{ matrix.gcc_v }}
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v1
-
- - name: Install GFortran macOS
- if: contains(matrix.os, 'macos')
- run: |
- ln -s /usr/local/bin/gfortran-${GCC_V} /usr/local/bin/gfortran
- which gfortran-${GCC_V}
- which gfortran
-
- - name: Install GFortran Linux
- if: contains(matrix.os, 'ubuntu')
- run: |
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_V} 100 \
- --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${GCC_V} \
- --slave /usr/bingcov gcov /usr/bin/gcov-${GCC_V}
-
- - name: Get Time
- id: time
- uses: nanzm/get-time-action@v1.0
- with:
- format: 'YYYY-MM'
-
- - name: Setup github actions cache
- id: cache
- uses: actions/cache@v2
- with:
- path: ${{matrix.STACK_CACHE}}
- key: ${{ runner.os }}-${{ steps.time.outputs.time }}${{matrix.STACK_CACHE_VERSION}}
-
- - name: Build Haskell fpm
- run: |
- stack build
- stack install
- working-directory: bootstrap
-
- - name: put fpm to PATH (macOS)
- if: contains(matrix.os, 'macos')
- run: |
- cp /Users/runner/.local/bin/fpm /usr/local/bin
-
- - name: put fpm to PATH (Windows)
- if: contains(matrix.os, 'windows')
- run: |
- copy "C:\Users\runneradmin\AppData\Roaming\local\bin\fpm.exe" "C:\Program Files\Git\usr\bin"
-
- - name: put fpm to PATH (Linux)
- if: contains(matrix.os, 'ubuntu')
- run: |
- sudo cp /home/runner/.local/bin/fpm /usr/local/bin
-
- - name: Run tests on Haskell fpm
- run: |
- stack test
- working-directory: bootstrap
-
- # ----- Upload binaries if creating a release -----
- - name: Check that fpm --version matches release tag
- if: github.event_name == 'release'
- run: |
- ${{ matrix.GET_VERSION_CMD }} > fpm_version
- working-directory: fpm
-
- - name: Stage release files for upload
- if: github.event_name == 'release'
- run: |
- ${{ matrix.BOOTSTRAP_RELEASE_CMD }}
- ${{ matrix.HASH_CMD }}
- working-directory: fpm
-
- - name: Upload assets
- if: github.event_name == 'release'
- uses: svenstaro/upload-release-action@v2
- with:
- repo_token: ${{ secrets.GITHUB_TOKEN }}
- file: fpm/fpm-*
- file_glob: true
- tag: ${{ github.ref }}
- overwrite: true
build:
runs-on: ${{ matrix.os }}
@@ -208,7 +78,6 @@ jobs:
shell: bash
run: |
${{ env.BOOTSTRAP }} build
- working-directory: fpm
- name: Run Fortran fpm (bootstrap)
shell: bash
@@ -216,19 +85,16 @@ jobs:
${{ env.BOOTSTRAP }} run
${{ env.BOOTSTRAP }} run -- --version
${{ env.BOOTSTRAP }} run -- --help
- working-directory: fpm
- name: Test Fortran fpm (bootstrap)
shell: bash
run: |
${{ env.BOOTSTRAP }} test
- working-directory: fpm
- name: Install Fortran fpm (bootstrap)
shell: bash
run: |
${{ env.BOOTSTRAP }} install
- working-directory: fpm
# Phase 2: Bootstrap fpm with itself
- name: Replace bootstrapping version
@@ -237,7 +103,6 @@ jobs:
${{ env.BOOTSTRAP }} run --runner cp -- fpm-debug${{ matrix.exe }}
rm -v ${{ env.BOOTSTRAP }}
echo "FPM=$PWD/fpm-debug" | cat >> $GITHUB_ENV
- working-directory: fpm
- name: Get version (normal)
if: github.event_name != 'release'
@@ -266,7 +131,6 @@ jobs:
shell: bash
run: |
${{ env.FPM }} build ${{ matrix.release-flags }}
- working-directory: fpm
- name: Run Fortran fpm
shell: bash
@@ -274,19 +138,16 @@ jobs:
${{ env.FPM }} run ${{ matrix.release-flags }}
${{ env.FPM }} run ${{ matrix.release-flags }} -- --version
${{ env.FPM }} run ${{ matrix.release-flags }} -- --help
- working-directory: fpm
- name: Test Fortran fpm
shell: bash
run: |
${{ env.FPM }} test ${{ matrix.release-flags }}
- working-directory: fpm
- name: Install Fortran fpm
shell: bash
run: |
${{ env.FPM }} install ${{ matrix.release-flags }}
- working-directory: fpm
- name: Package release version
shell: bash
@@ -294,7 +155,6 @@ jobs:
${{ env.FPM }} run ${{ matrix.release-flags }} --runner cp -- ${{ env.EXE }}
rm -v ${{ env.FPM }}
echo "FPM_RELEASE=$PWD/${{ env.EXE }}" | cat >> $GITHUB_ENV
- working-directory: fpm
env:
EXE: fpm-${{ env.VERSION }}-${{ matrix.os-arch }}${{ matrix.exe }}
@@ -308,14 +168,13 @@ jobs:
shell: bash
run: |
${{ matrix.sha256sum }} ${{ env.FPM_RELEASE }} > ${{ env.FPM_RELEASE }}.sha256
- working-directory: fpm
- name: Upload assets
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
- file: fpm/fpm-*
+ file: fpm-*
file_glob: true
tag: ${{ github.ref }}
overwrite: true