diff options
author | Sam Thursfield <sam@afuera.me.uk> | 2018-06-17 18:22:07 +0200 |
---|---|---|
committer | Sam Thursfield <sam@afuera.me.uk> | 2018-07-02 19:12:23 +0200 |
commit | 0d563974b1d06c96982711f02313dc5c3aadbaf3 (patch) | |
tree | 65694c1b1d833126f5ca616a4cc86bbac7ccd7ea | |
parent | 562cdfc64c25e2d76745beb5fca28ea89f9b33ed (diff) | |
download | tracker-sam/ci.tar.gz |
Enable GitLab CIsam/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/
-rw-r--r-- | .gitlab-ci.yml | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..91aa40c3e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,77 @@ +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' |