Configure builtin heimdal to use KEYRING ccache
authorŁukasz Stelmach <l.stelmach@samsung.com>
Fri, 31 Mar 2023 17:42:13 +0000 (19:42 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 6 Jun 2023 08:35:36 +0000 (08:35 +0000)
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
16 files changed:
.gitlab-ci-main.yml
bootstrap/config.py
bootstrap/generated-dists/debian11/bootstrap.sh
bootstrap/generated-dists/debian11/packages.yml
bootstrap/generated-dists/ubuntu1804-32bit/bootstrap.sh
bootstrap/generated-dists/ubuntu1804-32bit/packages.yml
bootstrap/generated-dists/ubuntu1804/bootstrap.sh
bootstrap/generated-dists/ubuntu1804/packages.yml
bootstrap/generated-dists/ubuntu2004/bootstrap.sh
bootstrap/generated-dists/ubuntu2004/packages.yml
bootstrap/generated-dists/ubuntu2204/bootstrap.sh
bootstrap/generated-dists/ubuntu2204/packages.yml
bootstrap/sha1sum.txt
third_party/heimdal_build/wscript_build
third_party/heimdal_build/wscript_configure
wscript

index 4208cbcc104564a63cdc291312b91082350c4978..279c10877895e2cba98f5c42ec1662f01052f42c 100644 (file)
@@ -47,7 +47,7 @@ variables:
   # Set this to the contents of bootstrap/sha1sum.txt
   # which is generated by bootstrap/template.py --render
   #
-  SAMBA_CI_CONTAINER_TAG: cfddaa8d36c3f512827bd96fe05c30f7f8337f4b
+  SAMBA_CI_CONTAINER_TAG: 6f4e1c3f1eb3b3236ae793c11def2135386a0ee9
   #
   # We use the ubuntu2204 image as default as
   # it matches what we have on atb-devel-224
index fd1753fb3e178460cb541d01601e3afb2c3376da..c67ab9184abae0cead6e41efb2697d4a8d1635f9 100644 (file)
@@ -181,7 +181,7 @@ PKGS = [
     # rpm has no pkg for docbook-xml
     ('docbook-xml', 'docbook-dtds'),
     ('docbook-xsl', 'docbook-style-xsl'),
-    ('', 'keyutils-libs-devel'),
+    ('libkeyutils-dev', 'keyutils-libs-devel'),
     ('', 'which'),
     ('xz-utils', 'xz')
 ]
index 1f9cddfe8eead38ac7f09747bb883518b9c841f7..1aac852e83ea10c49c447ce6f08a15660b639b00 100755 (executable)
@@ -57,6 +57,7 @@ apt-get -y install \
     libjansson-dev \
     libjs-jquery \
     libjson-perl \
+    libkeyutils-dev \
     libkrb5-dev \
     libldap2-dev \
     liblmdb-dev \
index e63364637218481c93c637c4c5def0dca1d45c03..1ff63e4b2722492f032909a25d144e83db6f4fc1 100644 (file)
@@ -46,6 +46,7 @@ packages:
   - libjansson-dev
   - libjs-jquery
   - libjson-perl
+  - libkeyutils-dev
   - libkrb5-dev
   - libldap2-dev
   - liblmdb-dev
index 56e7b805dfd4bde060098ab37d31e2f898d14189..702f51533822c859fb55058f949379ce49ac13ce 100755 (executable)
@@ -58,6 +58,7 @@ apt-get -y install \
     libjansson-dev \
     libjs-jquery \
     libjson-perl \
+    libkeyutils-dev \
     libkrb5-dev \
     libldap2-dev \
     liblmdb-dev \
index b42b4d059894a99263f64914fe781ea8020a69c9..78a73aec01f944bbcc19629e9107bf8892601eba 100644 (file)
@@ -47,6 +47,7 @@ packages:
   - libjansson-dev
   - libjs-jquery
   - libjson-perl
+  - libkeyutils-dev
   - libkrb5-dev
   - libldap2-dev
   - liblmdb-dev
index 56e7b805dfd4bde060098ab37d31e2f898d14189..702f51533822c859fb55058f949379ce49ac13ce 100755 (executable)
@@ -58,6 +58,7 @@ apt-get -y install \
     libjansson-dev \
     libjs-jquery \
     libjson-perl \
+    libkeyutils-dev \
     libkrb5-dev \
     libldap2-dev \
     liblmdb-dev \
index b42b4d059894a99263f64914fe781ea8020a69c9..78a73aec01f944bbcc19629e9107bf8892601eba 100644 (file)
@@ -47,6 +47,7 @@ packages:
   - libjansson-dev
   - libjs-jquery
   - libjson-perl
+  - libkeyutils-dev
   - libkrb5-dev
   - libldap2-dev
   - liblmdb-dev
index 56e7b805dfd4bde060098ab37d31e2f898d14189..702f51533822c859fb55058f949379ce49ac13ce 100755 (executable)
@@ -58,6 +58,7 @@ apt-get -y install \
     libjansson-dev \
     libjs-jquery \
     libjson-perl \
+    libkeyutils-dev \
     libkrb5-dev \
     libldap2-dev \
     liblmdb-dev \
index b42b4d059894a99263f64914fe781ea8020a69c9..78a73aec01f944bbcc19629e9107bf8892601eba 100644 (file)
@@ -47,6 +47,7 @@ packages:
   - libjansson-dev
   - libjs-jquery
   - libjson-perl
+  - libkeyutils-dev
   - libkrb5-dev
   - libldap2-dev
   - liblmdb-dev
index 481d46c186c8d309184b005c8632541e93f62c1f..83012cda98348ee09c01a0a36b43b71294f9d4c7 100755 (executable)
@@ -58,6 +58,7 @@ apt-get -y install \
     libjansson-dev \
     libjs-jquery \
     libjson-perl \
+    libkeyutils-dev \
     libkrb5-dev \
     libldap2-dev \
     liblmdb-dev \
index 91e48034a05f8d09a6d8c194cbb77c45b8a775e4..7d9f66e7f1fc0e5762b81cb8b451370e10664068 100644 (file)
@@ -47,6 +47,7 @@ packages:
   - libjansson-dev
   - libjs-jquery
   - libjson-perl
+  - libkeyutils-dev
   - libkrb5-dev
   - libldap2-dev
   - liblmdb-dev
index 3a6671d4fb875e29cbfbf5c320d48d27363aab29..77937ea68004d7ca7ab143d188eedabc5a4cf6bd 100644 (file)
@@ -1 +1 @@
-cfddaa8d36c3f512827bd96fe05c30f7f8337f4b
+6f4e1c3f1eb3b3236ae793c11def2135386a0ee9
index 1518afe9ef44482d22f42a7494a7dc83e3bc9f49..8aea52b55f5fdd073edbcab9d816bcf906957540 100644 (file)
@@ -710,7 +710,7 @@ if not bld.CONFIG_SET("USING_SYSTEM_KRB5"):
                                    get_port.c init_creds.c init_creds_pw.c
                                    kcm.c keyblock.c keytab.c keytab_any.c
                                    keytab_file.c keytab_memory.c
-                                   keytab_keyfile.c krbhst.c log.c
+                                   keytab_keyfile.c krbhst.c krcache.c log.c
                                    mcache.c misc.c mk_error.c mk_priv.c
                                    mk_rep.c mk_req.c mk_req_ext.c
                                    mit_glue.c net_read.c net_write.c n-fold.c padata.c pkinit.c pkinit-ec.c
@@ -726,10 +726,14 @@ if not bld.CONFIG_SET("USING_SYSTEM_KRB5"):
                                    mk_cred.c kx509_err.c
                                    k524_err.c krb_err.c k5e1_err.c''')]  + ["../heimdal_build/krb5-glue.c"]
 
+    krb5_keyutils_dep = ''
+    if bld.CONFIG_SET('HAVE_KEYCTL_GET_PERSISTENT'):
+        krb5_keyutils_dep = ' keyutils'
+
     HEIMDAL_LIBRARY('krb5', KRB5_SOURCE,
         version_script='lib/krb5/version-script.map',
                         includes='../heimdal/lib/krb5 ../heimdal/lib/asn1 ../heimdal/include',
-                deps='roken wind asn1 hx509 HEIMDAL_KX509_ASN1 hcrypto com_err HEIMDAL_CONFIG heimbase execinfo samba_intl HEIMDAL_IPC_CLIENT KRB5_CRYPTO',
+                deps='roken wind asn1 hx509 HEIMDAL_KX509_ASN1 hcrypto com_err HEIMDAL_CONFIG heimbase execinfo samba_intl HEIMDAL_IPC_CLIENT KRB5_CRYPTO' + krb5_keyutils_dep,
                 cflags=['-DLOCALSTATEDIR="/2"'] + bld.dynconfig_cflags(),
                         )
     KRB5_PROTO_SOURCE = KRB5_SOURCE + ['lib/krb5/expand_path.c', 'lib/krb5/plugin.c', 'lib/krb5/context.c', 'lib/krb5/crypto.c']
index a97a1b9baa8edd71cf9b0635fcc3ff02a22a0e05..645ce3a3468000c5def21601298fd543c14db5c3 100644 (file)
@@ -66,6 +66,16 @@ conf.CHECK_FUNCS('dirfd', headers='dirent.h')
 conf.CHECK_DECLS('dirfd', reverse=True, headers='dirent.h')
 conf.CHECK_STRUCTURE_MEMBER('DIR', 'dd_fd', define='HAVE_DIR_DD_FD',  headers='dirent.h')
 
+if conf.env['WITH_KERNEL_KEYRING'] != False:
+    require_keyutils = False
+    if conf.env['WITH_KERNEL_KEYRING'] == True:
+        require_keyutils = True
+    conf.CHECK_FUNCS_IN('add_key keyctl_get_persistent',
+                        'keyutils', headers='keyutils.h',
+                        mandatory=require_keyutils)
+    conf.CHECK_SIZEOF('key_serial_t', headers='keyutils.h',
+                      critical=require_keyutils)
+
 heimdal_no_error_flags = ['-Wno-error=discarded-qualifiers',
                           '-Wno-error=cast-qual',
                           '-Wno-error=missing-field-initializers',
diff --git a/wscript b/wscript
index b219297f0e0cceec39e72983dd2210f4343e051a..681e669d01983d1f9c99e12797f01417c3d4e277 100644 (file)
--- a/wscript
+++ b/wscript
@@ -116,6 +116,14 @@ def options(opt):
                   help=("Disable RELRO builds"),
                   action="store_false", dest='enable_relro')
 
+    opt.add_option('--with-kernel-keyring',
+                  help=('Enable kernely keyring support for credential storage ' +
+                        '(default if keyutils libraries are available)'),
+                  action='store_true', dest='enable_keyring')
+    opt.add_option('--without-kernel-keyring',
+                  help=('Disable kernely keyring support for credential storage'),
+                  action='store_false', dest='enable_keyring')
+
     gr = opt.option_group('developer options')
 
     opt.load('python') # options for disabling pyc or pyo compilation
@@ -200,6 +208,13 @@ def configure(conf):
                    mandatory=True)
     conf.CHECK_FUNCS_IN('inflateInit2', 'z')
 
+    if Options.options.enable_keyring != False:
+        conf.env['WITH_KERNEL_KEYRING'] = 'auto'
+        if Options.options.enable_keyring == True:
+            conf.env['WITH_KERNEL_KEYRING'] = True
+    else:
+        conf.env['WITH_KERNEL_KEYRING'] = False
+
     if conf.CHECK_FOR_THIRD_PARTY():
         conf.RECURSE('third_party')
     else: