Skip to content

Replace Fedora 40 with 41 in CI #170

Replace Fedora 40 with 41 in CI

Replace Fedora 40 with 41 in CI #170

Workflow file for this run

# Github Actions configuration
name: CI
permissions: {}
on:
# Trigger the workflow on push or pull requests, but only for the
# master and ci branches
push:
branches:
- master
- ci
paths-ignore:
- '.cirrus.yml'
- '.appveyor.yml'
pull_request:
branches:
- master
paths-ignore:
- '.cirrus.yml'
- '.appveyor.yml'
env:
MAKEFLAGS: -j 4
jobs:
build-ubuntu:
runs-on: ubuntu-${{ matrix.osver }}
strategy:
fail-fast: false
matrix:
osver: [20.04, 22.04, 24.04]
build:
- cc: gcc
gtk: 2
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev xsltproc gettext
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- cc: clang
gtk: 2
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev xsltproc gettext
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: clang++
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- name: no-nls
cc: gcc
gtk: 2
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev xsltproc
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3
cxx: g++
target: all
install_target: install install-desktop-file
osver: 20.04
- cc: gcc-8
gtk: 2
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev xsltproc gettext gcc-8
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- cc: gcc-8
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext gcc-8
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- cc: clang-8
gtk: 2
install: clang-8 desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev gettext xsltproc
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: clang++-8
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- cc: clang-9
gtk: 2
install: clang-9 desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev gettext xsltproc
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: clang++-9
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- cc: clang-10
gtk: 2
install: clang-10 desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk2.0-dev gettext xsltproc
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: clang++-10
target: all
install_target: install install-po install-desktop-file
osver: 20.04
- cc: gcc
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
- cc: clang
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: clang++
target: all
install_target: install install-po install-desktop-file
- name: no-nls
cc: gcc
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3
cxx: g++
target: all
install_target: install install-desktop-file
- name: debuglog
cc: gcc
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1 -DDEBUG
cxx: g++
target: all
install_target: install install-po install-desktop-file
failing_tests: 16
- name: sanitize
cc: clang
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext
cflags: -g -O0 -fsanitize=address -fsanitize=undefined -DENABLE_NLS=1
ldflags: -g -O0 -fsanitize=address -fsanitize=undefined
cxx: clang++
target: all
install_target: install install-po install-desktop-file
asan_options: strict_string_checks=0:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1:use_sigaltstack=0
- name: 'compile as c++'
cc: g++
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
- name: 'valgrind tests'
cc: gcc
install: docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext valgrind
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: gpscorrelate
install_target: install
valgrind: yes
- name: 'locale tests'
cc: gcc
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc gettext locales-all
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
# Turkish is one of the better locales to test in that it has unusual
# upper/lowercase folding and comma as decimal separator.
locale: tr_TR
exclude:
# Exclude configurations intended for a single OS version
- osver: 22.04
build:
osver: 20.04
- osver: 24.04
build:
osver: 20.04
steps:
- uses: actions/checkout@v4
- name: 'install deps'
run: sudo apt-get update -y; sudo apt-get install -y --no-install-suggests --no-install-recommends ${{ matrix.build.install }}
- name: 'build'
run: make CFLAGS="${{ matrix.build.cflags }}" LDFLAGS="${{ matrix.build.ldflags }}" CC="${{ matrix.build.cc }}" CXX="${{ matrix.build.cxx }}" GTK="${{ matrix.build.gtk }}" ${{ matrix.build.make_opts }} ${{ matrix.build.target }}
- name: 'smoke test'
# ASAN_OPTIONS is to work around https://bugzilla.redhat.com/show_bug.cgi?id=1950244
run: env ASAN_OPTIONS="${{ matrix.build.asan_options }}" ./gpscorrelate -V
- name: 'test'
run: |
if [[ -z "${{ matrix.build.failing_tests }}" ]] ; then
make check CHECK_OPTIONS=-v ASAN_OPTIONS="${{ matrix.build.asan_options }}"
else
# Debug logging enabled makes some tests fail due to differing output
echo 'Expecting ${{ matrix.build.failing_tests }} test failures'
make check CHECK_OPTIONS=-v | tee /dev/stderr | grep -q '${{ matrix.build.failing_tests }} test(s) have FAILED'
fi
- if: matrix.build.valgrind == 'yes'
name: 'valgrind test'
run: make check CHECK_OPTIONS='-v -m'
- if: matrix.build.locale
name: 'locale test'
env:
LC_ADDRESS: ${{ matrix.build.locale }}
LC_COLLATE: ${{ matrix.build.locale }}
LC_CTYPE: ${{ matrix.build.locale }}
LC_IDENTIFICATION: ${{ matrix.build.locale }}
LC_MEASUREMENT: ${{ matrix.build.locale }}
LC_MESSAGES: ${{ matrix.build.locale }}
LC_MONETARY: ${{ matrix.build.locale }}
LC_NAME: ${{ matrix.build.locale }}
LC_NUMERIC: ${{ matrix.build.locale }}
LC_PAPER: ${{ matrix.build.locale }}
LC_SOURCED: ${{ matrix.build.locale }}
LC_TELEPHONE: ${{ matrix.build.locale }}
LC_TIME: ${{ matrix.build.locale }}
run: make check CHECK_OPTIONS='-v'
- name: 'install test'
run: make prefix= DESTDIR="${PWD}" ${{ matrix.build.install_target }}
coverage:
runs-on: ubuntu-24.04
strategy:
matrix:
build:
- cc: gcc
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 libexiv2-dev libgtk-3-dev xsltproc lcov
cflags: -g -O0 --coverage
ldflags: -g -O0 --coverage
cxx: g++
target: gpscorrelate
steps:
- uses: actions/checkout@v4
- name: 'install deps'
run: sudo apt-get update -y; sudo apt-get install -y --no-install-suggests --no-install-recommends ${{ matrix.build.install }}
- name: 'build'
run: make CFLAGS="${{ matrix.build.cflags }}" LDFLAGS="${{ matrix.build.ldflags }}" CC="${{ matrix.build.cc }}" CXX="${{ matrix.build.cxx }}" GTK="${{ matrix.build.gtk }}" ${{ matrix.build.make_opts }} ${{ matrix.build.target }}
- name: 'smoke test'
run: ./gpscorrelate -V
- name: 'test'
run: make check CHECK_OPTIONS=-v ASAN_OPTIONS="${{ matrix.build.asan_options }}"
- name: coverage analysis
run: mkdir coverage && lcov -c -d . -o coverage/lcov.info
- name: push to Coveralls
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.github_token }}
build-osx:
runs-on: ${{ matrix.os }}
env:
MAKEFLAGS: -j 3
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-14, macos-15]
build:
- cc: gcc
gtk: 2
install: desktop-file-utils docbook-xsl exiv2 gtk+
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxxflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1 -std=c++11
ldflags: -O3 -lintl
cxx: g++
target: all
install_target: install install-po install-desktop-file
- cc: gcc
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 gtk+3
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxxflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1 -std=c++11
ldflags: -O3 -lintl
cxx: g++
target: all
install_target: install install-po install-desktop-file
- cc: clang
gtk: 2
install: desktop-file-utils docbook-xsl exiv2 gtk+
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxxflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1 -std=c++11
ldflags: -O3 -lintl
cxx: clang++
target: all
install_target: install install-po install-desktop-file
- cc: clang
gtk: 3
install: desktop-file-utils docbook-xsl exiv2 gtk+3
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxxflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1 -std=c++11
ldflags: -O3 -lintl
cxx: clang++
target: all
install_target: install install-po install-desktop-file
steps:
- uses: actions/checkout@v4
- name: install deps
run: brew install ${{ matrix.build.install }}
- name: build
run: make CFLAGS="-I$(brew --prefix)/include ${{ matrix.build.cflags }}" CXXFLAGS="${{ matrix.build.cxxflags }}" LDFLAGS="-L$(brew --prefix)/lib ${{ matrix.build.ldflags }}" CC="${{ matrix.build.cc }}" CXX="${{ matrix.build.cxx }}" GTK="${{ matrix.build.gtk }}" ${{ matrix.build.make_opts }} XML_CATALOG_FILES="$(brew --prefix)/etc/xml/catalog" XSLTFLAGS=--nonet ${{ matrix.build.target }}
- name: smoke test
run: ./gpscorrelate -V
- name: test
run: |
if [[ -z "${{ matrix.build.failing_tests }}" ]] ; then
make check CHECK_OPTIONS=-v ASAN_OPTIONS="${{ matrix.build.asan_options }}"
else
# Debug logging enabled makes some tests fail due to differing output
echo 'Expecting ${{ matrix.build.failing_tests }} test failures'
make check CHECK_OPTIONS=-v | tee /dev/stderr | grep -q '${{ matrix.build.failing_tests }} test(s) have FAILED'
fi
- name: install test
run: make prefix= DESTDIR="${PWD}" -j 1 ${{ matrix.build.install_target }}
build-fedora:
runs-on: ubuntu-latest
container: fedora:${{ matrix.osver }}
strategy:
fail-fast: false
matrix:
osver: [39, 41]
build:
- cc: gcc
gtk: 3
install: gcc g++ make diffutils desktop-file-utils docbook-style-xsl exiv2 exiv2-devel gtk3-devel xsltproc gettext-devel
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
cxx: g++
target: all
install_target: install install-po install-desktop-file
steps:
- uses: actions/checkout@v4
- name: install deps
run: |
dnf install -y --setopt=install_weak_deps=False ${{ matrix.build.install }}
- name: build
run: make CFLAGS="${{ matrix.build.cflags }}" LDFLAGS="${{ matrix.build.ldflags }}" CC="${{ matrix.build.cc }}" CXX="${{ matrix.build.cxx }}" GTK="${{ matrix.build.gtk }}" ${{ matrix.build.make_opts }} ${{ matrix.build.target }}
- name: smoke test
run: ./gpscorrelate -V
- name: test
run: |
install -d -m 0777 tests/log
if [[ -z "${{ matrix.build.failing_tests }}" ]] ; then
sudo -u nobody make check CHECK_OPTIONS=-v ASAN_OPTIONS="${{ matrix.build.asan_options }}"
else
# Debug logging enabled makes some tests fail due to differing output
echo 'Expecting ${{ matrix.build.failing_tests }} test failures'
sudo -u nobody make check CHECK_OPTIONS=-v | tee /dev/stderr | grep -q '${{ matrix.build.failing_tests }} test(s) have FAILED'
fi
- name: install test
run: make prefix= DESTDIR="${PWD}" ${{ matrix.build.install_target }}
build-debian:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
build:
- name: '32-bit i686'
cc: i686-linux-gnu-gcc-12
cxx: i686-linux-gnu-g++-12
install: make gcc-12-i686-linux-gnu g++-12-i686-linux-gnu exiv2:i386 libexiv2-dev:i386 libgtk-3-dev:i386 gettext:i386 libxml2-dev:i386
cflags: -m32 -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
target: gpscorrelate gpscorrelate-gui
arch: i386
# Debian stable
container: debian:bookworm-slim
- name: 'x86_64 testing'
cc: gcc
cxx: g++
install: make gcc g++ exiv2 libexiv2-dev libgtk-3-dev gettext libxml2-dev
cflags: -Wall -Wextra -Werror -Wno-error=deprecated-declarations -O3 -DENABLE_NLS=1
target: gpscorrelate gpscorrelate-gui
arch: amd64
# Debian testing
container: debian:testing
container: ${{ matrix.build.container }}
steps:
- uses: actions/checkout@v4
- name: 'install deps'
env:
DEBIAN_FRONTEND: noninteractive
run: |
dpkg --add-architecture ${{ matrix.build.arch }} && apt-get update -y && apt-get install -y --no-install-suggests --no-install-recommends ${{ matrix.build.install }}
# Create a user for running tests, as some fail under root
adduser --disabled-password --comment '' build
chown build . doc tests
- name: 'build'
env:
PKG_CONFIG_PATH: /usr/lib/${{ matrix.build.arch }}-linux-gnu/pkgconfig
run: su build -c 'make CFLAGS="${{ matrix.build.cflags }}" LDFLAGS="${{ matrix.build.ldflags }}" CC="${{ matrix.build.cc }}" CXX="${{ matrix.build.cxx }}" ${{ matrix.build.make_opts }} ${{ matrix.build.target }}'
- name: 'smoke test'
run: ./gpscorrelate -V
- name: 'tests'
run: su build -c 'make check CHECK_OPTIONS=-v'