]> granicus.if.org Git - postgresql/commitdiff
Fix regression test parallel-make hazard.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 13 Aug 2016 00:51:59 +0000 (20:51 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 13 Aug 2016 00:51:59 +0000 (20:51 -0400)
Back-patch 9.4-era commit 384f933046dc9e9a2b416f5f7b3be30b93587c63 into
the previous branches.  Although that was only advertised as repairing a
problem with missed header-file dependencies, it turns out to also be
important for parallel make safety.  The previous coding allowed two
independent make jobs to get launched concurrently in contrib/spi.
Normally this would be OK, because they are building independent targets;
but if --enable-depend is in use, it's unsafe, because one make run might
try to read a .deps file that the other one is in process of rewriting.
This is evidently the cause of buildfarm member francolin's recent failure
in the 9.2 branch.  I believe this patch will result in only one subsidiary
make run, making it safe(r).

Report: http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=francolin&dt=2016-08-12%2017%3A12%3A52

src/test/regress/GNUmakefile

index a4e15d2a110fafa01280e9d4b00666d4c525bee5..33320ef1eabc13c2a15555831a6dca4f27f863e7 100644 (file)
@@ -116,14 +116,19 @@ autoinc$(DLSUFFIX): $(top_builddir)/contrib/spi/autoinc$(DLSUFFIX)
 dummy_seclabel$(DLSUFFIX): $(top_builddir)/contrib/dummy_seclabel/dummy_seclabel$(DLSUFFIX)
        cp $< $@
 
-$(top_builddir)/contrib/spi/refint$(DLSUFFIX): $(top_srcdir)/contrib/spi/refint.c
-       $(MAKE) -C $(top_builddir)/contrib/spi refint$(DLSUFFIX)
+$(top_builddir)/contrib/spi/refint$(DLSUFFIX): | submake-contrib-spi ;
 
-$(top_builddir)/contrib/spi/autoinc$(DLSUFFIX): $(top_srcdir)/contrib/spi/autoinc.c
-       $(MAKE) -C $(top_builddir)/contrib/spi autoinc$(DLSUFFIX)
+$(top_builddir)/contrib/spi/autoinc$(DLSUFFIX): | submake-contrib-spi ;
 
-$(top_builddir)/contrib/dummy_seclabel/dummy_seclabel$(DLSUFFIX): $(top_builddir)/contrib/dummy_seclabel/dummy_seclabel.c
-       $(MAKE) -C $(top_builddir)/contrib/dummy_seclabel dummy_seclabel$(DLSUFFIX)
+$(top_builddir)/contrib/dummy_seclabel/dummy_seclabel$(DLSUFFIX): | submake-contrib-dummy_seclabel ;
+
+submake-contrib-spi:
+       $(MAKE) -C $(top_builddir)/contrib/spi
+
+submake-contrib-dummy_seclabel:
+       $(MAKE) -C $(top_builddir)/contrib/dummy_seclabel
+
+.PHONY: submake-contrib-spi submake-contrib-dummy_seclabel
 
 # Tablespace setup