[libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python

Daniel P. Berrangé posted 22 patches 6 years, 4 months ago
There is a newer version of this series
[libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Daniel P. Berrangé 6 years, 4 months ago
As part of an goal to eliminate Perl from libvirt build tools,
rewrite the augeas-gentest.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.

The use of $(AUG_GENTEST) as a dependancy in the makefiles needed
to be fixed, because this was assumed to be the filename of the
script, but is in fact a full shell command line.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 Makefile.am                     |  2 +-
 build-aux/augeas-gentest.pl     | 60 ---------------------------
 build-aux/augeas-gentest.py     | 72 +++++++++++++++++++++++++++++++++
 src/Makefile.am                 |  3 +-
 src/bhyve/Makefile.inc.am       |  4 +-
 src/interface/Makefile.inc.am   |  2 +-
 src/libxl/Makefile.inc.am       |  4 +-
 src/locking/Makefile.inc.am     |  6 +--
 src/logging/Makefile.inc.am     |  2 +-
 src/lxc/Makefile.inc.am         |  4 +-
 src/network/Makefile.inc.am     |  2 +-
 src/node_device/Makefile.inc.am |  2 +-
 src/nwfilter/Makefile.inc.am    |  2 +-
 src/qemu/Makefile.inc.am        |  4 +-
 src/remote/Makefile.inc.am      |  4 +-
 src/secret/Makefile.inc.am      |  2 +-
 src/storage/Makefile.inc.am     |  2 +-
 src/vbox/Makefile.inc.am        |  2 +-
 src/vz/Makefile.inc.am          |  2 +-
 19 files changed, 97 insertions(+), 84 deletions(-)
 delete mode 100755 build-aux/augeas-gentest.pl
 create mode 100755 build-aux/augeas-gentest.py

diff --git a/Makefile.am b/Makefile.am
index 711f365504..17448a914e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,7 +41,7 @@ EXTRA_DIST = \
   run.in \
   README.md \
   AUTHORS.in \
-  build-aux/augeas-gentest.pl \
+  build-aux/augeas-gentest.py \
   build-aux/check-spacing.pl \
   build-aux/gitlog-to-changelog \
   build-aux/header-ifdef.pl \
diff --git a/build-aux/augeas-gentest.pl b/build-aux/augeas-gentest.pl
deleted file mode 100755
index 65834b533b..0000000000
--- a/build-aux/augeas-gentest.pl
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env perl
-#
-# augeas-gentest.pl: Generate an augeas test file, from an
-#                    example config file + test file template
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library.  If not, see
-# <http://www.gnu.org/licenses/>.
-
-use strict;
-use warnings;
-
-die "syntax: $0 CONFIG TEMPLATE\n" unless @ARGV == 2;
-
-my $config = shift @ARGV;
-my $template = shift @ARGV;
-
-open CONFIG, "<", $config or die "cannot read $config: $!";
-open TEMPLATE, "<", $template or die "cannot read $template: $!";
-
-my $group = 0;
-while (<TEMPLATE>) {
-    if (/\@CONFIG\@/) {
-        my $group = 0;
-        print "  let conf = \"";
-        while (<CONFIG>) {
-            if (/^#\w/) {
-                s/^#//;
-                s/\"/\\\"/g;
-                print $_;
-                $group = /\[\s$/;
-            } elsif ($group) {
-                s/\"/\\\"/g;
-                if (/#\s*\]/) {
-                    $group = 0;
-                }
-                if (/^#/) {
-                    s/^#//;
-                    print $_;
-                }
-            }
-        }
-        print "\"\n";
-    } else {
-        print $_;
-    }
-}
-
-close TEMPLATE;
-close CONFIG;
diff --git a/build-aux/augeas-gentest.py b/build-aux/augeas-gentest.py
new file mode 100755
index 0000000000..18c6490a08
--- /dev/null
+++ b/build-aux/augeas-gentest.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2012-2019 Red Hat, Inc.
+#
+# augeas-gentest.py: Generate an augeas test file, from an
+#                    example config file + test file template
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+
+import re
+import sys
+
+if len(sys.argv) != 3:
+    print("syntax: %s CONFIG TEMPLATE" % sys.argv[0], file=sys.stderr)
+    sys.exit(1)
+
+config = sys.argv[1]
+template = sys.argv[2]
+
+
+def expand_config(config):
+    with open(config) as fh:
+        optprog = re.compile(r'''^#\w.*''')
+        groupstartprog = re.compile(r'''.*\[\s$''')
+        groupendprog = re.compile(r'''#\s*\].*$''')
+
+        group = False
+        for line in fh:
+            if optprog.match(line) is not None:
+                line = line[1:]
+                line = line.replace('"', '\\"')
+                print(line, end='')
+                if groupstartprog.match(line):
+                    group = True
+            elif group:
+                line = line.replace('"', '\\"')
+
+                if groupendprog.match(line):
+                    group = False
+
+                if line[0] == '#':
+                    line = line[1:]
+                    print(line, end='')
+
+
+def expand_template(template, config):
+    with open(template) as fh:
+        markerprog = re.compile(r'''\s*@CONFIG@\s*''')
+        for line in fh:
+            if markerprog.match(line) is not None:
+                print('   let conf = "', end='')
+                expand_config(config)
+                print('"')
+            else:
+                print(line, end='')
+
+
+expand_template(template, config)
diff --git a/src/Makefile.am b/src/Makefile.am
index cd955ee552..2956e4bf35 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -421,7 +421,8 @@ check-augeas: $(augeas_DATA) $(augeastest_DATA)
 	fi
 .PHONY: check-augeas
 
-AUG_GENTEST = $(PERL) $(top_srcdir)/build-aux/augeas-gentest.pl
+AUG_GENTEST_SCRIPT = $(top_srcdir)/build-aux/augeas-gentest.py
+AUG_GENTEST = $(RUNUTF8) $(PYTHON) $(AUG_GENTEST_SCRIPT)
 
 
 #
diff --git a/src/bhyve/Makefile.inc.am b/src/bhyve/Makefile.inc.am
index 195069872a..7e49a8bb5c 100644
--- a/src/bhyve/Makefile.inc.am
+++ b/src/bhyve/Makefile.inc.am
@@ -77,7 +77,7 @@ bhyve/virtbhyved.aug: remote/libvirtd.aug.in
 		$< > $@
 
 bhyve/test_virtbhyved.aug: remote/test_libvirtd.aug.in \
-		bhyve/virtbhyved.conf $(AUG_GENTEST)
+		bhyve/virtbhyved.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) bhyve/virtbhyved.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
@@ -91,7 +91,7 @@ augeas_DATA += bhyve/libvirtd_bhyve.aug
 augeastest_DATA += bhyve/test_libvirtd_bhyve.aug
 
 bhyve/test_libvirtd_bhyve.aug: bhyve/test_libvirtd_bhyve.aug.in \
-		$(srcdir)/bhyve/bhyve.conf $(AUG_GENTEST)
+		$(srcdir)/bhyve/bhyve.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/bhyve/bhyve.conf $< > $@
 
 endif WITH_BHYVE
diff --git a/src/interface/Makefile.inc.am b/src/interface/Makefile.inc.am
index baa85b4ba9..7f161c487f 100644
--- a/src/interface/Makefile.inc.am
+++ b/src/interface/Makefile.inc.am
@@ -97,7 +97,7 @@ interface/virtinterfaced.aug: remote/libvirtd.aug.in
 		$< > $@
 
 interface/test_virtinterfaced.aug: remote/test_libvirtd.aug.in \
-		interface/virtinterfaced.conf $(AUG_GENTEST)
+		interface/virtinterfaced.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) interface/virtinterfaced.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/libxl/Makefile.inc.am b/src/libxl/Makefile.inc.am
index c53396b7f3..3f35d1f2eb 100644
--- a/src/libxl/Makefile.inc.am
+++ b/src/libxl/Makefile.inc.am
@@ -111,7 +111,7 @@ libxl/virtxend.aug: remote/libvirtd.aug.in
 		$< > $@
 
 libxl/test_virtxend.aug: remote/test_libvirtd.aug.in \
-		libxl/virtxend.conf $(AUG_GENTEST)
+		libxl/virtxend.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) libxl/virtxend.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
@@ -125,7 +125,7 @@ augeas_DATA += libxl/libvirtd_libxl.aug
 augeastest_DATA += libxl/test_libvirtd_libxl.aug
 
 libxl/test_libvirtd_libxl.aug: libxl/test_libvirtd_libxl.aug.in \
