[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Sep 7 13:23:02 UTC 2020


The branch, master has been updated
       via  0b742ec6a05 s4:smb_server: Use cli_credentials_init_server() for negprot
       via  6c94ebf77fd s4:rpc_server: Use cli_credentials_init_server()
       via  2c00bea2aef auth:creds: Add cli_credentials_init_server()
       via  515cffb1f20 auth:gensec: If Kerberos is required, keep schannel for machine account auth
       via  a33a40bbc84 auth:gensec: Pass use_kerberos and keep_schannel to gensec_use_kerberos_mechs()
       via  2186d4131ad auth:gensec: Make gensec_use_kerberos_mechs() a static function
       via  5e3363e0b82 s4:ldap_server: Use samba_server_gensec_start() in ldapsrv_backend_Init()
       via  b34e8dc8982 auth:gensec: Add gensec_security_sasl_names()
       via  5fc3a71d0f5 waf: upgrade to 2.0.20
       via  896b7bbcf25 bootstrap: install perl-JSON on on rpm distributions
       via  e0e51632cf7 bootstrap: document git push -o ci.variable='SAMBA_CI_REBUILD_IMAGES=yes'
       via  b716dbc9768 python/tests/gpo: this should fix a Popen deadlock
      from  6444a743525 s3:libads: Also add a realm entry for the domain name

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0b742ec6a0558397d5cf01b99a401f8e2bc0e2e0
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Sep 7 09:19:43 2020 +0200

    s4:smb_server: Use cli_credentials_init_server() for negprot
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Mon Sep  7 13:22:26 UTC 2020 on sn-devel-184

commit 6c94ebf77fdb7383be2042f5e20ba2ef598cd4a4
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Sep 4 12:21:36 2020 +0200

    s4:rpc_server: Use cli_credentials_init_server()
    
    Signed-off-by: Andreas Schneider <asn at samba.org>

commit 2c00bea2aefdcc69608dffdafa7ce581d31f9354
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Sep 4 12:21:21 2020 +0200

    auth:creds: Add cli_credentials_init_server()
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 515cffb1f20eacb041ff7b3d43f8a122a82ddfbd
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Sep 4 17:00:45 2020 +0200

    auth:gensec: If Kerberos is required, keep schannel for machine account auth
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Signed-off-by: Andreas Schneider <asn at samba.org>

commit a33a40bbc848e5691869cf264009d23a03128f31
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Sep 4 14:41:43 2020 +0200

    auth:gensec: Pass use_kerberos and keep_schannel to gensec_use_kerberos_mechs()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 2186d4131ad4c7961d0c830bf9d48f3d06d27924
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Sep 4 14:39:15 2020 +0200

    auth:gensec: Make gensec_use_kerberos_mechs() a static function
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 5e3363e0b82193700f91a9bae5080aae0b744e5c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Sep 4 10:48:27 2020 +0200

    s4:ldap_server: Use samba_server_gensec_start() in ldapsrv_backend_Init()
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit b34e8dc8982b625d946e2ac8794ee41311bc41c2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Sep 4 10:47:54 2020 +0200

    auth:gensec: Add gensec_security_sasl_names()
    
    Pair-Programmed-With: Andreas Schneider <asn at samba.org>
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 5fc3a71d0f54b176d3cb2e399718d0468507e797
Author: David Mulder <dmulder at suse.com>
Date:   Mon Aug 24 13:12:46 2020 -0600

    waf: upgrade to 2.0.20
    
    This contain an important change:
    "Fix gccdeps.scan() returning nodes that no longer exist on disk."
    https://gitlab.com/ita1024/waf/-/merge_requests/2293
    
    Signed-off-by: David Mulder <dmulder at suse.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 896b7bbcf25b336a970441396d8e60c3d115a1b9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Apr 3 12:16:08 2020 +0200

    bootstrap: install perl-JSON on on rpm distributions
    
    This will be needed for the next heimdal import.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit e0e51632cf77be439ebcbcba025a42e8558fa824
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Aug 6 15:27:24 2020 +0200

    bootstrap: document git push -o ci.variable='SAMBA_CI_REBUILD_IMAGES=yes'
    
    This is much easier than going through the web interface.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit b716dbc9768bd6a0ef7d016a9c79e8759e383732
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Sep 7 10:31:36 2020 +0200

    python/tests/gpo: this should fix a Popen deadlock
    
    It is inspired by commit 5dc773a5b00834c7a53130a73a48f49048bd55e8
       Author: Joe Guo <joeg at catalyst.net.nz>
       Date:   Fri Sep 15 16:13:26 2017 +1200
    
          python: use communicate to fix Popen deadlock
    
          `Popen.wait()` will deadlock when using stdout=PIPE and/or stderr=PIPE and the
          child process generates large output to a pipe such that it blocks waiting for
          the OS pipe buffer to accept more data. Use communicate() to avoid that.
    
          Signed-off-by: Joe Guo <joeg at catalyst.net.nz>
          Reviewed-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
          Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
          Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
          Autobuild-Date(master): Thu Oct 19 09:27:16 CEST 2017 on sn-devel-144
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Noel Power <noel.power at suse.com>

-----------------------------------------------------------------------

Summary of changes:
 .gitlab-ci.yml                                     |   2 +-
 auth/credentials/credentials.c                     |  25 +
 auth/credentials/credentials.h                     |   2 +
 auth/gensec/gensec.h                               |   5 +-
 auth/gensec/gensec_start.c                         | 127 ++++-
 bootstrap/README.md                                |  17 +-
 bootstrap/config.py                                |   3 +-
 bootstrap/generated-dists/centos7/bootstrap.sh     |   1 +
 bootstrap/generated-dists/centos7/packages.yml     |   1 +
 bootstrap/generated-dists/centos8/bootstrap.sh     |   1 +
 bootstrap/generated-dists/centos8/packages.yml     |   1 +
 bootstrap/generated-dists/fedora31/bootstrap.sh    |   1 +
 bootstrap/generated-dists/fedora31/packages.yml    |   1 +
 bootstrap/generated-dists/fedora32/bootstrap.sh    |   1 +
 bootstrap/generated-dists/fedora32/packages.yml    |   1 +
 bootstrap/generated-dists/opensuse150/bootstrap.sh |   1 +
 bootstrap/generated-dists/opensuse150/packages.yml |   1 +
 bootstrap/generated-dists/opensuse151/bootstrap.sh |   1 +
 bootstrap/generated-dists/opensuse151/packages.yml |   1 +
 bootstrap/sha1sum.txt                              |   2 +-
 buildtools/bin/waf                                 |   2 +-
 buildtools/wafsamba/samba_utils.py                 |   2 +-
 buildtools/wafsamba/samba_waf18.py                 |   3 +-
 buildtools/wafsamba/wafsamba.py                    |   2 +-
 python/samba/tests/gpo.py                          |  21 +-
 source4/dsdb/samdb/ldb_modules/rootdse.c           |   4 +-
 source4/ldap_server/ldap_backend.c                 |  49 +-
 source4/rpc_server/dcerpc_server.c                 |  17 +-
 source4/smb_server/smb/negprot.c                   |  28 +-
 source4/smb_server/smb2/negprot.c                  |  25 +-
 third_party/waf/waflib/Configure.py                |  25 +-
 third_party/waf/waflib/Context.py                  |  18 +-
 third_party/waf/waflib/Options.py                  |  31 +-
 third_party/waf/waflib/Scripting.py                |   6 +-
 third_party/waf/waflib/Tools/c_aliases.py          |   4 +-
 third_party/waf/waflib/Tools/c_config.py           |  22 +-
 third_party/waf/waflib/Tools/c_tests.py            |  15 +-
 third_party/waf/waflib/Tools/compiler_c.py         |   2 +-
 third_party/waf/waflib/Tools/compiler_cxx.py       |   2 +-
 third_party/waf/waflib/Tools/fc.py                 |   4 +-
 third_party/waf/waflib/Tools/irixcc.py             |  14 +-
 third_party/waf/waflib/Tools/javaw.py              |   2 +-
 third_party/waf/waflib/Tools/python.py             |   2 +-
 third_party/waf/waflib/Tools/qt5.py                |   6 +-
 third_party/waf/waflib/Utils.py                    |   2 +-
 .../waflib/extras/clang_compilation_database.py    | 172 ++++---
 third_party/waf/waflib/extras/doxygen.py           |   1 +
 third_party/waf/waflib/extras/gccdeps.py           |  15 +-
 third_party/waf/waflib/extras/javatest.py          | 135 +++++-
 third_party/waf/waflib/extras/msvc_pdb.py          |  46 ++
 third_party/waf/waflib/extras/pytest.py            |  17 +-
 third_party/waf/waflib/extras/wafcache.py          | 524 +++++++++++++++++++++
 52 files changed, 1171 insertions(+), 242 deletions(-)
 create mode 100644 third_party/waf/waflib/extras/msvc_pdb.py
 create mode 100644 third_party/waf/waflib/extras/wafcache.py


Changeset truncated at 500 lines:

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 39c5d2765c3..eac719e5ee5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -23,7 +23,7 @@ variables:
   # Set this to the contents of bootstrap/sha1sum.txt
   # which is generated by bootstrap/template.py --render
   #
-  SAMBA_CI_CONTAINER_TAG: abd0e3b4cadc9691200c43769e69a3a7b50d9fde
+  SAMBA_CI_CONTAINER_TAG: 2b36c89aa12c35958fd95380615dde0ef5a97b9d
   #
   # We use the ubuntu1804 image as default as
   # it matches what we have on sn-devel-184.
diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c
index 9168b92d3ec..77c35dd104b 100644
--- a/auth/credentials/credentials.c
+++ b/auth/credentials/credentials.c
@@ -56,6 +56,31 @@ _PUBLIC_ struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx)
 	return cred;
 }
 
