Skip to content

fix spelling

fix spelling #572

Workflow file for this run

name: CMake Build Matrix
on: [push]
jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Windows Latest MSVC", artifact: "Gempyre-Windows-MSVC.tar.xz",
os: windows-latest,
build_type: "Release",
cc: "cl",
cxx: "cl",
environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat",
generators: "Visual Studio 17 2022"
}
- {
name: "Windows Latest MinGW", artifact: "Gempyre-Windows-MinGW.tar.xz",
os: windows-latest,
build_type: "Release", cc: "gcc", cxx: "g++",
generators: "Ninja"
}
- {
name: "Ubuntu Latest GCC", artifact: "Gempyre-Linux.tar.xz",
os: ubuntu-latest,
build_type: "Release", cc: "gcc", cxx: "g++",
generators: "Ninja"
}
- {
name: "macOS Latest Clang", artifact: "Gempyre-macOS.tar.xz",
os: macos-latest,
build_type: "Release", cc: "clang", cxx: "clang++",
generators: "Ninja"
}
steps:
- uses: actions/checkout@v3
- name: Install dependencies on windows
if: startsWith(matrix.config.os, 'windows')
run: |
choco install ninja cmake
ninja --version
cmake --version
- name: Install dependencies on ubuntu
if: startsWith(matrix.config.name, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install libegl1-mesa
sudo apt-get install doxygen
sudo apt-get install graphviz
sudo apt-get install ninja-build cmake
sudo apt-get install aspell
ninja --version
cmake --version
gcc --version
- name: Install dependencies on macos
if: startsWith(matrix.config.os, 'macos')
run: |
brew install cmake ninja
ninja --version
cmake --version
- name: Configure
shell: cmake -P {0}
run: |
set(ENV{CC} ${{ matrix.config.cc }})
set(ENV{CXX} ${{ matrix.config.cxx }})
message("Currenly: ${CMAKE_CURRENT_SOURCE_DIR}, ${CMAKE_CURRENT_LIST_DIR}")
# is this really executed?
if ("${{ runner.os }}" STREQUAL "Windows" AND NOT "x${{ matrix.config.environment_script }}" STREQUAL "x")
execute_process(
COMMAND "${{ matrix.config.environment_script }}" && set
OUTPUT_FILE environment_script_output.txt
)
file(STRINGS environment_script_output.txt output_lines)
foreach(line IN LISTS output_lines)
if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$")
set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}")
endif()
endforeach()
endif()
if ("${{ matrix.config.os }}" STREQUAL "ubuntu-latest")
set(DOX "-DDOXYGEN=1")
endif()
execute_process(
COMMAND cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -DCI_ACTIONS=ON -G Ninja -DACTIONS=TRUE ${DOX} -DCMAKE_INSTALL_PREFIX=install_dir
RESULT_VARIABLE result
)
if (NOT result EQUAL 0)
message(FATAL_ERROR "Bad exit status")
endif()
- name: Build
shell: cmake -P {0}
run: |
set(ENV{NINJA_STATUS} "[%f/%t %o/sec] ")
if ("${{ runner.os }}" STREQUAL "Windows" AND NOT "x${{ matrix.config.environment_script }}" STREQUAL "x")
file(STRINGS environment_script_output.txt output_lines)
foreach(line IN LISTS output_lines)
if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$")
set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}")
endif()
endforeach()
endif()
execute_process(
COMMAND cmake --build build
RESULT_VARIABLE result
OUTPUT_VARIABLE build_out
ERROR_VARIABLE build_out
)
message("build out: ${build_out}")
if (NOT result EQUAL 0)
message(FATAL_ERROR "Bad exit status")
endif()
- name: Deploy docs
if: startsWith(matrix.config.name, 'ubuntu')
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/html
- name: Setup Chrome
uses: browser-actions/setup-chrome@v1
- name: Setup DISPLAY
if: startsWith(matrix.config.os, 'linux')
run: |
export DISPLAY=:99
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 &
#- name: Run tests
# shell: cmake -P {0}
# run: |
# execute_process(
# COMMAND ctest -j 1 --timeout 60 --verbose
# WORKING_DIRECTORY build
# RESULT_VARIABLE result
# )
# if (NOT result EQUAL 0)
# message(WARNING "Running tests failed!")
# endif()
- name: Run Unit tests
shell: bash
run: |
build/test/unittests/unittests
- name: Run API tests
if: "! startsWith(matrix.config.os, 'windows')" #"! contains(matrix.config.name, 'MinGw')"
shell: bash
run: |
build/test/apitests/apitests --verbose
- name: List this folder
shell: bash
run: pwd && ls -R
- name: Install Strip
run: cmake --install build --prefix install_dir --strip
- name: List this folder
shell: bash
run: ls -R
- name: Pack
working-directory: install_dir
run: cmake -E tar cJfv ../${{ matrix.config.artifact }} .
- name: Upload
uses: actions/upload-artifact@v1
with:
path: ./${{ matrix.config.artifact }}
name: ${{ matrix.config.artifact }}
release:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Create Release
uses: ncipollo/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
allowUpdates: true
- name: Store Release url
run: |
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
- uses: actions/upload-artifact@v1
with:
path: ./upload_url
name: upload_url
publish:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Windows Latest MSVC", artifact: "Gempyre-Windows-MSVC.tar.xz",
os: ubuntu-latest
}
- {
name: "Windows Latest MinGW", artifact: "Gempyre-Windows-MinGW.tar.xz",
os: ubuntu-latest
}
- {
name: "Ubuntu Latest GCC", artifact: "Gempyre-Linux.tar.xz",
os: ubuntu-latest
}
- {
name: "macOS Latest Clang", artifact: "Gempyre-macOS.tar.xz",
os: ubuntu-latest
}
needs: release
steps:
- name: Download a Build Artifact
uses: actions/[email protected]
with:
name: ${{ matrix.config.artifact }}
- name: Release
uses: softprops/action-gh-release@v1
with:
files: ${{ matrix.config.artifact }}