-		$(srcdir)/libxl/libxl.conf $(AUG_GENTEST)
+		$(srcdir)/libxl/libxl.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/libxl/libxl.conf $< > $@
 
 INSTALL_DATA_DIRS += libxl
diff --git a/src/locking/Makefile.inc.am b/src/locking/Makefile.inc.am
index fae92a6e45..df0c51aaf6 100644
--- a/src/locking/Makefile.inc.am
+++ b/src/locking/Makefile.inc.am
@@ -219,7 +219,7 @@ endif WITH_SANLOCK
 if WITH_SANLOCK
 if WITH_QEMU
 locking/test_libvirt_sanlock.aug: locking/test_libvirt_sanlock.aug.in \
-		locking/qemu-sanlock.conf $(AUG_GENTEST)
+		locking/qemu-sanlock.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) locking/qemu-sanlock.conf $< > $@
 
 endif WITH_QEMU
@@ -227,12 +227,12 @@ endif WITH_SANLOCK
 
 if WITH_QEMU
 locking/test_libvirt_lockd.aug: locking/test_libvirt_lockd.aug.in \
-		locking/qemu-lockd.conf $(AUG_GENTEST)
+		locking/qemu-lockd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) locking/qemu-lockd.conf $< > $@
 endif WITH_QEMU
 
 locking/test_virtlockd.aug: locking/test_virtlockd.aug.in \
-		locking/virtlockd.conf $(AUG_GENTEST)
+		locking/virtlockd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/locking/virtlockd.conf $< > $@
 
 endif WITH_LIBVIRTD
diff --git a/src/logging/Makefile.inc.am b/src/logging/Makefile.inc.am
index 7e441dbffb..ce777e278a 100644
--- a/src/logging/Makefile.inc.am
+++ b/src/logging/Makefile.inc.am
@@ -101,7 +101,7 @@ augeas_DATA += logging/virtlogd.aug
 augeastest_DATA += logging/test_virtlogd.aug
 
 logging/test_virtlogd.aug: logging/test_virtlogd.aug.in \
-		logging/virtlogd.conf $(AUG_GENTEST)
+		logging/virtlogd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/logging/virtlogd.conf $< > $@
 
 endif WITH_LIBVIRTD
diff --git a/src/lxc/Makefile.inc.am b/src/lxc/Makefile.inc.am
index b4d560702c..0e12800886 100644
--- a/src/lxc/Makefile.inc.am
+++ b/src/lxc/Makefile.inc.am
@@ -164,7 +164,7 @@ lxc/virtlxcd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 lxc/test_virtlxcd.aug: remote/test_libvirtd.aug.in \
-		lxc/virtlxcd.conf $(AUG_GENTEST)
+		lxc/virtlxcd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) lxc/virtlxcd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
@@ -222,7 +222,7 @@ augeas_DATA += lxc/libvirtd_lxc.aug
 augeastest_DATA += lxc/test_libvirtd_lxc.aug
 
 lxc/test_libvirtd_lxc.aug: lxc/test_libvirtd_lxc.aug.in \
-		$(srcdir)/lxc/lxc.conf $(AUG_GENTEST)
+		$(srcdir)/lxc/lxc.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/lxc/lxc.conf $< > $@
 
 INSTALL_DATA_DIRS += lxc
