]> 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)
committerDouglas Bagnall <dbagnall@samba.org>
Tue, 6 Aug 2024 00:42:56 +0000 (00:42 +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

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

index c82ba3424f99a498ba5a37ef4589261fcaae3906..e6deb839c0cb7efa43fafa488aaddc6aaeed48e5 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 a62ac8c162f74a3a3aad4528d50f755c40a1a301..6a9864f6f89c438d2f3911fdbb7614295cb2aa13 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
@@ -903,12 +910,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"),