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:
    0eb9f1fcfb
    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
This commit is contained in:
Mike Fleetwood 2018-07-24 21:56:06 +01:00
parent 112f1d3e67
commit cbb25a2511
1 changed files with 4 additions and 2 deletions

View File

@ -9,7 +9,7 @@ stages:
- yum update -y - yum update -y
- yum install -y which gnome-common gnome-doc-utils glib2-devel intltool - yum install -y which gnome-common gnome-doc-utils glib2-devel intltool
gcc-c++ libuuid-devel parted-devel gtkmm24-devel make gcc-c++ libuuid-devel parted-devel gtkmm24-devel make
polkit file polkit file rarian-compat
.ubuntu_image_template: &ubuntu_image_definition .ubuntu_image_template: &ubuntu_image_definition
# Use official Ubuntu image https://hub.docker.com/_/ubuntu/. # Use official Ubuntu image https://hub.docker.com/_/ubuntu/.
@ -18,7 +18,7 @@ stages:
- apt-get update - apt-get update
- apt-get install -y gnome-common gnome-doc-utils libglib2.0-dev-bin - apt-get install -y gnome-common gnome-doc-utils libglib2.0-dev-bin
uuid-dev libparted-dev libgtkmm-2.4-dev make uuid-dev libparted-dev libgtkmm-2.4-dev make
policykit-1 policykit-1 rarian-compat
.build_stage_template: &build_stage_definition .build_stage_template: &build_stage_definition
stage: build stage: build
@ -35,6 +35,8 @@ stages:
- ./autogen.sh - ./autogen.sh
- nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1 - nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1
- echo nproc=$nproc - 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 - make -j $nproc
# Exclude specific unit test which fails without /dev/disk in Docker images. # Exclude specific unit test which fails without /dev/disk in Docker images.
- export GTEST_FILTER='-BlockSpecialTest.NamedBlockSpecialObjectBySymlinkMatches' - export GTEST_FILTER='-BlockSpecialTest.NamedBlockSpecialObjectBySymlinkMatches'