diff --git a/src/network/Makefile.inc.am b/src/network/Makefile.inc.am
index 17467a65ad..0ac0e03957 100644
--- a/src/network/Makefile.inc.am
+++ b/src/network/Makefile.inc.am
@@ -104,7 +104,7 @@ network/virtnetworkd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 network/test_virtnetworkd.aug: remote/test_libvirtd.aug.in \
-		network/virtnetworkd.conf $(AUG_GENTEST)
+		network/virtnetworkd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) network/virtnetworkd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/node_device/Makefile.inc.am b/src/node_device/Makefile.inc.am
index eac7f92e88..a42cf8bc6a 100644
--- a/src/node_device/Makefile.inc.am
+++ b/src/node_device/Makefile.inc.am
@@ -120,7 +120,7 @@ node_device/virtnodedevd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 node_device/test_virtnodedevd.aug: remote/test_libvirtd.aug.in \
-		node_device/virtnodedevd.conf $(AUG_GENTEST)
+		node_device/virtnodedevd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) node_device/virtnodedevd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/nwfilter/Makefile.inc.am b/src/nwfilter/Makefile.inc.am
index 6acb45705c..45be065f7c 100644
--- a/src/nwfilter/Makefile.inc.am
+++ b/src/nwfilter/Makefile.inc.am
@@ -105,7 +105,7 @@ nwfilter/virtnwfilterd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 nwfilter/test_virtnwfilterd.aug: remote/test_libvirtd.aug.in \
-		nwfilter/virtnwfilterd.conf $(AUG_GENTEST)
+		nwfilter/virtnwfilterd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) nwfilter/virtnwfilterd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/qemu/Makefile.inc.am b/src/qemu/Makefile.inc.am
index 48fd0332ec..e9794520cf 100644
--- a/src/qemu/Makefile.inc.am
+++ b/src/qemu/Makefile.inc.am
@@ -169,7 +169,7 @@ qemu/virtqemud.aug: remote/libvirtd.aug.in
 		$< > $@
 
 qemu/test_virtqemud.aug: remote/test_libvirtd.aug.in \
-		qemu/virtqemud.conf $(AUG_GENTEST)
+		qemu/virtqemud.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) qemu/virtqemud.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
@@ -184,7 +184,7 @@ augeas_DATA += qemu/libvirtd_qemu.aug
 augeastest_DATA += qemu/test_libvirtd_qemu.aug
 
 qemu/test_libvirtd_qemu.aug: qemu/test_libvirtd_qemu.aug.in \
-		$(srcdir)/qemu/qemu.conf $(AUG_GENTEST)
+		$(srcdir)/qemu/qemu.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) $(srcdir)/qemu/qemu.conf $< > $@
 
 INSTALL_DATA_DIRS += qemu
diff --git a/src/remote/Makefile.inc.am b/src/remote/Makefile.inc.am
index 5a5c90a922..b42b700488 100644
--- a/src/remote/Makefile.inc.am
+++ b/src/remote/Makefile.inc.am
@@ -285,7 +285,7 @@ remote/virtproxyd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 remote/test_libvirtd.aug: remote/test_libvirtd.aug.in \
-		remote/libvirtd.conf $(AUG_GENTEST)
+		remote/libvirtd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) remote/libvirtd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
@@ -298,7 +298,7 @@ remote/test_libvirtd.aug: remote/test_libvirtd.aug.in \
 		> $@ || rm -f $@
 
 remote/test_virtproxyd.aug: remote/test_libvirtd.aug.in \
-		remote/virtproxyd.conf $(AUG_GENTEST)
+		remote/virtproxyd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) remote/virtproxyd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/secret/Makefile.inc.am b/src/secret/Makefile.inc.am
index 76bc67418c..1020fb64c8 100644
--- a/src/secret/Makefile.inc.am
+++ b/src/secret/Makefile.inc.am
@@ -93,7 +93,7 @@ secret/virtsecretd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 secret/test_virtsecretd.aug: remote/test_libvirtd.aug.in \
-		secret/virtsecretd.conf $(AUG_GENTEST)
+		secret/virtsecretd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) secret/virtsecretd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/storage/Makefile.inc.am b/src/storage/Makefile.inc.am
index 4dccb14ac1..28ddfeec72 100644
--- a/src/storage/Makefile.inc.am
+++ b/src/storage/Makefile.inc.am
@@ -197,7 +197,7 @@ storage/virtstoraged.aug: remote/libvirtd.aug.in
 		$< > $@
 
 storage/test_virtstoraged.aug: remote/test_libvirtd.aug.in \
-		storage/virtstoraged.conf $(AUG_GENTEST)
+		storage/virtstoraged.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) storage/virtstoraged.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/vbox/Makefile.inc.am b/src/vbox/Makefile.inc.am
index 178c360b99..1f2bcb5488 100644
--- a/src/vbox/Makefile.inc.am
+++ b/src/vbox/Makefile.inc.am
@@ -117,7 +117,7 @@ vbox/virtvboxd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 vbox/test_virtvboxd.aug: remote/test_libvirtd.aug.in \
-		vbox/virtvboxd.conf $(AUG_GENTEST)
+		vbox/virtvboxd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) vbox/virtvboxd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
diff --git a/src/vz/Makefile.inc.am b/src/vz/Makefile.inc.am
index f56fceb8f7..fa7b8b79dd 100644
--- a/src/vz/Makefile.inc.am
+++ b/src/vz/Makefile.inc.am
@@ -91,7 +91,7 @@ vz/virtvzd.aug: remote/libvirtd.aug.in
 		$< > $@
 
 vz/test_virtvzd.aug: remote/test_libvirtd.aug.in \
