Commit afdfd31a authored by Sam Thursfield's avatar Sam Thursfield

Enable GitLab CI

This tests that Tracker can be built from source using Autotools and
Meson, and that all of the unit tests run successfully.

There are various improvements that could be made:

  * Pre-create a Docker image with the build dependencies installed, so
    that we don't wait for `dnf` on every build.
  * Fix the functional tests and enable them for every build.
  * Fix the unit tests to not depend on Tracker being installed in the
    host
  * Remove the Autotools build system altogether and use Meson for
    everything \o/
parent ee07c990
stages:
- test
# Note that using Fedora 28 triggered some weird compiler bug for me:
#
# GISCAN Tracker_C-2.0.gir
# annobin: Tracker_2.0.c: Error: plugin built for compiler version (8.0.1) but run with compiler version (8.1.1)
# cc1: error: fail to initialize plugin /usr/lib/gcc/x86_64-redhat-linux/8/plugin/annobin.so
# Traceback (most recent call last):
# File "/usr/lib64/python3.6/distutils/unixccompiler.py", line 127, in _compile
# extra_postargs)
# File "/usr/lib64/python3.6/distutils/ccompiler.py", line 909, in spawn
# spawn(cmd, dry_run=self.dry_run)
# File "/usr/lib64/python3.6/distutils/spawn.py", line 36, in spawn
# _spawn_posix(cmd, search_path, dry_run=dry_run)
# File "/usr/lib64/python3.6/distutils/spawn.py", line 159, in _spawn_posix
# % (cmd, exit_status))
# distutils.errors.DistutilsExecError: command 'gcc' failed with exit status 1
#
test-autotools-fedora27:
stage: test
image: fedora:27
before_script:
# This takes a long time, we could prebuild a Docker image that already
# contains this stuff instead, and use that.
- dnf install -y 'dnf-command(builddep)' dbus-devel dbus-x11 libseccomp-devel make redhat-rpm-config
- dnf builddep -y tracker
# This shouldn't be needed, but currently is.
#
# Some of the tests depend on the GSettings schemas being installed.
#
# Some of the tests also seem to interact with the session-wide Tracker
# instance!
- dnf install -y tracker
# tests/libtracker-common/tracker-file-utils-test will fail if run as root,
# as it makes assertions about a path being unwritable. Better to test as a
# normal user in any case.
- useradd -Um tracker
- chown -R tracker:tracker .
script:
- su tracker -c './autogen.sh --disable-functional-tests --prefix=/usr'
- su tracker -c 'make -j'
- LANG=en_US.UTF8 su tracker -c 'dbus-launch make check'
test-meson-fedora27:
stage: test
image: fedora:27
before_script:
# This takes a long time, we could prebuild a Docker image that already
# contains this stuff instead, and use that.
- dnf install -y 'dnf-command(builddep)' dbus-devel dbus-x11 libseccomp-devel meson redhat-rpm-config
- dnf builddep -y tracker
# This shouldn't be needed, but currently is.
#
# Some of the tests depend on the GSettings schemas being installed.
#
# Some of the tests also seem to interact with the session-wide Tracker
# instance!
- dnf install -y tracker
# tests/libtracker-common/tracker-file-utils-test will fail if run as root,
# as it makes assertions about a path being unwritable. Better to test as a
# normal user in any case.
- useradd -Um tracker
- chown -R tracker:tracker .
script:
- su tracker -c 'mkdir build'
- su tracker -c 'cd build; meson .. -Dfunctional_tests=false'
- su tracker -c 'cd build; ninja'
- su tracker -c 'cd build; LANG=en_US.UTF8 dbus-launch meson test --print-errorlogs'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment