[gparted] Fix up intltool leaving .intltool-merge-cache.lock file behind (!103)



commit 0bd636a34b945469d8644464518f78b9f9e1e92d
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date:   Sun May 29 20:12:16 2022 +0100

    Fix up intltool leaving .intltool-merge-cache.lock file behind (!103)
    
    On Ubuntu 22.04 LTS make distcheck fails like this:
        $ make distcheck
        ...
        ERROR: files left in build directory after distclean:
        ./po/.intltool-merge-cache.lock
        make[1]: *** [Makefile:920: distcleancheck] Error 1
        make[1]: Leaving directory '/builds/GNOME/gparted/gparted-1.4.0-git/_build/sub'
        make: *** [Makefile:849: distcheck] Error 1
    
    This was picked up by the GitLab ubuntu_test CI job after the Ubuntu
    22.04 LTS release and the official Ubuntu docker image labelled latest
    was updated to match, circa April 2022.  This is a known issue with
    intltool >= 0.51.0-5.1 [1][2][3], first included in Ubuntu 22.04 LTS.
    
    The pending proposed fix is to also delete the left behind
    .intltool-merge-cache.lock along with the associated cache file itself
    in the intltool provided Makefile.in.in [4].
    
    Applying a fix to the GitLab ubuntu_test CI job does nothing for fixing
    it for us maintainers on our distributions.  po/Makefile.in.in is not
    part of the GParted git repository, instead it is copied from
    /usr/share/intltool/Makefile.in.in by ./autogen.sh -> gnome-autogen.sh
    -> intltoolize --force --copy --automake.  Add a configure check which
    patches po/Makefile.in.in as needed.  This will fix it for those
    building from git, and be a harmless check for those building from a tar
    release.  Configure output line looks like:
        checking whether po/Makefile.in.in deletes intltool cache lock file... fixed
    
    [1] Ubuntu bug 1712194 - Error when running make distcheck
        https://bugs.launchpad.net/intltool/+bug/1712194
    [2] Debian bug #991623 - intltool: make distcheck broken
        https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=991623
    [3] Arch Linux bug FS#67098 - [intltool] latest patch for race condition
        breaks some builds
        https://bugs.archlinux.org/task/67098
    [4] Remove cache lock file in mostlyclean
        https://code.launchpad.net/~danbnicholson/intltool/intltool/+merge/406321
    
    Closes !103 - Fix make distcheck failure found in GitLab CI job
                  unbuntu_test

 configure.ac | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
---
diff --git a/configure.ac b/configure.ac
index 06395bb7..d9320c89 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,6 +16,8 @@ AC_PROG_CXX
 AC_PROG_CC
 AC_PROG_LIBTOOL
 AC_PROG_AWK
+AC_PROG_FGREP
+AC_PROG_SED
 dnl Check for pkg-config early to avoid splitting message when first used.
 PKG_CHECK_EXISTS
 
@@ -57,6 +59,22 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE", [description])
 AM_GLIB_GNU_GETTEXT
 IT_PROG_INTLTOOL([0.36.0])
 
+dnl Check for and fix missing delete of intltool cache lock file.  Only
+dnl needed with intltool >= 0.51.0-5.1, but just always fix as that is
+dnl simpler and safe.
+AC_MSG_CHECKING([whether po/Makefile.in.in deletes intltool cache lock file])
+file='po/Makefile.in.in'
+if $FGREP -q '.intltool-merge-cache.lock' "$file"; then
+       AC_MSG_RESULT([yes])
+else
+       $SED -i '/rm -f .intltool-merge-cache/s/$/ .intltool-merge-cache.lock/' "$file"
+       if $FGREP -q '.intltool-merge-cache.lock' "$file"; then
+               AC_MSG_RESULT([fixed])
+       else
+               AC_MSG_RESULT([no])
+       fi
+fi
+
 
 dnl======================
 dnl checks for libs


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