Browse Source

[2962] Don't run b10-certgen in parallel (which results in corruption of PEM output files)

Mukund Sivaraman 11 years ago
parent
commit
35c53d9ab3
1 changed files with 10 additions and 3 deletions
  1. 10 3
      src/bin/cmdctl/Makefile.am

+ 10 - 3
src/bin/cmdctl/Makefile.am

@@ -57,12 +57,19 @@ b10_certgen_CXXFLAGS = $(BOTAN_INCLUDES)
 b10_certgen_LDFLAGS = $(BOTAN_LIBS)
 
 # Generate the initial certificates immediately
-cmdctl-certfile.pem: b10-certgen
-	./b10-certgen -q -w
-
 cmdctl-keyfile.pem: b10-certgen
 	./b10-certgen -q -w
 
+# Do nothing. This is a hack, as b10-certgen creates both
+# cmdctl-keyfile.pem and cmdctl-certfile.pem, and in a parallel make,
+# making these targets simultaneously may result in corrupted
+# files. With GNU make, there is a non-portable way of working around
+# this with pattern rules, but we adopt this hack instead. The downside
+# is that cmdctl-certfile.pem will not be generated if
+# cmdctl-keyfile.pem exists. See Trac ticket #2962.
+cmdctl-certfile.pem: cmdctl-keyfile.pem
+	noop
+
 if INSTALL_CONFIGURATIONS
 
 # Below we intentionally use ${INSTALL} -m 640 instead of $(INSTALL_DATA)