-		vz/virtvzd.conf $(AUG_GENTEST)
+		vz/virtvzd.conf $(AUG_GENTEST_SCRIPT)
 	$(AM_V_GEN)$(AUG_GENTEST) vz/virtvzd.conf \
 		$(srcdir)/remote/test_libvirtd.aug.in | \
 		$(SED) \
-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Ján Tomko 6 years, 4 months ago
On Tue, Sep 24, 2019 at 03:58:43PM +0100, Daniel P. Berrangé wrote:
>As part of an goal to eliminate Perl from libvirt build tools,
>rewrite the augeas-gentest.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.
>
>The use of $(AUG_GENTEST) as a dependancy in the makefiles needed

s/dependancy/dependency/

>to be fixed, because this was assumed to be the filename of the
>script, but is in fact a full shell command line.
>

This is the case regardless of the Perl->Python conversion
and can be done upfront to reduce the churn in this patch.
Introduced by commit fb59cf7a5824b9c876737dcbf6aac97c29b1444a

>Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>---
> Makefile.am                     |  2 +-
> build-aux/augeas-gentest.pl     | 60 ---------------------------
> build-aux/augeas-gentest.py     | 72 +++++++++++++++++++++++++++++++++
> src/Makefile.am                 |  3 +-
> src/bhyve/Makefile.inc.am       |  4 +-
> src/interface/Makefile.inc.am   |  2 +-
> src/libxl/Makefile.inc.am       |  4 +-
> src/locking/Makefile.inc.am     |  6 +--
> src/logging/Makefile.inc.am     |  2 +-
> src/lxc/Makefile.inc.am         |  4 +-
> src/network/Makefile.inc.am     |  2 +-
> src/node_device/Makefile.inc.am |  2 +-
> src/nwfilter/Makefile.inc.am    |  2 +-
> src/qemu/Makefile.inc.am        |  4 +-
> src/remote/Makefile.inc.am      |  4 +-
> src/secret/Makefile.inc.am      |  2 +-
> src/storage/Makefile.inc.am     |  2 +-
> src/vbox/Makefile.inc.am        |  2 +-
> src/vz/Makefile.inc.am          |  2 +-
> 19 files changed, 97 insertions(+), 84 deletions(-)
> delete mode 100755 build-aux/augeas-gentest.pl
> create mode 100755 build-aux/augeas-gentest.py

Since this is a new file with clean history, it might actually deserve
a better location than build-aux and we can leave this directory to
Automake and gnulib to do whatever magic they do there.
Also note that the directory is in .gitignore. (I added the exception
for .pl files back when I added files here)

Would 'scripts' be too vague? Could be a good place to put the helper
scripts for generating QEMU caps files since I never seem to remember
its name and tests/ is growing quite big.

[...]

>+def expand_config(config):
>+    with open(config) as fh:
>+        optprog = re.compile(r'''^#\w.*''')
>+        groupstartprog = re.compile(r'''.*\[\s$''')
>+        groupendprog = re.compile(r'''#\s*\].*$''')
>+
>+        group = False
>+        for line in fh:
>+            if optprog.match(line) is not None:
>+                line = line[1:]
>+                line = line.replace('"', '\\"')
>+                print(line, end='')
>+                if groupstartprog.match(line):
>+                    group = True
>+            elif group:
>+                line = line.replace('"', '\\"')
>+
>+                if groupendprog.match(line):
>+                    group = False
>+
>+                if line[0] == '#':
>+                    line = line[1:]
>+                    print(line, end='')
>+
>+
>+def expand_template(template, config):
>+    with open(template) as fh:
>+        markerprog = re.compile(r'''\s*@CONFIG@\s*''')
>+        for line in fh:
>+            if markerprog.match(line) is not None:

Simpler as:
  if '@CONFIG@' in line:
There's no need to use a regex here

