[+cc autoconf, as this seems to be relevant] Hi all, after several random [ltdl dryrun] failures, I used the 'make --debug' and some stat calls to debug. Logs are attached for ok & failed runs as tarball. Seems like after 'aclocal' run there should be an explicit 'sleep 1', similarly like in autoreconf [1]. Possible fix attached. The problem seems to be in autoheader and Perl's move function (underlying utime() handling?): $ touch /tmp/a $ stat /tmp/a File: ‘/tmp/a’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 23h/35d Inode: 1296845 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/praiskup) Gid: ( 1000/praiskup) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2014-12-15 14:03:35.744530946 +0100 Modify: 2014-12-15 14:03:35.744530946 +0100 Change: 2014-12-15 14:03:35.744530946 +0100 Birth: - $ perl -MFile::Copy -e 'move ("/tmp/a", "a");' $ stat a File: ‘a’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 11068678 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/praiskup) Gid: ( 1000/praiskup) Context: unconfined_u:object_r:user_home_t:s0 Access: 2014-12-15 14:03:42.000000000 +0100 Modify: 2014-12-15 14:03:35.000000000 +0100 ^^^ floor()-ed Change: 2014-12-15 14:03:42.678581581 +0100 Birth: - [1] http://git.savannah.gnu.org/cgit/autoconf.git/tree/bin/autoreconf.in#n356 Pavel
Attachment:
racy-tests.tar.gz
Description: application/compressed-tar
>From 2ad0598f0d8cd8c8532a2c34ea1b06c71901047d Mon Sep 17 00:00:00 2001 From: Pavel Raiskup <praiskup@xxxxxxxxxx> Date: Mon, 15 Dec 2014 13:42:25 +0100 Subject: [PATCH] tests: fix race in aclocal/autoheader calls Put the sleep 1 after aclocal run, same as autoreconf does. This guarantees that 'aclocal.m4' will have smaller timestamp than 'config.h.in' and avoids re-running autoheader later on. * tests/testsuite.at (LT_AT_ACLOCAL): Sleep sec after aclocal run. --- tests/testsuite.at | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/testsuite.at b/tests/testsuite.at index 76ed722..2a359a3 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -123,6 +123,11 @@ AT_DATA([acinclude.m4], [m4_define([AC_CONFIG_MACRO_DIRS], m4_defn([AC_CONFIG_MACRO_DIR]))]) ]]) LT_AT_CHECK([$ACLOCAL $1$macro_dir], [0], [ignore], [ignore]) +# After the 'aclocal' run sleep 1 second to guarantee that aclocal.m4 is going +# to have older timestamp than other autotools later-generated files (concretely +# for libtool case, we speak about config.h.in generated autoheader). +# Autoreconf does the same (after the first aclocal run). +sleep 1 AT_XFAIL_IF([test no = "$ACLOCAL"]) AT_KEYWORDS([automake]) ]) -- 1.9.3
_______________________________________________ Autoconf mailing list Autoconf@xxxxxxx https://lists.gnu.org/mailman/listinfo/autoconf