Define ReadExifDate in terms of ReadExifData #173
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
# 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' |