From cbb25a2511ec9e355b4dbba288689bbc00b7af65 Mon Sep 17 00:00:00 2001 From: Mike Fleetwood Date: Tue, 24 Jul 2018 21:56:06 +0100 Subject: [PATCH] Stop xmllint scrollkeeper-omf.dtd fetch failure breaking CI tests (#9) The GitLab Continuous Integration test stage jobs can fail like this: $ make check ... Making check in help make[1]: Entering directory `/builds/mfleetwo/gparted/help' ... xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' gparted-C.omf warning: failed to load external entity "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd" Could not parse DTD http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' gparted-cs.omf ... make[1]: *** [check-doc-omf] Error 2 make[1]: Leaving directory `/builds/mfleetwo/gparted/help' make: *** [check-recursive] Error 1 ERROR: Job failed: exit code 1 It fails when the scrollkeeper.sourceforge.net site reports that SourceForge is undergoing maintenance or is temporarily unavailable. I have seen this occur on 3 separate occasions in the last 4 weeks since I started experimenting with GitLab CI, which is rather too often. Xmllint comes from the GNOME 2 gnome-doc-utils.make rules used to build and validate GNOME 2 documentation. Fragment of useful Debian bug report 730688: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730688 --disable-scrollkeeper requieres scrollkeeper installed "You can reproduce the problem in mdbtoools version 0.7.1-1 with no network, and rarian-compat not installed. When the network is available, buildd downloads the DTD for checks. When there is no network, gnome-doc-utils fails. " Fix by: (1) adding the rarian-compat package to the CI Docker images, which provides a local copy of the scrollkeeper-omf.dtd file; (2) adding the xmllint --nonet option to prevent fetching of DTDs remotely. With reference to earlier commit: 0eb9f1fcfb2a438ecd85ad7e526f0ec3d01e2da6 Reduce dependency on scrollkeeper (#743318) That commit allowed GParted to be installed on GNOME 3 desktops without requiring rarian-compat package to be installed. This commit adds rarian-compat to the CI images so that 'make check' can succeed without accessing the Internet. Just the intricate path to continue to build and test a GNOME 2 application in a world of GNOME 3 desktops with beginning to be reduced backward compatibility. Closes #9 - CI test jobs occasionally fail with xmllint not loading external entity http://scrollkeeper.sourceforce.net/dtds/ scrollkeeper-omf-1.0/scrollkeeper-omf.dtd --- .gitlab-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3444ff8..e6aa8e03 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ stages: - yum update -y - yum install -y which gnome-common gnome-doc-utils glib2-devel intltool gcc-c++ libuuid-devel parted-devel gtkmm24-devel make - polkit file + polkit file rarian-compat .ubuntu_image_template: &ubuntu_image_definition # Use official Ubuntu image https://hub.docker.com/_/ubuntu/. @@ -18,7 +18,7 @@ stages: - apt-get update - apt-get install -y gnome-common gnome-doc-utils libglib2.0-dev-bin uuid-dev libparted-dev libgtkmm-2.4-dev make - policykit-1 + policykit-1 rarian-compat .build_stage_template: &build_stage_definition stage: build @@ -35,6 +35,8 @@ stages: - ./autogen.sh - nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1 - echo nproc=$nproc + # Prevent xmllint fetching scrollkeeper DTD file remotely. + - sed -i '/xmllint.*http.*scrollkeeper-omf.dtd/s|xmllint |xmllint --nonet |' help/Makefile - make -j $nproc # Exclude specific unit test which fails without /dev/disk in Docker images. - export GTEST_FILTER='-BlockSpecialTest.NamedBlockSpecialObjectBySymlinkMatches'