#8323 [Build failure] Race: make po fails on parallel build
Closed: fixed by cheimes. Opened by slev.

Build on systems having many (>2) CPU cores/threads randomly fails with:

...
Making all in po
test ! -f ./ipa.pot || \
  test -z "bn_IN.gmo ca.gmo cs.gmo de.gmo en_GB.gmo es.gmo eu.gmo fr.gmo hi.gmo hu.gmo id.gmo ja.gmo kn.gmo mr.gmo nl.gmo pa.gmo pl.gmo pt.gmo pt_BR.gmo ru.gmo sk.gmo tg.gmo uk.gmo zh_CN.gmo" || make bn_IN.gmo ca.gmo cs.gmo de.gmo en_GB.gmo es.gmo eu.gmo fr.gmo hi.gmo hu.gmo id.gmo ja.gmo kn.gmo mr.gmo nl.gmo pa.gmo pl.gmo pt.gmo pt_BR.gmo ru.gmo sk.gmo tg.gmo uk.gmo zh_CN.gmo
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=bn_IN bn_IN.po ipa.pot
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=ca ca.po ipa.pot
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=cs cs.po ipa.pot
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=en_GB en_GB.po ipa.pot
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=de de.po ipa.pot
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=es es.po ipa.pot
/usr/bin/msgmerge --update --no-fuzzy-matching --lang=eu eu.po ipa.pot
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
....................................................................................................................................................................................................................................................................................................................................................................................................../usr/bin/msgmerge --update --no-fuzzy-matching --lang=fr fr.po ipa.pot
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
............................................................................................................................................... done.
 done.
make[2]: Entering directory '/usr/src/RPM/BUILD/freeipa-4.8.6/po'
grep -v '#: ipaclient/remote_plugins/' ipa.pot > ipa.pot.tmp || exit 1; \
mv ipa.pot.tmp ipa.pot || exit 1; \
for po_file in bn_IN.po ca.po cs.po de.po en_GB.po es.po eu.po fr.po hi.po hu.po id.po ja.po kn.po mr.po nl.po pa.po pl.po pt.po pt_BR.po ru.po sk.po tg.po uk.po zh_CN.po; do \
    /usr/bin/msgattrib --translated --no-fuzzy --no-location -s $po_file > $po_file.tmp || exit 1; \
    mv $po_file.tmp $po_file || exit 1; \
    if [ "ipa-4-8" != "" ]; then \
        export GIT_DIFF_PO_FILE=`git diff --numstat $po_file | cut -f1,2 | tr '\t' ,` || :; \
        if [ "$GIT_DIFF_PO_FILE" = "2,2" -o "$GIT_DIFF_PO_FILE" = "1,1" ]; then \
            echo "No translation changes in $po_file, restore the original"; \
            git checkout -q -f $po_file; \
        fi; \
    fi; \
done
eu.po:2426: end-of-file within string
eu.po:2424: missing 'msgstr' section
/usr/bin/msgattrib: found 2 fatal errors
make[2]: *** [Makefile.hack:14: strip-po] Error 1
make[2]: Leaving directory '/usr/src/RPM/BUILD/freeipa-4.8.6/po'
make[2]: *** Waiting for unfinished jobs....
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................./usr/bin/msgmerge --update --no-fuzzy-matching --lang=hi hi.po ipa.pot
 done.
...

po files as well as ipa.pot are accessed by several make rules simultaneously.
The error comes with recent changes of Translation system.

I propose to disable Parallel build for the rules in po/Makefile.hack.in .


Thank you for finding the cause. A fix is welcome.

Metadata Update from @cheimes:
- Custom field on_review adjusted to https://github.com/freeipa/freeipa/pull/4688
- Issue assigned to cheimes
- Issue priority set to: low
- Issue set to the milestone: FreeIPA 4.8.7

master:

  • d20cda218960960fa4d1ab790f31edd4cac49ccc make: serialize strip-po / strip-pot

ipa-4-8:

  • 8d759d3836aa36799978cd0333e1836ea2480f4b make: serialize strip-po / strip-pot

Metadata Update from @cheimes:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

Metadata