diff --git a/.gitlab-ci/run-test.sh b/.gitlab-ci/run-test.sh index 5b3f18f0f..1fdb214b8 100755 --- a/.gitlab-ci/run-test.sh +++ b/.gitlab-ci/run-test.sh @@ -20,9 +20,6 @@ fi do_clean() { git clean -fdx - # "make -C update-po", run on "make dist" has a silly habit of - # modifying files in-tree. Lets undo that. - git checkout -- po/ git status git diff --exit-code diff --git a/Makefile.am b/Makefile.am index 58c99be08..6b9b82876 100644 --- a/Makefile.am +++ b/Makefile.am @@ -168,6 +168,22 @@ if !BUILD_DOCS dist_configure_check += dist-configure-check endif +# Gettext's Makefile has a race with parallel builds during dist. +# Hack around that. +# See also: +# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1094#note_1435313 +# https://lists.gnu.org/archive/html/bug-gettext/2022-06/msg00022.html +# https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1405 +po/.Makefile.patched: + sed -i \ + 's#^dist2: \$$(srcdir)/stamp-po \$$(DISTFILES)#dist2: \$$(srcdir)/stamp-po\n\t\$$(MAKE) \$$(DISTFILES)#' \ + "$(builddir)/po/Makefile" && \ + touch "$(builddir)/po/.Makefile.patched" + +DISTCLEANFILES += po/.Makefile.patched + +dist: po/.Makefile.patched + dist: $(dist_configure_check) $(dist_dependencies) ############################################################################### diff --git a/po/Makevars b/po/Makevars index ebd690f6b..b858b6db7 100644 --- a/po/Makevars +++ b/po/Makevars @@ -75,4 +75,4 @@ PO_DEPENDS_ON_POT = no # regenerate PO files on "make dist". Possible values are "yes" and # "no". Set this to no if the POT file and PO files are maintained # externally. -DIST_DEPENDS_ON_UPDATE_PO = yes +DIST_DEPENDS_ON_UPDATE_PO = no