1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-03 01:18:10 +03:00

wafsamba: Fix ABI symbol name generation

Commit 0bc5b6f293 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 46215ab1b3)
This commit is contained in:
Andreas Schneider 2024-08-05 14:51:01 +02:00 committed by Stefan Metzmacher
parent 5ba371e09a
commit 6d69562e27
2 changed files with 14 additions and 3 deletions

View 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,

View File

@ -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"),