[libvirt] [PATCH v5 03/23] build-aux: rewrite mock inline checker in Python
Ján Tomko
jtomko at redhat.com
Tue Nov 19 12:13:42 UTC 2019
On Mon, Nov 11, 2019 at 02:38:06PM +0000, Daniel P. Berrangé wrote:
>As part of an goal to eliminate Perl from libvirt build tools,
>rewrite the mock-noinline.pl tool in Python.
>
>This was a straight conversion, manually going line-by-line to
>change the syntax from Perl to Python. Thus the overall structure
>of the file and approach is the same.
>
>Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
>---
> Makefile.am | 2 +-
> build-aux/mock-noinline.pl | 75 ---------------------------------
> build-aux/syntax-check.mk | 4 +-
> scripts/mock-noinline.py | 85 ++++++++++++++++++++++++++++++++++++++
> 4 files changed, 88 insertions(+), 78 deletions(-)
> delete mode 100644 build-aux/mock-noinline.pl
> create mode 100644 scripts/mock-noinline.py
>
>diff --git a/scripts/mock-noinline.py b/scripts/mock-noinline.py
>new file mode 100644
>index 0000000000..2770ea1238
>--- /dev/null
>+++ b/scripts/mock-noinline.py
>@@ -0,0 +1,85 @@
>+# Functions in public header don't get the noinline annotation
>+# so whitelist them here
>+noninlined["virEventAddTimeout"] = True
>+# This one confuses the script as its defined in the mock file
>+# but is actually just a local helper
>+noninlined["virMockStatRedirect"] = True
>+
>+
>+def scan_annotations(filename):
>+ with open(filename, "r") as fh:
>+ func = None
>+ for line in fh:
>+ line = line.strip()
>+ m = re.search(r'''^\s*(\w+)\(''', line)
>+ if m is None:
>+ m = re.search(r'''^(?:\w+\*?\s+)+(?:\*\s*)?(\w+)\(''', line)
>+ if m is not None:
>+ name = m.group(1)
>+ if name.find("ATTRIBUTE") == -1 and name.find("G_GNUC_") == -1:
>+ func = name
More readable as:
if "ATTRIBUTE" not in name and "G_GNUC_" not in name:
>+ elif line == "":
If you use line.isspace() here, you don't need to strip the whitespace above.
>+ func = None
>+
>+ if line.find("G_GNUC_NO_INLINE") != -1:
if "G_GNUC_NO_INLINE" in line:
>+ if func is not None:
>+ noninlined[func] = True
>+
>+
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20191119/e6b1dee3/attachment-0001.sig>
More information about the libvir-list
mailing list