>+                print('   let conf = "', end='')

This uses three spaces instead of two like the original Perl script.
Three match the rest of the .aug files, but by including that change
here, this rewrite generates a different output.

>+                expand_config(config)
>+                print('"')
>+            else:
>+                print(line, end='')
>+
>+
>+expand_template(template, config)

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Daniel P. Berrangé 6 years, 4 months ago
On Wed, Sep 25, 2019 at 03:25:39PM +0200, Ján Tomko wrote:
> On Tue, Sep 24, 2019 at 03:58:43PM +0100, Daniel P. Berrangé wrote:
> > As part of an goal to eliminate Perl from libvirt build tools,
> > rewrite the augeas-gentest.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.
> > 
> > The use of $(AUG_GENTEST) as a dependancy in the makefiles needed
> 
> s/dependancy/dependency/
> 
> > to be fixed, because this was assumed to be the filename of the
> > script, but is in fact a full shell command line.
> > 
> 
> This is the case regardless of the Perl->Python conversion
> and can be done upfront to reduce the churn in this patch.
> Introduced by commit fb59cf7a5824b9c876737dcbf6aac97c29b1444a
> 
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> > Makefile.am                     |  2 +-
> > build-aux/augeas-gentest.pl     | 60 ---------------------------
> > build-aux/augeas-gentest.py     | 72 +++++++++++++++++++++++++++++++++
> > src/Makefile.am                 |  3 +-
> > src/bhyve/Makefile.inc.am       |  4 +-
> > src/interface/Makefile.inc.am   |  2 +-
> > src/libxl/Makefile.inc.am       |  4 +-
> > src/locking/Makefile.inc.am     |  6 +--
> > src/logging/Makefile.inc.am     |  2 +-
> > src/lxc/Makefile.inc.am         |  4 +-
> > src/network/Makefile.inc.am     |  2 +-
> > src/node_device/Makefile.inc.am |  2 +-
> > src/nwfilter/Makefile.inc.am    |  2 +-
> > src/qemu/Makefile.inc.am        |  4 +-
> > src/remote/Makefile.inc.am      |  4 +-
> > src/secret/Makefile.inc.am      |  2 +-
> > src/storage/Makefile.inc.am     |  2 +-
> > src/vbox/Makefile.inc.am        |  2 +-
> > src/vz/Makefile.inc.am          |  2 +-
> > 19 files changed, 97 insertions(+), 84 deletions(-)
> > delete mode 100755 build-aux/augeas-gentest.pl
> > create mode 100755 build-aux/augeas-gentest.py
> 
> Since this is a new file with clean history, it might actually deserve
> a better location than build-aux and we can leave this directory to
> Automake and gnulib to do whatever magic they do there.
> Also note that the directory is in .gitignore. (I added the exception
> for .pl files back when I added files here)
> 
> Would 'scripts' be too vague? Could be a good place to put the helper
> scripts for generating QEMU caps files since I never seem to remember
> its name and tests/ is growing quite big.

That's a good question. As you see from this series, we've got random
scripts scattered all over the sub-dirs. build-aux/ was in some sense
to avoid polluting the top level dir.

