aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2012-12-01 17:23:49 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2012-12-01 17:23:49 -0500
commitc35fea102628fedf9e62c6a440073257676a873b (patch)
treed8aa0a32cb7710bfe96151f8371d56497409f83b
parentb1346822f3048ede254647f3a46186e4c0ec68d6 (diff)
downloadpostgresql-c35fea102628fedf9e62c6a440073257676a873b.tar.gz
postgresql-c35fea102628fedf9e62c6a440073257676a873b.zip
Prevent passing gmake's environment variables down through pg_regress.
When we do "make install" to create a temp installation, we don't want that instance of make to try to communicate with any instance of make that might be calling us. This is known to cause problems if the upper make has a -jN flag, and in principle could cause problems even without that. Unset the relevant environment variables to prevent such issues. Andres Freund
-rw-r--r--src/test/regress/pg_regress.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c
index 5a656f2e52d..166811914f2 100644
--- a/src/test/regress/pg_regress.c
+++ b/src/test/regress/pg_regress.c
@@ -783,6 +783,19 @@ initialize_environment(void)
}
/*
+ * GNU make stores some flags in the MAKEFLAGS environment variable to
+ * pass arguments to its own children. If we are invoked by make,
+ * that causes the make invoked by us to think its part of the make
+ * task invoking us, and so it tries to communicate with the toplevel
+ * make. Which fails.
+ *
+ * Unset the variable to protect against such problems. We also reset
+ * MAKELEVEL to be certain the child doesn't notice the make above us.
+ */
+ unsetenv("MAKEFLAGS");
+ unsetenv("MAKELEVEL");
+
+ /*
* Adjust path variables to point into the temp-install tree
*/
tmp = malloc(strlen(temp_install) + 32 + strlen(bindir));