diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..565ed0a3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,81 @@ +name: Makefile CI + +on: + push: + pull_request: + branches: [ "master" ] + +jobs: + docker: + + strategy: + matrix: + ubuntu: [22.04, 20.04] + libgtk: [libgtk-3-dev, libgtk2.0-dev] + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - uses: dorny/paths-filter@v2 + id: changes + with: + filters: | + docker: + - 'docker/**' + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: "{{defaultContext}}:docker/build" + build-args: | + UBUNTU_VERSION=${{ matrix.ubuntu }} + LIBGTK=${{ matrix.libgtk }} + push: true + tags: ghcr.io/guyou/viking-build-env:${{ matrix.ubuntu }}-${{ matrix.libgtk }} + if: steps.changes.outputs.docker == 'true' + + build: + if: ${{ always() }} + needs: docker + + strategy: + fail-fast: false + matrix: + ubuntu: [22.04, 20.04] + libgtk: [libgtk-3-dev, libgtk2.0-dev] + + runs-on: ubuntu-latest + container: + image: ghcr.io/guyou/viking-build-env:${{ matrix.ubuntu }}-${{ matrix.libgtk }} + + steps: + - uses: actions/checkout@v3 + + - name: Configure + run: ./autogen.sh ${{ matrix.libgtk == 'libgtk2.0-dev' && '--enable-gtk2' || '' }} + + - name: Build + run: make + + - name: Run check + uses: coactions/setup-xvfb@v1 + with: + run: make check + + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: test-suite-log + path: test/test-suite.log + retention-days: 5 + + - name: Run distcheck + run: make distcheck DISTCHECK_CONFIGURE_FLAGS=${{ matrix.libgtk == 'libgtk2.0-dev' && '--enable-gtk2' || '' }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d4528fb3..00000000 --- a/.travis.yml +++ /dev/null @@ -1,50 +0,0 @@ -language: c - -services: -- docker - -env: - global: -# https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1802718 -# and/or travis docker image(s) not having enabled 'deb-src' lines -# contrary to docker documentation -> https://docs.docker.com/samples/library/ubuntu/ -# NB At time of writing 2018-11-11: artful doesn't really need this FIX_APT_CONFIG, but no harm in applying it -# TRAVIS BROKEN -# - FIX_APT_CONFIG="sed -i '/^#\sdeb-src /s/^#//' /etc/apt/sources.list" -# The common extra dependencies required beyond the default distribution 'build-dep' - - COMMON_DEPS="gtk-doc-tools yelp-tools libgeoclue-2-dev nettle-dev liboauth-dev libzip-dev libjson-glib-dev libgtk-3-dev xxd" -# 'glib-compile-resources' has moved around packages libglib2.0-bin --> libglib2.0-dev-bin, so can't be in common. -# -# For available build images-> https://docs.travis-ci.com/user/reference/overview/ -# - matrix: - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin -# Docker images previously (temporarily?) available but have vanished: -# - BUILD_IMG=ubuntu:18.10 -# - BUILD_IMG=ubuntu:19.04 -# - BUILD_IMG=ubuntu:19.10 DEPS=libglib2.0-dev-bin -# Test basic levels of some configure options -# Use the latest LTS version for these - - BUILD_IMG=ubuntu:18.04 DEPS="libglib2.0-dev-bin libexif-dev" OPTS="--with-libexif" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-bzip2" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-geotag" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-magic" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-mapnik" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-mbtiles" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-nettle" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-realtime-gps-tracking" - - BUILD_IMG=ubuntu:18.04 DEPS=libglib2.0-dev-bin OPTS="--disable-zip" -# NB Ubuntu 16.04 doesn't have a new enough geoclue so simply disable using it -# NB Ubuntu 16.04 is GTK 3.18.9, so keep as GTK2 only - - BUILD_IMG=ubuntu:16.04 DEPS="libglib2.0-bin libmapnik-dev" OPTS="--enable-gtk2 --disable-geoclue" - - BUILD_IMG=ubuntu:18.04 DEPS="libglib2.0-dev-bin libgtk2.0-dev" OPTS="--enable-gtk2" -# -# Allow specifying docker user for increased rate allowance (compared to anonymous access): -# https://docs.docker.com/docker-hub/download-rate-limit/ -# https://www.docker.com/increase-rate-limits -# These DOCKERHUB env vars can be set in your travis settings -# -script: > - if [ ! -z "${DOCKERHUB_USERNAME:-}" ]; then set -x; echo "${DOCKERHUB_PASSWORD}" | docker login --username "${DOCKERHUB_USERNAME}" --password-stdin; set +x; fi && - docker run --rm=true -v $HOME:$HOME:rw $BUILD_IMG /bin/sh -c "sed -i '/^#\sdeb-src /s/^#//' /etc/apt/sources.list && apt-get update && apt-get build-dep --yes viking && apt-get install --yes $COMMON_DEPS $DEPS && cd $PWD && ./autogen.sh $OPTS && make -j && make -j check || (cat test/test-suite.log ; false) && make install" -# Further packages are installed as these are new dependencies for the latest source code, compared to the dependencies listed in the distribution version (`apt-get build-dep` always refers to the version which is built for the OS rather than the up-to-date source) diff --git a/README.md b/README.md index c188a7b2..9c3c2e84 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ -# Viking [![Build Status](https://travis-ci.com/viking-gps/viking.svg?branch=master)](https://travis-ci.com/viking-gps/viking) +# Viking ![Build Status](https://github.com/viking-gps/viking/actions/workflows/makefile.yml/badge.svg) [![GitHub license](https://img.shields.io/github/license/viking-gps/viking)](https://github.com/viking-gps/viking/master/COPYING) -[![Build history](https://buildstats.info/travisci/chart/viking-gps/viking?branch=master&showStats=true)](https://travis-ci.com/viking-gps/viking/builds) - Viking is a free/open source program to manage GPS data. You can import, plot and create tracks, routes and waypoints, show OSM and other maps, generate maps (using Mapnik), @@ -29,7 +27,7 @@ Git repository: On Debian Sid, following packages must be installed before building: - $ sudo apt install gtk-doc-tools docbook-xsl yelp-tools libpng-dev libgtk-3-dev libicu-dev libjson-glib-dev intltool xxd + $ sudo apt install gtk-doc-tools docbook-xsl yelp-tools libpng-dev libgtk-3-dev libicu-dev libjson-glib-dev intltool autopoint xxd The following packages are needed (they are included by default in Debian Sid, but not in other distributions). They must be installed too: diff --git a/docker/build/Dockerfile b/docker/build/Dockerfile new file mode 100644 index 00000000..6a8da202 --- /dev/null +++ b/docker/build/Dockerfile @@ -0,0 +1,11 @@ +ARG UBUNTU_VERSION=22.04 + +FROM ubuntu:$UBUNTU_VERSION + +ARG LIBGTK=libgtk-3-dev + +ENV DEBIAN_FRONTEND=noninteractive +RUN apt update && \ + apt install -y build-essential gtk-doc-tools docbook-xsl yelp-tools libpng-dev $LIBGTK libicu-dev libjson-glib-dev intltool autopoint xxd libcurl4-gnutls-dev libglib2.0-dev-bin libsqlite3-dev nettle-dev libmapnik-dev libgeoclue-2-dev libgexiv2-dev libgps-dev libmagic-dev libbz2-dev libzip-dev liboauth-dev libnova-dev && \ + apt install -y xvfb x11-xserver-utils sudo && \ + rm -rf /var/lib/apt/lists/* diff --git a/docker/build/Makefile b/docker/build/Makefile new file mode 100644 index 00000000..72bb5fba --- /dev/null +++ b/docker/build/Makefile @@ -0,0 +1,18 @@ +all: \ + ubuntu2004-gtk3 \ + ubuntu2004-gtk2 \ + ubuntu2204-gtk3 \ + ubuntu2204-gtk2 + +ubuntu2004-gtk3: + docker build --build-arg UBUNTU_VERSION=20.04 --build-arg LIBGTK=libgtk-3-dev -t viking-build:$@ . + +ubuntu2004-gtk2: + docker build --build-arg UBUNTU_VERSION=20.04 --build-arg LIBGTK=libgtk2.0-dev -t viking-build:$@ . + +ubuntu2204-gtk3: + docker build --build-arg UBUNTU_VERSION=22.04 --build-arg LIBGTK=libgtk-3-dev -t viking-build:$@ . + +ubuntu2204-gtk2: + docker build --build-arg UBUNTU_VERSION=22.04 --build-arg LIBGTK=libgtk2.0-dev -t viking-build:$@ . + \ No newline at end of file