wafsamba: fix samba_abi for default catch-all case
authorAlexander Bokovoy <ab@samba.org>
Wed, 3 Apr 2013 12:52:06 +0000 (15:52 +0300)
committerAlexander Bokovoy <ab@samba.org>
Tue, 9 Apr 2013 12:06:03 +0000 (15:06 +0300)
Only filter out the symbol when positive match was not found and there is
negative match.

ABI signature file generator worked incorrectly for cases when mixture of
positive and negative matches were provided. This resulted in generating empty
signature file for libpdb since there was no catch-all positive match anymore.

Commit 9ba44cc610426fb558b49aa9680b5bdf55c29082 removed explicit '*' positive
match and corresponding vscript generator adds '*' by default if global match
list is empty, so this commit introduces feature parity into signature
generator.

buildtools/wafsamba/samba_abi.py

index 488dab8837aee32be0c31960084f8a5f59a6b05f..76acd006777e7ecabffefa3e76412cbec93b0721 100644 (file)
@@ -50,13 +50,15 @@ def parse_sigs(sigs, abi_match):
         sa = s.split(':')
         if abi_match:
             matched = False
+            negative = False
             for p in abi_match:
                 if p[0] == '!' and fnmatch.fnmatch(sa[0], p[1:]):
+                    negative = True
                     break
                 elif fnmatch.fnmatch(sa[0], p):
                     matched = True
                     break
-            if not matched:
+            if (not matched) and negative:
                 continue
         Logs.debug("%s -> %s" % (sa[1], normalise_signature(sa[1])))
         ret[sa[0]] = normalise_signature(sa[1])