]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
wafsamba: Fix ABI symbol name generation
authorAndreas Schneider <asn@samba.org>
Mon, 5 Aug 2024 12:51:01 +0000 (14:51 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 6 Aug 2024 11:44:00 +0000 (11:44 +0000)
Commit 0bc5b6f29307ce758774c1b2f48ce62315fdc7f9 changed the script
for generating the ABI symbol version. It broke the ABI by changing all
dots to underscores.

This reverts the commit partially to preserve the dots in the version
part.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15673

Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>

Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Günther Deschner <gd@samba.org>
Autobuild-User(master): Douglas Bagnall <dbagnall@samba.org>
Autobuild-Date(master): Tue Aug  6 00:42:56 UTC 2024 on atb-devel-224

(cherry picked from commit 46215ab1b34aa79c4c831ea1c12f73eacf1e8a12)

Autobuild-User(v4-19-test): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(v4-19-test): Tue Aug  6 11:44:00 UTC 2024 on atb-devel-224

buildtools/wafsamba/samba_abi.py
script/autobuild.py

index 22c25b8da35bd7e80a5d05574b22edffcbe4476b..155559973a0bf932b401d11aa0be784760eaec06 100644 (file)
@@ -286,7 +286,7 @@ def abi_build_vscript(task):
         f.close()
 
 def VSCRIPT_MAP_PRIVATE(bld, libname, orig_vscript, version, private_vscript):
-    version = re.sub(r'\W', '_', version).upper()
+    version = re.sub(r'[^.\w]', '_', version).upper()
     t = bld.SAMBA_GENERATOR(private_vscript,
                             rule=abi_build_vscript,
                             source=orig_vscript,
@@ -314,8 +314,8 @@ def ABI_VSCRIPT(bld, libname, abi_directory, version, vscript, abi_match=None, p
 
     libname = os.path.basename(libname)
     version = os.path.basename(version)
-    libname = re.sub(r'\W', '_', libname).upper()
-    version = re.sub(r'\W', '_', version).upper()
+    libname = re.sub(r'[^.\w]', '_', libname).upper()
+    version = re.sub(r'[^.\w]', '_', version).upper()
 
     t = bld.SAMBA_GENERATOR(vscript,
                             rule=abi_build_vscript,
index 2408bb38db65281f1abc5b76ccb12c108c08da22..2aeb5a6f83c9a8011d40d8930a1c78149c6ffacc 100755 (executable)
@@ -138,6 +138,13 @@ def check_symbols(sofile, expected_symbols=""):
     return "objdump --dynamic-syms " + sofile + " | " + \
            "awk \'$0 !~ /" + expected_symbols + "/ {if ($2 == \"g\" && $3 ~ /D(F|O)/ && $4 ~ /(.bss|.text)/ && $7 !~ /(__gcov_|mangle_path)/) exit 1}\'"
 
+def check_versioned_symbol(sofile, symvol, version):
+    return "objdump --dynamic-syms " + sofile + " | " + \
+           "awk \'$7 == \"" + symvol + "\" { " + \
+                "if ($2 == \"g\" && $3 ~ /D(F|O)/ && $4 ~ /(.bss|.text)/ && " + \
+                     "$6 == \"" + version + "\") print $0 }\'" + \
+                "| wc -l | grep -q \'^1$\'"
+
 if args:
     # If we are only running specific test,
     # do not sleep randomly to wait for it to start
@@ -906,12 +913,16 @@ tasks = {
                 check_symbols("./bin/plugins/libnss_wins.so.2", "_nss_wins_")),
             ("nondevel-no-public-libwbclient",
                 check_symbols("./bin/shared/libwbclient.so.0", "wbc")),
+            ("nondevel-libwbclient-wbcCtxPingDc2@WBCLIENT_0.12",
+                check_versioned_symbol("./bin/shared/libwbclient.so.0", "wbcCtxPingDc2", "WBCLIENT_0.12")),
             ("nondevel-no-public-pam_winbind",
                 check_symbols("./bin/plugins/pam_winbind.so", "pam_sm_")),
             ("nondevel-no-public-winbind_krb5_locator",
                 check_symbols("./bin/plugins/winbind_krb5_locator.so", "service_locator")),
             ("nondevel-no-public-async_dns_krb5_locator",
                 check_symbols("./bin/plugins/async_dns_krb5_locator.so", "service_locator")),
+            ("nondevel-libndr-krb5pac-ndr_pull_PAC_DATA@NDR_KRB5PAC_0.0.1",
+                check_versioned_symbol("./bin/shared/libndr-krb5pac.so.0", "ndr_pull_PAC_DATA", "NDR_KRB5PAC_0.0.1")),
             ("nondevel-install", "make -j install"),
             ("nondevel-dist", "make dist"),