[PATCH] timezone: fix parallel check failures

Mike Frysinger vapier@gentoo.org
Fri Sep 18 18:01:00 GMT 2015


The XT testdata install rules expect the testdata dir to already exist in
the build tree, but it doesn't actually create it.  Instead, it relies on
the build-testdata define happening to be executed before it (which runs
zic which creates the dir).  When we run in parallel though, it's easy to
hit a failure:
$ cd timezone
$ rm -rf $objdir/timezone/testdata
$ make check -j
...
cp testdata/XT1 .../timezone/testdata/XT1
cp: cannot create regular file '.../timezone/testdata/XT1': No such file or directory
Makefile:116: recipe for target '.../timezone/testdata/XT1' failed
make: *** [.../timezone/testdata/XT1] Error 1
make: *** Waiting for unfinished jobs....

Add an explicit rule to create the dir to avoid all that.  Use an
order-only rule to avoid needlessly checking timestamps here.

2015-09-18  Mike Frysinger  <vapier@gentoo.org>

	* timezone/Makefile ($(testdata)): New rule.
	($(testdata)/XT%): Depend on $(testdata) (order only).
---
 timezone/Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/timezone/Makefile b/timezone/Makefile
index 81d4a3e..d1d9d4b 100644
--- a/timezone/Makefile
+++ b/timezone/Makefile
@@ -112,7 +112,9 @@ $(testdata)/America/Sao_Paulo: southamerica $(zic-deps)
 $(testdata)/Asia/Tokyo: asia $(zic-deps)
 	$(build-testdata)
 
-$(testdata)/XT%: testdata/XT%
+$(testdata):
+	mkdir -p $@
+$(testdata)/XT%: testdata/XT% | $(testdata)
 	cp $< $@
 
 $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
-- 
2.5.1



More information about the Libc-alpha mailing list