If we create 'scripts/' should we put everything in there, or just
stuff that's related to the top level, and keep everything else in
their current subdirs ?


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Ján Tomko 6 years, 4 months ago
On Wed, Sep 25, 2019 at 03:17:10PM +0100, Daniel P. Berrangé wrote:
>On Wed, Sep 25, 2019 at 03:25:39PM +0200, Ján Tomko wrote:
>> On Tue, Sep 24, 2019 at 03:58:43PM +0100, Daniel P. Berrangé wrote:
>> > As part of an goal to eliminate Perl from libvirt build tools,
>> > rewrite the augeas-gentest.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.
>> >
>> > The use of $(AUG_GENTEST) as a dependancy in the makefiles needed
>>
>> s/dependancy/dependency/
>>
>> > to be fixed, because this was assumed to be the filename of the
>> > script, but is in fact a full shell command line.
>> >
>>
>> This is the case regardless of the Perl->Python conversion
>> and can be done upfront to reduce the churn in this patch.
>> Introduced by commit fb59cf7a5824b9c876737dcbf6aac97c29b1444a
>>
>> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>> > ---
>> > Makefile.am                     |  2 +-
>> > build-aux/augeas-gentest.pl     | 60 ---------------------------
>> > build-aux/augeas-gentest.py     | 72 +++++++++++++++++++++++++++++++++
>> > src/Makefile.am                 |  3 +-
>> > src/bhyve/Makefile.inc.am       |  4 +-
>> > src/interface/Makefile.inc.am   |  2 +-
>> > src/libxl/Makefile.inc.am       |  4 +-
>> > src/locking/Makefile.inc.am     |  6 +--
>> > src/logging/Makefile.inc.am     |  2 +-
>> > src/lxc/Makefile.inc.am         |  4 +-
>> > src/network/Makefile.inc.am     |  2 +-
>> > src/node_device/Makefile.inc.am |  2 +-
>> > src/nwfilter/Makefile.inc.am    |  2 +-
>> > src/qemu/Makefile.inc.am        |  4 +-
>> > src/remote/Makefile.inc.am      |  4 +-
>> > src/secret/Makefile.inc.am      |  2 +-
>> > src/storage/Makefile.inc.am     |  2 +-
>> > src/vbox/Makefile.inc.am        |  2 +-
>> > src/vz/Makefile.inc.am          |  2 +-
>> > 19 files changed, 97 insertions(+), 84 deletions(-)
>> > delete mode 100755 build-aux/augeas-gentest.pl
>> > create mode 100755 build-aux/augeas-gentest.py
>>
>> Since this is a new file with clean history, it might actually deserve
>> a better location than build-aux and we can leave this directory to
>> Automake and gnulib to do whatever magic they do there.
>> Also note that the directory is in .gitignore. (I added the exception
>> for .pl files back when I added files here)
>>
>> Would 'scripts' be too vague? Could be a good place to put the helper
>> scripts for generating QEMU caps files since I never seem to remember
>> its name and tests/ is growing quite big.
>
>That's a good question. As you see from this series, we've got random
>scripts scattered all over the sub-dirs. build-aux/ was in some sense
>to avoid polluting the top level dir.
>
>If we create 'scripts/' should we put everything in there, or just
>stuff that's related to the top level, and keep everything else in
>their current subdirs ?

We put all the driver-specific tests into one tests/ directory, I think
doing it for scripts makes sense too.

Jano

>
>
>Regards,
>Daniel
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Daniel P. Berrangé 6 years, 4 months ago
On Thu, Sep 26, 2019 at 05:35:46PM +0200, Ján Tomko wrote:
> On Wed, Sep 25, 2019 at 03:17:10PM +0100, Daniel P. Berrangé wrote:
> > On Wed, Sep 25, 2019 at 03:25:39PM +0200, Ján Tomko wrote:
> > > On Tue, Sep 24, 2019 at 03:58:43PM +0100, Daniel P. Berrangé wrote:
> > > > As part of an goal to eliminate Perl from libvirt build tools,
> > > > rewrite the augeas-gentest.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.
> > > >
> > > > The use of $(AUG_GENTEST) as a dependancy in the makefiles needed
> > > 
> > > s/dependancy/dependency/
> > > 
> > > > to be fixed, because this was assumed to be the filename of the
> > > > script, but is in fact a full shell command line.
> > > >
> > > 
> > > This is the case regardless of the Perl->Python conversion
> > > and can be done upfront to reduce the churn in this patch.
> > > Introduced by commit fb59cf7a5824b9c876737dcbf6aac97c29b1444a
> > > 
> > > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > > > ---
> > > > Makefile.am                     |  2 +-
> > > > build-aux/augeas-gentest.pl     | 60 ---------------------------
> > > > build-aux/augeas-gentest.py     | 72 +++++++++++++++++++++++++++++++++
> > > > src/Makefile.am                 |  3 +-
> > > > src/bhyve/Makefile.inc.am       |  4 +-
> > > > src/interface/Makefile.inc.am   |  2 +-
> > > > src/libxl/Makefile.inc.am       |  4 +-
> > > > src/locking/Makefile.inc.am     |  6 +--
> > > > src/logging/Makefile.inc.am     |  2 +-
> > > > src/lxc/Makefile.inc.am         |  4 +-
> > > > src/network/Makefile.inc.am     |  2 +-
> > > > src/node_device/Makefile.inc.am |  2 +-
> > > > src/nwfilter/Makefile.inc.am    |  2 +-
> > > > src/qemu/Makefile.inc.am        |  4 +-
> > > > src/remote/Makefile.inc.am      |  4 +-
> > > > src/secret/Makefile.inc.am      |  2 +-
> > > > src/storage/Makefile.inc.am     |  2 +-
> > > > src/vbox/Makefile.inc.am        |  2 +-
> > > > src/vz/Makefile.inc.am          |  2 +-
> > > > 19 files changed, 97 insertions(+), 84 deletions(-)
> > > > delete mode 100755 build-aux/augeas-gentest.pl
> > > > create mode 100755 build-aux/augeas-gentest.py
> > > 
> > > Since this is a new file with clean history, it might actually deserve
> > > a better location than build-aux and we can leave this directory to
> > > Automake and gnulib to do whatever magic they do there.
> > > Also note that the directory is in .gitignore. (I added the exception
> > > for .pl files back when I added files here)
> > > 
> > > Would 'scripts' be too vague? Could be a good place to put the helper
> > > scripts for generating QEMU caps files since I never seem to remember
> > > its name and tests/ is growing quite big.
> > 
> > That's a good question. As you see from this series, we've got random
> > scripts scattered all over the sub-dirs. build-aux/ was in some sense
> > to avoid polluting the top level dir.
> > 
> > If we create 'scripts/' should we put everything in there, or just
> > stuff that's related to the top level, and keep everything else in
> > their current subdirs ?
> 
> We put all the driver-specific tests into one tests/ directory, I think
> doing it for scripts makes sense too.

