wafsamba.abi: Fix abi_match with both excludes and includes.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 5 Nov 2012 18:36:30 +0000 (19:36 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 5 Nov 2012 21:27:44 +0000 (08:27 +1100)
This fixes a regression introduced by 9c3e294400234ebdf9b98031bae583524fd0b0ac
which caused internal symbols in libldb to be exposed.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=9357

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stephen Gallagher <sgallagh@redhat.com>
buildtools/wafsamba/samba_abi.py
buildtools/wafsamba/tests/test_abi.py

index c325b3323e7a2d099ce2ba390b23c352d314cc23..488dab8837aee32be0c31960084f8a5f59a6b05f 100644 (file)
@@ -191,12 +191,12 @@ def abi_write_vscript(f, libname, current_version, versions, symmap, abi_match):
             f.write("\t\t%s;\n" % x)
     else:
         f.write("\t\t*;\n")
-    if len(local_abi) > 0:
+    if abi_match != ["*"]:
         f.write("\tlocal:\n")
         for x in local_abi:
             f.write("\t\t%s;\n" % x[1:])
-    elif abi_match != ["*"]:
-        f.write("\tlocal: *;\n")
+        if len(global_abi) > 0:
+            f.write("\t\t*;\n")
     f.write("};\n")
 
 
index 42c4697cde7ffd5e8e7f1f59abe0e71158523d6f..bba78c1ba0745b37a59a50ee71d9c31b0c63ae7d 100644 (file)
@@ -100,4 +100,21 @@ MYLIB_0.1 {
 \tlocal:
 \t\texc_*;
 };
+""")
+
+    def test_excludes_and_includes(self):
+        f = StringIO()
+        abi_write_vscript(f, "MYLIB", "1.0", [], {
+            "pub_foo": "1.0",
+            "exc_bar": "1.0",
+            "other": "1.0"
+            }, ["pub_*", "!exc_*"])
+        self.assertEquals(f.getvalue(), """\
+1.0 {
+\tglobal:
+\t\tpub_*;
+\tlocal:
+\t\texc_*;
+\t\t*;
+};
 """)