Adam James Stewart wrote in <https://lists.gnu.org/archive/html/bug-gettext/2017-04/msg00008.html>:
> I'm trying to install gettext 0.19.8.1 with Intel 17.0.2 on CentOS 6.8 but > `make -j16 check` fails on the `test-verify` test: > > FAIL: test-verify > ================= > > icc: error #10236: File not found: 'test-verify.o' > FAIL test-verify (exit status: 1) > > It looks like the test suite successfully passes when run in serial though. Thanks for the report. This patch should fix it. 2017-04-20 Bruno Haible <br...@clisp.org> verify tests: Fix spurious failure with parallel make. * gnulib-tool (func_emit_tests_Makefile_am): Emit initialization of EXTRA_PROGRAMS. * tests/test-verify.sh: Build test-verify-try.o, not test-verify.o. * tests/test-verify-try.c: New file. * modules/verify-tests (Files): Add it. (EXTRA_PROGRAMS): Add test-verify-try. (MOSTLYCLEANFILES): Update accordingly. Reported by Adam James Stewart <ajstew...@anl.gov>. diff --git a/gnulib-tool b/gnulib-tool index b672645..d5c2902 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -3883,6 +3883,7 @@ func_emit_tests_Makefile_am () if ! $for_test; then echo "check_PROGRAMS =" fi + echo "EXTRA_PROGRAMS =" echo "noinst_HEADERS =" echo "noinst_LIBRARIES =" if $use_libtests; then diff --git a/tests/test-verify.sh b/tests/test-verify.sh index 3e76761..1e75d55 100755 --- a/tests/test-verify.sh +++ b/tests/test-verify.sh @@ -7,8 +7,9 @@ unset MALLOC_PERTURB_ # Rather than figure out how to invoke the compiler with the right # include path ourselves, we let make do it: -(cd "$initial_cwd_" && rm -f test-verify.o \ - && $MAKE test-verify.o >/dev/null 2>&1) \ +(cd "$initial_cwd_" \ + && rm -f test-verify-try.o \ + && $MAKE test-verify-try.o >/dev/null 2>&1) \ || skip_ "cannot compile error-free" # Now, prove that we encounter all expected compilation failures: @@ -16,8 +17,8 @@ unset MALLOC_PERTURB_ : >err for i in 1 2 3 4 5; do (cd "$initial_cwd_" - rm -f test-verify.o - $MAKE CFLAGS=-DEXP_FAIL=$i test-verify.o) >>out 2>>err \ + rm -f test-verify-try.o + $MAKE CFLAGS=-DEXP_FAIL=$i test-verify-try.o) >>out 2>>err \ && { warn_ "compiler didn't detect verification failure $i"; fail=1; } done diff --git a/tests/test-verify-try.c b/tests/test-verify-try.c new file mode 100644 index 0000000..362fb01 --- /dev/null +++ b/tests/test-verify-try.c @@ -0,0 +1,21 @@ +/* Test the "verify" module. + + Copyright (C) 2017 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +/* This is a separate source file, so that the execution of test-verify.sh + does not interfere with the building of the 'test-verify' program. */ + +#include "test-verify.c" diff --git a/modules/verify-tests b/modules/verify-tests index 8039030..67b0f4c 100644 --- a/modules/verify-tests +++ b/modules/verify-tests @@ -1,5 +1,6 @@ Files: tests/test-verify.c +tests/test-verify-try.c tests/test-verify.sh Depends-on: @@ -11,8 +12,11 @@ Makefile.am: TESTS_ENVIRONMENT += MAKE='$(MAKE)' TESTS += test-verify test-verify.sh check_PROGRAMS += test-verify +# test-verify-try is never built, but test-verify.sh needs a rule to +# build test-verify-try.o. +EXTRA_PROGRAMS += test-verify-try -# This test expects compilation of test-verify.c to fail, and +# This test expects compilation of test-verify-try.c to fail, and # each time it fails, the makefile rule does not perform the usual # "mv -f $name.Tpo $name.po, so tell make clean to remove that file. -MOSTLYCLEANFILES += .deps/test-verify.Tpo +MOSTLYCLEANFILES += .deps/test-verify-try.Tpo