Skip to content

Mods to support spectra file IO out of fortran #86

Mods to support spectra file IO out of fortran

Mods to support spectra file IO out of fortran #86

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build-and-test:
name: Build and Test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
num-parse-method: boost
- os: ubuntu-latest
num-parse-method: FastFloat
- os: ubuntu-latest
num-parse-method: FromChars
- os: ubuntu-latest
num-parse-method: strtod
- os: macos-latest
num-parse-method: FastFloat
- os: windows-latest
num-parse-method: FromChars
# - os: windows-latest
# num-parse-method: strtod
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up CMake
uses: jwlawson/actions-setup-cmake@v2.0.2
with:
cmake-version: '3.25'
# For linux, we will perform developer checks, so we need boost
- name: Set up dependencies
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y build-essential libboost-all-dev gfortran zlib1g-dev
- name: Create build directory
run: mkdir build
- name: Configure CMake on Windows
if: runner.os == 'Windows'
run: cmake -S ${{ github.workspace }} -B build -DSpecUtils_BUILD_UNIT_TESTS=ON -DSpecUtils_BUILD_REGRESSION_TEST=ON -DSpecUtils_ENABLE_EQUALITY_CHECKS=ON -DPERFORM_DEVELOPER_CHECKS=OFF -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=OFF -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DSpecUtils_C_BINDINGS=OFF -DCMAKE_INSTALL_PREFIX=install_prefix
# On linux we will perform developer checks and compile as debug to catch asserts
- name: Configure CMake on Linux
if: runner.os == 'Linux'
run: cmake -S ${{ github.workspace }} -B build -DSpecUtils_BUILD_UNIT_TESTS=ON -DSpecUtils_BUILD_REGRESSION_TEST=ON -DSpecUtils_ENABLE_EQUALITY_CHECKS=ON -DPERFORM_DEVELOPER_CHECKS=ON -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=OFF -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DSpecUtils_C_BINDINGS=ON -DSpecUtils_FORTRAN_SWIG=ON -DCMAKE_INSTALL_PREFIX=install_prefix
- name: Configure CMake on macOS
if: runner.os == 'macOS'
run: cmake -S ${{ github.workspace }} -B build -DSpecUtils_BUILD_UNIT_TESTS=ON -DSpecUtils_BUILD_REGRESSION_TEST=ON -DSpecUtils_ENABLE_EQUALITY_CHECKS=ON -DPERFORM_DEVELOPER_CHECKS=OFF -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=ON -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DSpecUtils_C_BINDINGS=ON -DCMAKE_INSTALL_PREFIX=install_prefix
- name: Build macOS and Windows
if: runner.os != 'Linux'
run: cmake --build build --config Release
- name: Build Linux
if: runner.os == 'Linux'
run: cmake --build build --config Release -j $(nproc)
- name: Run tests
run: ctest --rerun-failed --output-on-failure --test-dir build -C Release
- name: Package Lib
if: runner.os == 'Windows'
run: |
cmake -S ${{ github.workspace }} -B build_static_lib_shared_runtime -DSpecUtils_BUILD_UNIT_TESTS=OFF -DSpecUtils_BUILD_REGRESSION_TEST=OFF -DSpecUtils_ENABLE_EQUALITY_CHECKS=OFF -DPERFORM_DEVELOPER_CHECKS=OFF -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=OFF -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DCMAKE_INSTALL_PREFIX=install_prefix_static_lib_shared_runtime -DSpecUtils_USE_MSVC_MultiThreadDLL=ON -DSpecUtils_SHARED_LIB=OFF
cmake --build build_static_lib_shared_runtime --config Release --target package
echo "Files present after package build_static_lib_shared_runtime"
ls
ls build_static_lib_shared_runtime
ls build_static_lib_shared_runtime/Release
ls build_static_lib_shared_runtime/x64/Release
#
cmake -S ${{ github.workspace }} -B build_shared_lib_shared_runtime -DSpecUtils_BUILD_UNIT_TESTS=OFF -DSpecUtils_BUILD_REGRESSION_TEST=OFF -DSpecUtils_ENABLE_EQUALITY_CHECKS=OFF -DPERFORM_DEVELOPER_CHECKS=OFF -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=OFF -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DCMAKE_INSTALL_PREFIX=install_prefix_build_shared_lib_shared_runtime -DSpecUtils_USE_MSVC_MultiThreadDLL=ON -DSpecUtils_SHARED_LIB=ON
cmake --build build_shared_lib_shared_runtime --config Release --target package
echo "Files present after package build_shared_lib_shared_runtime"
ls
ls build_shared_lib_shared_runtime
ls build_shared_lib_shared_runtime/Release
ls build_shared_lib_shared_runtime/x64/Release
#
cmake -S ${{ github.workspace }} -B build_shared_lib_static_runtime -DSpecUtils_BUILD_UNIT_TESTS=OFF -DSpecUtils_BUILD_REGRESSION_TEST=OFF -DSpecUtils_ENABLE_EQUALITY_CHECKS=OFF -DPERFORM_DEVELOPER_CHECKS=OFF -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=OFF -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DCMAKE_INSTALL_PREFIX=install_prefix_build_shared_lib_static_runtime -DSpecUtils_USE_MSVC_MultiThreadDLL=OFF -DSpecUtils_SHARED_LIB=ON
cmake --build build_shared_lib_static_runtime --config Release --target package
echo "Files present after package build_shared_lib_static_runtime"
ls
ls build_shared_lib_static_runtime
ls build_shared_lib_static_runtime/Release
ls build_shared_lib_static_runtime/x64/Release
#
cmake -S ${{ github.workspace }} -B build_static_lib_static_runtime -DSpecUtils_BUILD_UNIT_TESTS=OFF -DSpecUtils_BUILD_REGRESSION_TEST=OFF -DSpecUtils_ENABLE_EQUALITY_CHECKS=OFF -DPERFORM_DEVELOPER_CHECKS=OFF -DSpecUtils_ENABLE_D3_CHART=ON -DSpecUtils_D3_SUPPORT_FILE_STATIC=ON -DSpecUtils_ENABLE_URI_SPECTRA=OFF -DCMAKE_BUILD_TYPE=Release -DSpecUtils_FLT_PARSE_METHOD=${{ matrix.num-parse-method }} -DSpecUtils_FETCH_FAST_FLOAT=ON -DCMAKE_INSTALL_PREFIX=install_prefix_build_static_lib_static_runtime -DSpecUtils_USE_MSVC_MultiThreadDLL=OFF -DSpecUtils_SHARED_LIB=OFF
cmake --build build_static_lib_static_runtime --config Release --target package
echo "Files present after package build_static_lib_static_runtime"
ls
ls build_static_lib_static_runtime
ls build_static_lib_static_runtime/Release
ls build_static_lib_static_runtime/x64/Release
# Update the bleeding-edge tag to be current commit
- name: Run latest-tag
uses: EndBug/latest-tag@v1.6.1
if: matrix.os == 'Windows'
with:
ref: bleeding-edge
description: Latest successful automated build
- name: Upload windows build to GitHub Artifact
uses: actions/upload-artifact@v4
if: runner.os == 'Windows'
with:
name: SpecUtils_${{ runner.os }}_latest
path: '.\build_*\*.zip'
- name: Create Release
uses: ncipollo/release-action@v1.13.0
if: runner.os == 'Windows'
with:
artifacts: '.\build_*\*.zip'
draft: false
prerelease: true
body: "An automated, and untested build of the latest code pushed to the repository."
allowUpdates: true
generateReleaseNotes: false
name: "Bleeding Edge Build"
removeArtifacts: true
replacesArtifacts: true
tag: 'bleeding-edge'
commit: ${{ github.sha }}
makeLatest: true
# Delete all the zip files we created
- name: "Cleanup and finish"
if: runner.os == 'Windows'
run: |
Get-ChildItem '.\build_*\*.zip' | foreach { Remove-Item -Path $_.FullName }
echo "Job status is ${{ job.status }}."