I'd really like the move all the tests into their respective driver
directories at some point :-)

We don't have an enourmous number of scripts though, so having them
all in one place is fine.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Peter Krempa 6 years, 4 months ago
On Thu, Sep 26, 2019 at 16:40:54 +0100, Daniel Berrange wrote:
> On Thu, Sep 26, 2019 at 05:35:46PM +0200, Ján Tomko wrote:
> > On Wed, Sep 25, 2019 at 03:17:10PM +0100, Daniel P. Berrangé wrote:
> > > On Wed, Sep 25, 2019 at 03:25:39PM +0200, Ján Tomko wrote:
> > > > On Tue, Sep 24, 2019 at 03:58:43PM +0100, Daniel P. Berrangé wrote:

[...]

> > > If we create 'scripts/' should we put everything in there, or just
> > > stuff that's related to the top level, and keep everything else in
> > > their current subdirs ?
> > 
> > We put all the driver-specific tests into one tests/ directory, I think
> > doing it for scripts makes sense too.
> 
> I'd really like the move all the tests into their respective driver
> directories at some point :-)

I hope you intend to stash them into a 'tests' subdirectory or
something. Otherwise I'll object as the driver directories themselves
are getting too clobbered with non-test stuff already.

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v3 02/22] build-aux: rewrite augest test generator in Python
Posted by Daniel P. Berrangé 6 years, 4 months ago
On Thu, Sep 26, 2019 at 05:58:47PM +0200, Peter Krempa wrote:
> On Thu, Sep 26, 2019 at 16:40:54 +0100, Daniel Berrange wrote:
> > On Thu, Sep 26, 2019 at 05:35:46PM +0200, Ján Tomko wrote:
> > > On Wed, Sep 25, 2019 at 03:17:10PM +0100, Daniel P. Berrangé wrote:
> > > > On Wed, Sep 25, 2019 at 03:25:39PM +0200, Ján Tomko wrote:
> > > > > On Tue, Sep 24, 2019 at 03:58:43PM +0100, Daniel P. Berrangé wrote:
> 
> [...]
> 
> > > > If we create 'scripts/' should we put everything in there, or just
> > > > stuff that's related to the top level, and keep everything else in
> > > > their current subdirs ?
> > > 
> > > We put all the driver-specific tests into one tests/ directory, I think
> > > doing it for scripts makes sense too.
> > 
> > I'd really like the move all the tests into their respective driver
> > directories at some point :-)
> 
> I hope you intend to stash them into a 'tests' subdirectory or
> something. Otherwise I'll object as the driver directories themselves
> are getting too clobbered with non-test stuff already.

I've not thought that far ahead to be honest - its just a random wishlist
item at number 783 on the todo list.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list