Waf rebuilding issue with python3

Andrew Bartlett abartlet at samba.org
Thu Dec 13 00:48:16 UTC 2018


On Wed, 2018-12-12 at 18:58 +0100, Stefan Metzmacher wrote:
> 
> Maybe there're some ordering/sorting differences between
> python2 and python3. Or is somehow uses a different
> hashing algorithm.
> 
> metze

Yes, that is it, the per-exec seed for the hash function used to avoid
hash attacks on production servers.  Attached is a workaround I've
pushed to autobuild while someone finds the rouge hash.

Andrew Bartlett

-- 
Andrew Bartlett
https://samba.org/~abartlet/
Authentication Developer, Samba Team         https://samba.org
Samba Development and Support, Catalyst IT   
https://catalyst.net.nz/services/samba



-------------- next part --------------
From 3ceefd584d21260c0bd3d650ec2b97fcb1691fba Mon Sep 17 00:00:00 2001
From: Andrew Bartlett <abartlet at samba.org>
Date: Thu, 13 Dec 2018 13:06:48 +1300
Subject: [PATCH] build: Workaround python3 hash order issues (for now)

This works around python3 having a new hash seed each time it starts to allow
a second "make" not to rebuild the world.

This should probably be reverted once we find the hash that is causing
the issue, but should reduce frustration for now.

Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
---
 Makefile             | 2 +-
 lib/ldb/Makefile     | 2 +-
 lib/replace/Makefile | 2 +-
 lib/talloc/Makefile  | 2 +-
 lib/tdb/Makefile     | 2 +-
 lib/tevent/Makefile  | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 4290986a939..c13843d3a4b 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 
 PYTHON?=python3
 WAF_BINARY=$(PYTHON) ./buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
 	$(WAF) build
diff --git a/lib/ldb/Makefile b/lib/ldb/Makefile
index 75517a774d3..0ac14aae74e 100644
--- a/lib/ldb/Makefile
+++ b/lib/ldb/Makefile
@@ -2,7 +2,7 @@
 
 PYTHON?=python3
 WAF_BINARY=$(PYTHON) ../../buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
 	$(WAF) build
diff --git a/lib/replace/Makefile b/lib/replace/Makefile
index 923605f9a13..3e54a16927c 100644
--- a/lib/replace/Makefile
+++ b/lib/replace/Makefile
@@ -2,7 +2,7 @@
 
 PYTHON?=python3
 WAF_BINARY=$(PYTHON) ../../buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
 	$(WAF) build
diff --git a/lib/talloc/Makefile b/lib/talloc/Makefile
index b8e6d6ca288..7cfac0cafc9 100644
--- a/lib/talloc/Makefile
+++ b/lib/talloc/Makefile
@@ -2,7 +2,7 @@
 
 PYTHON?=python3
 WAF_BINARY=$(PYTHON) ../../buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
 	$(WAF) build
diff --git a/lib/tdb/Makefile b/lib/tdb/Makefile
index 9066e5ba03e..0f088ea2231 100644
--- a/lib/tdb/Makefile
+++ b/lib/tdb/Makefile
@@ -2,7 +2,7 @@
 
 PYTHON?=python3
 WAF_BINARY=$(PYTHON) ../../buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
 	$(WAF) build
diff --git a/lib/tevent/Makefile b/lib/tevent/Makefile
index 8bbf3cdbab7..989f4b9845c 100644
--- a/lib/tevent/Makefile
+++ b/lib/tevent/Makefile
@@ -1,7 +1,7 @@
 # simple makefile wrapper to run waf
 PYTHON?=python3
 WAF_BINARY=$(PYTHON) ../../buildtools/bin/waf
-WAF=WAF_MAKE=1 $(WAF_BINARY)
+WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
 
 all:
 	$(WAF) build
-- 
2.11.0



More information about the samba-technical mailing list