]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Add configure checks for glibc and openssl versions
authorDavid Mulder <dmulder@samba.org>
Wed, 28 Aug 2024 20:32:30 +0000 (14:32 -0600)
committerDavid Mulder <dmulder@samba.org>
Wed, 23 Oct 2024 14:21:34 +0000 (14:21 +0000)
Add configure checks to determine if rust or
specifically himmelblau sources can be compiled.

Signed-off-by: David Mulder <dmulder@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
buildtools/wafsamba/wscript
wscript

index ef9d5be62af7a8293fdadce75757fa7725e9e62c..95a4f3f3525dff1b807b96185ff3a6f65d2e5785 100644 (file)
@@ -8,6 +8,13 @@ import wafsamba
 from samba_utils import symlink
 from optparse import SUPPRESS_HELP
 
+def get_libc_version():
+    import ctypes
+    libc = ctypes.CDLL("libc.so.6")
+    gnu_get_libc_version = libc.gnu_get_libc_version
+    gnu_get_libc_version.restype = ctypes.c_char_p
+    return gnu_get_libc_version().decode()
+
 phs = os.environ.get("PYTHONHASHSEED", None)
 if phs != "1":
     raise Errors.WafError('''PYTHONHASHSEED=1 missing! Don't use waf directly, use ./configure and make!''')
@@ -356,6 +363,10 @@ def configure(conf):
     conf.env.disable_python = Options.options.disable_python
     conf.env.enable_rust = Options.options.enable_rust
     if Options.options.enable_rust:
+        glibc_vers = float('.'.join(get_libc_version().split('.')[:2]))
+        if glibc_vers < 2.32:
+            conf.fatal('--enable-rust cannot be specified with '
+                       'glibc version %s' % glibc_vers)
         conf.DEFINE('HAVE_RUST', '1')
 
     if (conf.env.AUTOCONF_HOST and
diff --git a/wscript b/wscript
index c4387fe737fcd3290c1eeede72292d0e28e6e992..c454a718b7336609a4226333c7ae9cfd9d7dc753 100644 (file)
--- a/wscript
+++ b/wscript
@@ -12,6 +12,7 @@ import shutil
 import wafsamba, samba_dist, samba_git, samba_version, samba_utils
 from waflib import Options, Scripting, Logs, Context, Errors
 from waflib.Tools import bison
+import ssl
 
 samba_dist.DIST_DIRS('.')
 samba_dist.DIST_BLACKLIST('.gitignore .bzrignore source4/selftest/provisions')
@@ -511,6 +512,13 @@ def configure(conf):
     conf.env.debug = Options.options.debug
     conf.env.developer = Options.options.developer
     conf.env.enable_himmelblau = Options.options.enable_himmelblau
+    if Options.options.enable_himmelblau:
+        if not conf.env.enable_rust:
+            conf.fatal('--with-himmelblau cannot be specified without '
+                       '--enable-rust')
+        if ssl.OPENSSL_VERSION_INFO[0] < 3:
+            conf.fatal('--with-himmelblau cannot be specified with '
+                       '%s' % ssl.OPENSSL_VERSION)
 
     #
     # FreeBSD is broken. It doesn't include 'extern char **environ'