]> xenbits.xensource.com Git - libvirt.git/commitdiff
build-aux: rewrite po file minimizer in Python
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 30 Aug 2019 12:22:54 +0000 (13:22 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 18 Oct 2019 12:54:03 +0000 (13:54 +0100)
As part of an goal to eliminate Perl from libvirt build tools,
rewrite the minimize-po.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.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Makefile.am
build-aux/minimize-po.pl [deleted file]
po/Makefile.am
scripts/minimize-po.py [new file with mode: 0755]

index 9ec010226cd23c269e16737dea9ab5229cbc2362..f758745d91708c82cb5348ef94e933c59eb194be 100644 (file)
@@ -48,7 +48,7 @@ EXTRA_DIST = \
   scripts/augeas-gentest.py \
   build-aux/check-spacing.pl \
   build-aux/header-ifdef.pl \
-  build-aux/minimize-po.pl \
+  scripts/minimize-po.py \
   build-aux/mock-noinline.pl \
   build-aux/prohibit-duplicate-header.pl \
   build-aux/syntax-check.mk \
diff --git a/build-aux/minimize-po.pl b/build-aux/minimize-po.pl
deleted file mode 100755 (executable)
index 497533a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/perl
-
-my @block;
-my $msgstr = 0;
-my $empty = 0;
-my $unused = 0;
-my $fuzzy = 0;
-while (<>) {
-    if (/^$/) {
-        if (!$empty && !$unused && !$fuzzy) {
-            print @block;
-        }
-        @block = ();
-        $msgstr = 0;
-        $fuzzy = 0;
-        push @block, $_;
-    } else {
-        if (/^msgstr/) {
-            $msgstr = 1;
-            $empty = 1;
-        }
-        if (/^#.*fuzzy/) {
-            $fuzzy = 1;
-        }
-        if (/^#~ msgstr/) {
-            $unused = 1;
-        }
-        if ($msgstr && /".+"/) {
-            $empty = 0;
-        }
-        push @block, $_;
-    }
-}
-
-if (@block && !$empty && !$unused) {
-    print @block;
-}
index da117edbd582b1e4e48fe7158acc6e44e9c037b7..b0e2c15d44fb717374e96db775ed761a82587574 100644 (file)
@@ -58,7 +58,7 @@ update-mini-po: $(POTFILE)
          $(MSGMERGE) --no-location --no-fuzzy-matching --sort-output \
            $$lang.po $(POTFILE) | \
          $(SED) $(SED_PO_FIXUP_ARGS) | \
-         $(PERL) $(top_srcdir)/build-aux/minimize-po.pl > \
+         $(RUNUTF8) $(PYTHON) $(top_srcdir)/scripts/minimize-po.py > \
            $(srcdir)/$$lang.mini.po ; \
        done
 
diff --git a/scripts/minimize-po.py b/scripts/minimize-po.py
new file mode 100755 (executable)
index 0000000..d548b42
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2018-2019 Red Hat, Inc.
+#
+# 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
+
+block = []
+msgstr = False
+empty = False
+unused = False
+fuzzy = False
+
+for line in sys.stdin:
+    if line.isspace():
+        if not empty and not unused and not fuzzy:
+            for b in block:
+                print(b, end='')
+
+        block = []
+        msgstr = False
+        fuzzy = False
+        block.append(line)
+    else:
+        if line.startswith("msgstr"):
+            msgstr = True
+            empty = True
+
+        if line[0] == '#' and "fuzzy" in line:
+            fuzzy = True
+        if line.startswith("#~ msgstr"):
+            unused = True
+        if msgstr and re.search(r'".+"', line):
+            empty = False
+
+        block.append(line)
+
+if not empty and not unused and not fuzzy:
+    for b in block:
+        print(b, end='')