From ab535a64d26f17dac1befb8b6470c901003f5186 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 5 Aug 2024 14:51:01 +0200 Subject: [PATCH] wafsamba: Fix ABI symbol name generation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Andreas Schneider Signed-off-by: Stefan Metzmacher Reviewed-by: Douglas Bagnall Reviewed-by: Günther Deschner Autobuild-User(master): Douglas Bagnall 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 Autobuild-Date(v4-19-test): Tue Aug 6 11:44:00 UTC 2024 on atb-devel-224 --- buildtools/wafsamba/samba_abi.py | 6 +++--- script/autobuild.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/buildtools/wafsamba/samba_abi.py b/buildtools/wafsamba/samba_abi.py index 22c25b8da35..155559973a0 100644 --- a/buildtools/wafsamba/samba_abi.py +++ b/buildtools/wafsamba/samba_abi.py @@ -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, diff --git a/script/autobuild.py b/script/autobuild.py index 2408bb38db6..2aeb5a6f83c 100755 --- a/script/autobuild.py +++ b/script/autobuild.py @@ -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"), -- 2.47.2