From b2c2a3ae91e4fefa69aeb384a9cdb24c2a43be7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 30 Aug 2019 13:22:54 +0100 Subject: [PATCH] build-aux: rewrite po file minimizer in Python MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Daniel P. Berrangé --- Makefile.am | 2 +- build-aux/minimize-po.pl | 37 -------------------------- po/Makefile.am | 2 +- scripts/minimize-po.py | 56 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 39 deletions(-) delete mode 100755 build-aux/minimize-po.pl create mode 100755 scripts/minimize-po.py diff --git a/Makefile.am b/Makefile.am index 9ec010226c..f758745d91 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 index 497533a836..0000000000 --- a/build-aux/minimize-po.pl +++ /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; -} diff --git a/po/Makefile.am b/po/Makefile.am index da117edbd5..b0e2c15d44 100644 --- a/po/Makefile.am +++ b/po/Makefile.am @@ -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 index 0000000000..d548b427e9 --- /dev/null +++ b/scripts/minimize-po.py @@ -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 +# . + +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='')