+_PUBLIC_
+struct cli_credentials *cli_credentials_init_server(TALLOC_CTX *mem_ctx,
+						    struct loadparm_context *lp_ctx)
+{
+	struct cli_credentials *server_creds = NULL;
+	NTSTATUS status;
+
+	server_creds = cli_credentials_init(mem_ctx);
+	if (server_creds == NULL) {
+		return NULL;
+	}
+
+	cli_credentials_set_conf(server_creds, lp_ctx);
+
+	status = cli_credentials_set_machine_account(server_creds, lp_ctx);
+	if (!NT_STATUS_IS_OK(status)) {
+		DEBUG(1, ("Failed to obtain server credentials: %s\n",
+			  nt_errstr(status)));
+		TALLOC_FREE(server_creds);
+		return NULL;
+	}
+
+	return server_creds;
+}
+
 _PUBLIC_ void cli_credentials_set_callback_data(struct cli_credentials *cred,
 						void *callback_data)
 {
diff --git a/auth/credentials/credentials.h b/auth/credentials/credentials.h
index 1a3e611fee8..4c140615751 100644
--- a/auth/credentials/credentials.h
+++ b/auth/credentials/credentials.h
@@ -76,6 +76,8 @@ bool cli_credentials_set_workstation(struct cli_credentials *cred,
 				     enum credentials_obtained obtained);
 bool cli_credentials_is_anonymous(struct cli_credentials *cred);
 struct cli_credentials *cli_credentials_init(TALLOC_CTX *mem_ctx);
+struct cli_credentials *cli_credentials_init_server(TALLOC_CTX *mem_ctx,
+						    struct loadparm_context *lp_ctx);
 void cli_credentials_set_anonymous(struct cli_credentials *cred);
 bool cli_credentials_wrong_password(struct cli_credentials *cred);
 const char *cli_credentials_get_password(struct cli_credentials *cred);
diff --git a/auth/gensec/gensec.h b/auth/gensec/gensec.h
index d424067d02c..8bece3c3458 100644
--- a/auth/gensec/gensec.h
+++ b/auth/gensec/gensec.h
@@ -302,12 +302,11 @@ NTSTATUS gensec_wrap(struct gensec_security *gensec_security,
 
 const struct gensec_security_ops * const *gensec_security_all(void);
 bool gensec_security_ops_enabled(const struct gensec_security_ops *ops, struct gensec_security *security);
-const struct gensec_security_ops **gensec_use_kerberos_mechs(TALLOC_CTX *mem_ctx,
-			const struct gensec_security_ops * const *old_gensec_list,
-			struct cli_credentials *creds);
 
 NTSTATUS gensec_start_mech_by_sasl_name(struct gensec_security *gensec_security,
 					const char *sasl_name);
+const char **gensec_security_sasl_names(struct gensec_security *gensec_security,
+					TALLOC_CTX *mem_ctx);
 
 int gensec_setting_int(struct gensec_settings *settings, const char *mechanism, const char *name, int default_value);
 bool gensec_setting_bool(struct gensec_settings *settings, const char *mechanism, const char *name, bool default_value);
diff --git a/auth/gensec/gensec_start.c b/auth/gensec/gensec_start.c
index d34ef2d5e39..4996e13e027 100644
--- a/auth/gensec/gensec_start.c
+++ b/auth/gensec/gensec_start.c
@@ -85,21 +85,14 @@ bool gensec_security_ops_enabled(const struct gensec_security_ops *ops, struct g
  * more compplex.
  */
 
-_PUBLIC_ const struct gensec_security_ops **gensec_use_kerberos_mechs(TALLOC_CTX *mem_ctx,
-			const struct gensec_security_ops * const *old_gensec_list,
-			struct cli_credentials *creds)
+static const struct gensec_security_ops **gensec_use_kerberos_mechs(
+		TALLOC_CTX *mem_ctx,
+		const struct gensec_security_ops * const *old_gensec_list,
+		enum credentials_use_kerberos use_kerberos,
+		bool keep_schannel)
 {
 	const struct gensec_security_ops **new_gensec_list;
 	int i, j, num_mechs_in;
-	enum credentials_use_kerberos use_kerberos = CRED_AUTO_USE_KERBEROS;
-	bool keep_schannel = false;
-
-	if (creds) {
-		use_kerberos = cli_credentials_get_kerberos_state(creds);
-		if (cli_credentials_get_netlogon_creds(creds) != NULL) {
-			keep_schannel = true;
-		}
-	}
 
 	for (num_mechs_in=0; old_gensec_list && old_gensec_list[num_mechs_in]; num_mechs_in++) {
 		/* noop */
@@ -164,18 +157,37 @@ _PUBLIC_ const struct gensec_security_ops **gensec_security_mechs(
 				struct gensec_security *gensec_security,
 				TALLOC_CTX *mem_ctx)
 {
-	struct cli_credentials *creds = NULL;
 	const struct gensec_security_ops * const *backends = gensec_security_all();
+	enum credentials_use_kerberos use_kerberos = CRED_AUTO_USE_KERBEROS;
+	bool keep_schannel = false;
 
 	if (gensec_security != NULL) {
+		struct cli_credentials *creds = NULL;
+
 		creds = gensec_get_credentials(gensec_security);
+		if (creds != NULL) {
+			use_kerberos = cli_credentials_get_kerberos_state(creds);
+			if (cli_credentials_get_netlogon_creds(creds) != NULL) {
+				keep_schannel = true;
+			}
+
+			/*
+			 * Even if Kerberos is set to REQUIRED, keep the
+			 * schannel auth mechanism that machine accounts are
+			 * able to authenticate via netlogon.
+			 */
+			if (gensec_security->gensec_role == GENSEC_SERVER) {
+				keep_schannel = true;
+			}
+		}
 
 		if (gensec_security->settings->backends) {
 			backends = gensec_security->settings->backends;
 		}
 	}
 
-	return gensec_use_kerberos_mechs(mem_ctx, backends, creds);
+	return gensec_use_kerberos_mechs(mem_ctx, backends,
+					 use_kerberos, keep_schannel);
 
 }
 
@@ -301,6 +313,93 @@ const struct gensec_security_ops *gensec_security_by_name(struct gensec_security
 	return NULL;
 }
 
+static const char **gensec_security_sasl_names_from_ops(
+	struct gensec_security *gensec_security,
+	TALLOC_CTX *mem_ctx,
+	const struct gensec_security_ops * const *ops)
+{
+	const char **sasl_names = NULL;
+	size_t i, sasl_names_count = 0;
+
+	if (ops == NULL) {
+		return NULL;
+	}
+
+	sasl_names = talloc_array(mem_ctx, const char *, 1);
+	if (sasl_names == NULL) {
+		return NULL;
+	}
+
+	for (i = 0; ops[i] != NULL; i++) {
+		enum gensec_role role = GENSEC_SERVER;
+		const char **tmp = NULL;
+
+		if (ops[i]->sasl_name == NULL) {
+			continue;
+		}
+
+		if (gensec_security != NULL) {
+			if (!gensec_security_ops_enabled(ops[i],
+							 gensec_security)) {
+				continue;
+			}
+
+			role = gensec_security->gensec_role;
+		}
+
+		switch (role) {
+		case GENSEC_CLIENT:
+			if (ops[i]->client_start == NULL) {
+				continue;
+			}
+			break;
+		case GENSEC_SERVER:
+			if (ops[i]->server_start == NULL) {
+				continue;
+			}
+			break;
+		}
+
+		tmp = talloc_realloc(mem_ctx,
+				     sasl_names,
+				     const char *,
+				     sasl_names_count + 2);
+		if (tmp == NULL) {
+			TALLOC_FREE(sasl_names);
+			return NULL;
+		}
+		sasl_names = tmp;
+
+		sasl_names[sasl_names_count] = ops[i]->sasl_name;
+		sasl_names_count++;
+	}
+	sasl_names[sasl_names_count] = NULL;
+
+	return sasl_names;
+}
+
+/**
+ * @brief Get the sasl names from the gensec security context.
+ *
+ * @param[in]  gensec_security The gensec security context.
+ *
+ * @param[in]  mem_ctx The memory context to allocate memory on.
+ *
+ * @return An allocated array with sasl names, NULL on error.
+ */
+_PUBLIC_
+const char **gensec_security_sasl_names(struct gensec_security *gensec_security,
+					TALLOC_CTX *mem_ctx)
+{
+	const struct gensec_security_ops **ops = NULL;
+
+	ops = gensec_security_mechs(gensec_security, mem_ctx);
+
+	return gensec_security_sasl_names_from_ops(gensec_security,
+						   mem_ctx,
+						   ops);
+}
+
 /**
  * Return a unique list of security subsystems from those specified in
  * the list of SASL names.
diff --git a/bootstrap/README.md b/bootstrap/README.md
index 023686e20c4..d4f30955197 100644
--- a/bootstrap/README.md
+++ b/bootstrap/README.md
@@ -39,17 +39,7 @@ the toplevel .gitlab-ci.yml file.
 As a gitlab-ci user, I can use this tool to build new CI docker images:
 
  After committing the result of calling `bootstrap/template.py --render`
- and updating `SAMBA_CI_CONTAINER_TAG` in .gitlab-ci.yml, you can push
- The branch to git at gitlab.com:samba-team/devel/samba.git using:
-
-  git push -o ci.skip git at gitlab.com:samba-team/devel/samba.git ...
-
- The `-o ci.skip` option means gitlab won't start a pipeline
- for the just pushed branch.
-
- Instead you would start a custom pipeline at:
-
-  https://gitlab.com/samba-team/devel/samba/pipelines/new
+ and updating `SAMBA_CI_CONTAINER_TAG` in .gitlab-ci.yml, you can push.
 
  But you need to pass `SAMBA_CI_REBUILD_IMAGES=yes` as environment
  variable. It means the pipeline runs the 'images' stage and builds
@@ -57,6 +47,11 @@ As a gitlab-ci user, I can use this tool to build new CI docker images:
  uploads the images into the registry.gitlab.com/samba-team/devel/samba
  container registry.
 
+ You can push by specifying the variable (note multiple -o options are allowed,
+ see https://docs.gitlab.com/ee/user/project/push_options.html):
+
+  `git push -o ci.variable='SAMBA_CI_REBUILD_IMAGES=yes' git at gitlab.com:samba-team/devel/samba.git ...`
+
  If you want to try to build images for the (currently) broken
  distributions, you would pass `SAMBA_CI_REBUILD_BROKEN_IMAGES=yes`
  in addition to the custom pipeline. Note the images for
diff --git a/bootstrap/config.py b/bootstrap/config.py
index 2c83876459d..43f89cf9efc 100644
--- a/bootstrap/config.py
+++ b/bootstrap/config.py
@@ -147,7 +147,8 @@ PKGS = [
 
     # perl
     ('libparse-yapp-perl', 'perl-Parse-Yapp'),
-    ('libjson-perl', 'perl-JSON-Parse'),
+    ('libjson-perl', 'perl-JSON'),
+    ('', 'perl-JSON-Parse'),
     ('perl-modules', ''),
     ('', 'perl-Archive-Tar'),
     ('', 'perl-ExtUtils-MakeMaker'),
diff --git a/bootstrap/generated-dists/centos7/bootstrap.sh b/bootstrap/generated-dists/centos7/bootstrap.sh
index 8b50b8de125..63746e248bc 100755
--- a/bootstrap/generated-dists/centos7/bootstrap.sh
+++ b/bootstrap/generated-dists/centos7/bootstrap.sh
@@ -72,6 +72,7 @@ yum install -y \
     patch \
     perl-Archive-Tar \
     perl-ExtUtils-MakeMaker \
+    perl-JSON \
     perl-JSON-Parse \
     perl-Parse-Yapp \
     perl-Test-Base \
diff --git a/bootstrap/generated-dists/centos7/packages.yml b/bootstrap/generated-dists/centos7/packages.yml
index 9dd36ec0daa..7fb9b811397 100644
--- a/bootstrap/generated-dists/centos7/packages.yml
+++ b/bootstrap/generated-dists/centos7/packages.yml
@@ -58,6 +58,7 @@ packages:
   - patch
   - perl-Archive-Tar
   - perl-ExtUtils-MakeMaker
+  - perl-JSON
   - perl-JSON-Parse
   - perl-Parse-Yapp
   - perl-Test-Base
diff --git a/bootstrap/generated-dists/centos8/bootstrap.sh b/bootstrap/generated-dists/centos8/bootstrap.sh
index 08cb02105a4..342188e7fe5 100755
--- a/bootstrap/generated-dists/centos8/bootstrap.sh
+++ b/bootstrap/generated-dists/centos8/bootstrap.sh
@@ -79,6 +79,7 @@ yum install -y \
     perl \
     perl-Archive-Tar \
     perl-ExtUtils-MakeMaker \
+    perl-JSON \
     perl-Parse-Yapp \
     perl-Test-Simple \
     perl-generators \
diff --git a/bootstrap/generated-dists/centos8/packages.yml b/bootstrap/generated-dists/centos8/packages.yml
index dd487a2eced..d82a80e6957 100644
--- a/bootstrap/generated-dists/centos8/packages.yml
+++ b/bootstrap/generated-dists/centos8/packages.yml
@@ -61,6 +61,7 @@ packages:
   - perl
   - perl-Archive-Tar
   - perl-ExtUtils-MakeMaker
+  - perl-JSON
   - perl-Parse-Yapp
   - perl-Test-Simple
   - perl-generators
diff --git a/bootstrap/generated-dists/fedora31/bootstrap.sh b/bootstrap/generated-dists/fedora31/bootstrap.sh
index 3fb60bc00eb..18fbfefedbc 100755
--- a/bootstrap/generated-dists/fedora31/bootstrap.sh
+++ b/bootstrap/generated-dists/fedora31/bootstrap.sh
@@ -74,6 +74,7 @@ dnf install -y \
     perl \
     perl-Archive-Tar \
     perl-ExtUtils-MakeMaker \
+    perl-JSON \
     perl-JSON-Parse \
     perl-Parse-Yapp \
     perl-Test-Base \
diff --git a/bootstrap/generated-dists/fedora31/packages.yml b/bootstrap/generated-dists/fedora31/packages.yml
index 37422007549..6cb2ce3841f 100644
--- a/bootstrap/generated-dists/fedora31/packages.yml
+++ b/bootstrap/generated-dists/fedora31/packages.yml
@@ -63,6 +63,7 @@ packages:
   - perl
   - perl-Archive-Tar
   - perl-ExtUtils-MakeMaker
+  - perl-JSON
   - perl-JSON-Parse
   - perl-Parse-Yapp
   - perl-Test-Base
diff --git a/bootstrap/generated-dists/fedora32/bootstrap.sh b/bootstrap/generated-dists/fedora32/bootstrap.sh
index 3fb60bc00eb..18fbfefedbc 100755
--- a/bootstrap/generated-dists/fedora32/bootstrap.sh
+++ b/bootstrap/generated-dists/fedora32/bootstrap.sh
@@ -74,6 +74,7 @@ dnf install -y \
     perl \
     perl-Archive-Tar \
     perl-ExtUtils-MakeMaker \
+    perl-JSON \
     perl-JSON-Parse \
     perl-Parse-Yapp \
     perl-Test-Base \
diff --git a/bootstrap/generated-dists/fedora32/packages.yml b/bootstrap/generated-dists/fedora32/packages.yml
index 37422007549..6cb2ce3841f 100644
--- a/bootstrap/generated-dists/fedora32/packages.yml
+++ b/bootstrap/generated-dists/fedora32/packages.yml
@@ -63,6 +63,7 @@ packages:
   - perl
   - perl-Archive-Tar
   - perl-ExtUtils-MakeMaker
+  - perl-JSON
   - perl-JSON-Parse
   - perl-Parse-Yapp
   - perl-Test-Base
diff --git a/bootstrap/generated-dists/opensuse150/bootstrap.sh b/bootstrap/generated-dists/opensuse150/bootstrap.sh
index d99d835719f..33c8aeb4021 100755
--- a/bootstrap/generated-dists/opensuse150/bootstrap.sh
+++ b/bootstrap/generated-dists/opensuse150/bootstrap.sh
@@ -70,6 +70,7 @@ zypper --non-interactive install \
     perl \
     perl-Archive-Tar-Wrapper \
     perl-ExtUtils-MakeMaker \
+    perl-JSON \
     perl-JSON-XS \
     perl-Parse-Yapp \
     perl-Test-Base \
diff --git a/bootstrap/generated-dists/opensuse150/packages.yml b/bootstrap/generated-dists/opensuse150/packages.yml
index 30d102484be..5e7b1a11d7a 100644
--- a/bootstrap/generated-dists/opensuse150/packages.yml
+++ b/bootstrap/generated-dists/opensuse150/packages.yml
@@ -58,6 +58,7 @@ packages:
   - perl
   - perl-Archive-Tar-Wrapper
   - perl-ExtUtils-MakeMaker
+  - perl-JSON
   - perl-JSON-XS
   - perl-Parse-Yapp
   - perl-Test-Base
diff --git a/bootstrap/generated-dists/opensuse151/bootstrap.sh b/bootstrap/generated-dists/opensuse151/bootstrap.sh
index d99d835719f..33c8aeb4021 100755
--- a/bootstrap/generated-dists/opensuse151/bootstrap.sh
+++ b/bootstrap/generated-dists/opensuse151/bootstrap.sh
@@ -70,6 +70,7 @@ zypper --non-interactive install \
     perl \
     perl-Archive-Tar-Wrapper \
     perl-ExtUtils-MakeMaker \
+    perl-JSON \
     perl-JSON-XS \
     perl-Parse-Yapp \
     perl-Test-Base \
diff --git a/bootstrap/generated-dists/opensuse151/packages.yml b/bootstrap/generated-dists/opensuse151/packages.yml
index 30d102484be..5e7b1a11d7a 100644
--- a/bootstrap/generated-dists/opensuse151/packages.yml
+++ b/bootstrap/generated-dists/opensuse151/packages.yml
@@ -58,6 +58,7 @@ packages:
   - perl
   - perl-Archive-Tar-Wrapper
   - perl-ExtUtils-MakeMaker
+  - perl-JSON
   - perl-JSON-XS
   - perl-Parse-Yapp
   - perl-Test-Base
diff --git a/bootstrap/sha1sum.txt b/bootstrap/sha1sum.txt
index c9834e2a19d..28d7e55a73a 100644
--- a/bootstrap/sha1sum.txt
+++ b/bootstrap/sha1sum.txt
@@ -1 +1 @@
-abd0e3b4cadc9691200c43769e69a3a7b50d9fde
+2b36c89aa12c35958fd95380615dde0ef5a97b9d
diff --git a/buildtools/bin/waf b/buildtools/bin/waf
index 11ce8e7480a..feabe25d131 100755
--- a/buildtools/bin/waf
+++ b/buildtools/bin/waf
@@ -32,7 +32,7 @@ POSSIBILITY OF SUCH DAMAGE.
 
 import os, sys, inspect
 
-VERSION="2.0.18"
+VERSION="2.0.20"
 REVISION="x"
 GIT="x"
 INSTALL="x"
diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py
index 4afee249d33..0587f525aff 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -459,7 +459,7 @@ def RECURSE(ctx, directory):
         return
     visited_dirs.add(key)
     relpath = os.path.relpath(abspath, ctx.path.abspath())
-    if ctxclass in ['tmp', 'OptionsContext', 'ConfigurationContext', 'BuildContext']:
+    if ctxclass in ['tmp', 'OptionsContext', 'ConfigurationContext', 'BuildContext', 'ClangDbContext']:
         return ctx.recurse(relpath)
     if 'waflib.extras.compat15' in sys.modules:
         return ctx.recurse(relpath)
diff --git a/buildtools/wafsamba/samba_waf18.py b/buildtools/wafsamba/samba_waf18.py
index c0bb6bfcf55..ecf3891f175 100644
--- a/buildtools/wafsamba/samba_waf18.py
+++ b/buildtools/wafsamba/samba_waf18.py
@@ -5,6 +5,7 @@ from waflib import Build, Configure, Node, Utils, Options, Logs, TaskGen
 from waflib import ConfigSet
 from waflib.TaskGen import feature, after
 from waflib.Configure import conf, ConfigurationContext
+from waflib.extras import clang_compilation_database
 
 from waflib.Tools.flex import decide_ext
 
@@ -37,7 +38,7 @@ TaskGen.declare_chain(
 )
 
 
-for y in (Build.BuildContext, Build.CleanContext, Build.InstallContext, Build.UninstallContext, Build.ListContext):
+for y in (Build.BuildContext, Build.CleanContext, Build.InstallContext, Build.UninstallContext, Build.ListContext, clang_compilation_database.ClangDbContext):
     class tmp(y):
         variant = 'default'
 
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 7827d374654..9f6ee4f5c7f 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -38,7 +38,7 @@ LIB_PATH="shared"
 
 os.environ['PYTHONUNBUFFERED'] = '1'


-- 
Samba Shared Repository



More information about the samba-cvs mailing list