Always store the headers of ASCII files when "externals". #2701
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Build GMT source codes on different Linux distros using dockers. | |
# | |
name: Docker | |
on: | |
push: | |
branches: | |
- master | |
- 6.[0-9]+ | |
paths: | |
- 'ci/**' | |
- 'cmake/**' | |
- 'src/**' | |
- '**/CMakeLists.txt' | |
- '.github/workflows/docker.yml' | |
pull_request: | |
paths: | |
- 'ci/**' | |
- 'cmake/**' | |
- 'src/**' | |
- '**/CMakeLists.txt' | |
- '.github/workflows/docker.yml' | |
defaults: | |
run: | |
# default to use bash shell | |
shell: bash | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} | |
jobs: | |
docker: | |
name: ${{ matrix.image }} | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.image }} | |
env: | |
# directories | |
COASTLINEDIR: ${{ github.workspace }}/coastline | |
INSTALLDIR: ${{ github.workspace }}/gmt-install-dir | |
# disable auto-display of GMT plots | |
GMT_END_SHOW: off | |
# Compile only | |
BUILD_DOCS : false | |
PACKAGE : false | |
RUN_TESTS : false | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
# Ubuntu: https://en.wikipedia.org/wiki/Ubuntu_version_history#Table_of_versions | |
- ubuntu:20.04 # CMake 3.16.3 + GNU 9.3.0; EOL: 2025-05-29 | |
- ubuntu:22.04 # CMake 3.22.1 + GNU 11.2.0; EOL: 2027-06-01 | |
- ubuntu:23.10 # CMake 3.27.4 + GNU 11.2.0; EOL: 2024-07-01 | |
# Debian: https://en.wikipedia.org/wiki/Debian_version_history#Release_table | |
- debian:11 # CMake 3.18.4 + GNU 10.2.1; EOL: 2026-06-01 | |
- debian:12 # CMake 3.25.1 + GNU 12.2.0; EOL: 2028-06-01 | |
- debian:sid # rolling release with latest versions | |
# Fedora: https://en.wikipedia.org/wiki/Fedora_Linux_release_history | |
- fedora:38 # CMake 3.26.2 + GNU 13.0.1; EOL: 2024-05-14 | |
- fedora:39 # CMake 3.27.7 + GNU 13.2.1; EOL: 2024-11-12 | |
- fedora:rawhide # rolling release with latest versions | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.1.4 | |
- name: Install GMT dependencies | |
run: | | |
os=$(cat /etc/os-release | grep "^ID=" | awk -F= '{print $2}') | |
if [[ "$os" = "ubuntu" || "$os" = "debian" ]]; then | |
apt-get update | |
DEBIAN_FRONTEND="noninteractive" TZ="America/New_York" apt-get install -y tzdata | |
apt-get install -y --no-install-recommends --no-install-suggests \ | |
build-essential cmake ninja-build libcurl4-gnutls-dev libnetcdf-dev \ | |
ghostscript curl git \ | |
libgdal-dev libfftw3-dev libpcre3-dev liblapack-dev libglib2.0-dev | |
apt reinstall -y ca-certificates | |
update-ca-certificates | |
elif [[ "$os" = "fedora" ]]; then | |
dnf install -y cmake libcurl-devel netcdf-devel gdal-devel \ | |
ninja-build gdal pcre-devel fftw3-devel lapack-devel \ | |
openblas-devel glib2-devel ghostscript \ | |
openssl | |
fi | |
- name: Cache GSHHG and DCW data | |
uses: actions/cache@v4 | |
id: cache-coastline | |
with: | |
path: ${{ env.COASTLINEDIR }} | |
key: coastline-${{ hashFiles('ci/download-coastlines.sh') }} | |
- name: Download coastlines | |
run: bash ci/download-coastlines.sh | |
if: steps.cache-coastline.outputs.cache-hit != 'true' | |
- name: Configure GMT | |
run: bash ci/config-gmt-unix.sh | |
- name: Compile and install GMT | |
run: | | |
mkdir build | |
cd build | |
cmake -G Ninja .. | |
cmake --build . | |
cmake --build . --target install | |
# Add GMT PATH to bin | |
echo "${INSTALLDIR}/bin" >> $GITHUB_PATH | |
- name: Download cached GMT remote data from GitHub Artifacts | |
uses: dawidd6/action-download-artifact@v3.1.4 | |
with: | |
workflow: ci-caches.yml | |
name: gmt-cache | |
path: gmt-cache | |
# Move downloaded files to ~/.gmt directory and list them | |
- name: Move and list downloaded remote files | |
run: | | |
mkdir -p ~/.gmt/static/ | |
mv gmt-cache/* ~/.gmt/static/ | |
ls -lRh ~/.gmt/static/ | |
- name: Check a few simple commands | |
run: bash ci/simple-gmt-tests.sh |