Skip to content

gmtlogo: Create the gmt_letters array dynamically to avoid MSVC compiler error #2474

gmtlogo: Create the gmt_letters array dynamically to avoid MSVC compiler error

gmtlogo: Create the gmt_letters array dynamically to avoid MSVC compiler error #2474

Workflow file for this run

#
# Run full tests
#
name: Tests
on:
push:
branches:
- master
- 6.[0-9]+
paths:
- 'src/**'
- 'test/**'
- 'doc/examples/**'
- 'doc/scripts/**'
- '.github/workflows/tests.yml'
pull_request:
paths:
- 'src/**'
- 'test/**'
- 'doc/examples/**'
- 'doc/scripts/**'
- '.github/workflows/tests.yml'
defaults:
run:
# default to use bash shell
shell: bash -el {0}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
test:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env:
# directories
COASTLINEDIR: ${{ github.workspace }}/coastline
INSTALLDIR: ${{ github.workspace }}/gmt-install-dir
# disable auto-display of GMT plots
GMT_END_SHOW: off
# Run full tests
BUILD_DOCS : false
PACKAGE : false
RUN_TESTS : true
strategy:
fail-fast: false
matrix:
include:
- name: Linux
os: ubuntu-latest
- name: macOS
os: macos-13 # macos-14 use M1 chips, which causes many failures
- name: Windows
os: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.0
- name: Setup vcpkg (Windows)
run: gh run download -n vcpkg-cache -D C:/vcpkg/installed/
if: runner.os == 'Windows'
env:
GH_TOKEN: ${{ github.token }}
- name: Setup conda
uses: conda-incubator/setup-miniconda@v3
if: runner.os == 'macOS'
- name: Install GMT dependencies
run: |
# $RUNNER_OS can be Linux, macOS or Windows
# The following command converts $RUNNER_OS to lowercase
os=$(echo "$RUNNER_OS" | tr '[:upper:]' '[:lower:]')
bash ci/install-dependencies-${os}.sh
env:
EXCLUDE_OPTIONAL: ${{ matrix.EXCLUDE_OPTIONAL }}
- name: Add Ghostscript registry so that GraphicsMagick can find it [Windows]
shell: pwsh
run: |
New-Item -Path "HKLM:\Software\GPL Ghostscript"
New-Item -Path "HKLM:\Software\GPL Ghostscript\10.03.0"
New-ItemProperty -Path "HKLM:\Software\GPL Ghostscript\10.03.0" -Name GS_DLL -PropertyType String -Value "C:\Miniconda\Library\bin\gsdll64.dll"
New-ItemProperty -Path "HKLM:\Software\GPL Ghostscript\10.03.0" -Name GS_LIB -PropertyType String -Value "C:\Miniconda\Library\bin;C:\Miniconda\Library\lib;C\Miniconda\Library\Font;C:\Miniconda\Library\fonts"
if: runner.os == 'Windows'
- name: Download GSHHG and DCW data
run: gh run download -n coastline-cache -D coastline
env:
GH_TOKEN: ${{ github.token }}
- name: Configure GMT
run: |
if [ "$RUNNER_OS" != "Windows" ]; then
bash ci/config-gmt-unix.sh
else
bash ci/config-gmt-windows.sh
fi
- name: Compile GMT (Linux/macOS)
run: |
mkdir build
cd build
cmake -G Ninja ..
cmake --build .
if: runner.os != 'Windows'
- name: Compile GMT (Windows)
shell: cmd
run: |
mkdir build
cd build
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cmake -G Ninja .. -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .
if: runner.os == 'Windows'
- name: Pull baseline image data from dvc remote
run: dvc pull --no-run-cache
- name: Install GMT
run: |
cd build
cmake --build . --target install
# Add GMT PATH to bin
echo "${INSTALLDIR}/bin" >> $GITHUB_PATH
- name: Download cached GMT remote data from GitHub Artifacts
run: gh run download -n gmt-cache -D ~/.gmt/static/
env:
GH_TOKEN: ${{ github.token }}
- name: Check a few simple commands
run: bash ci/simple-gmt-tests.sh
- name: Check a few simple commands (Windows)
shell: cmd
run: call ci/simple-gmt-tests.bat
if: runner.os == 'Windows'
- name: Run full tests
run: |
set -x -e
cd build
# Disable MinGW's path conversion, see #1035.
if [ "$RUNNER_OS" == "Windows" ]; then export MSYS_NO_PATHCONV=1; fi
# Run tests
ctest ${CTEST_ARGS} || ctest ${CTEST_ARGS} --rerun-failed || ctest ${CTEST_ARGS} --rerun-failed
# show the slowest tests
sort -k3nr Testing/Temporary/CTestCostData.txt > /tmp/cost.txt
head -n 30 /tmp/cost.txt | awk 'NF==3 {printf("%50-s %d %5.1f\n", $1, $2, $3)}'
env:
CTEST_ARGS : "--output-on-failure --force-new-ctest-process -j4 --timeout 480"
- name: Run DOS batch examples (Windows)
shell: cmd
run: |
cd doc/examples
call do_examples.bat
if: runner.os == 'Windows'
- name: Upload build directory if failed
uses: actions/upload-artifact@v4
with:
name: BuildDirectory-${{ runner.os }}
path: build/
if: failure()
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4.6.0
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
fail_ci_if_error: false
gcov: true
if: always()