[gparted/9-ci-test-jobs-occassionally-fail-with-xmllint-not-loading-external-entity-http-scrollkeeper-sourceforge-net-dtds-scrollkeeper-omf-1-0-scrollkeeper-omf-dtd] Stop xmllint scrollkeeper-omf.dtd fetch failure breaking CI tests (#9)



commit cbb25a2511ec9e355b4dbba288689bbc00b7af65
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date:   Tue Jul 24 21:56:06 2018 +0100

    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'


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]