From 0a121747e3e13e7d4f0585e5daca667567a61f62 Mon Sep 17 00:00:00 2001 From: Metin Akdere Date: Tue, 31 May 2011 05:10:58 +0000 Subject: [PATCH] l10n: Switch from pygettext to xgettext Also add pisi.xml mimetype file. Remove scripts/update-po.sh file. --- pisi.xml.in | 7 +++++ scripts/update-po.sh | 13 -------- setup.py | 74 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 80 insertions(+), 14 deletions(-) create mode 100644 pisi.xml.in delete mode 100755 scripts/update-po.sh diff --git a/pisi.xml.in b/pisi.xml.in new file mode 100644 index 00000000..53c68604 --- /dev/null +++ b/pisi.xml.in @@ -0,0 +1,7 @@ + + + + <_comment>PiSi package + + + diff --git a/scripts/update-po.sh b/scripts/update-po.sh deleted file mode 100755 index 2dffdd3c..00000000 --- a/scripts/update-po.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -PYTHON_VER=`python -c "import sys; print '%d.%d' % sys.version_info[:2]"` -OPTPARSE_PY=/usr/lib/python$PYTHON_VER/optparse.py - -find pisi -iname '*.py' | grep -v pisi/cli/commands.py > exclude -echo "$OPTPARSE_PY" >> exclude -python scripts/pygettext.py -D -X exclude -o po/pisi.pot pisi pisi-cli $OPTPARSE_PY -for lang in po/*.po -do - msgmerge --update --no-wrap --sort-by-file $lang po/pisi.pot -done -rm exclude diff --git a/setup.py b/setup.py index 9d20d1d6..0d5b2c92 100755 --- a/setup.py +++ b/setup.py @@ -16,12 +16,81 @@ import shutil import glob import sys import inspect +import tempfile from distutils.core import setup +from distutils.command.build import build from distutils.command.install import install sys.path.insert(0, '.') import pisi +IN_FILES = ("pisi.xml.in",) +PROJECT = "pisi" +MIMEFILE_DIR = "usr/share/mime/packages" + + +class Build(build): + def run(self): + build.run(self) + + self.mkpath(self.build_base) + + for in_file in IN_FILES: + name, ext = os.path.splitext(in_file) + self.spawn(["intltool-merge", "-x", "po", in_file, os.path.join(self.build_base, name)]) + + +class BuildPo(build): + def run(self): + build.run(self) + self.build_po() + + def build_po(self): + import optparse + files = tempfile.mkstemp()[1] + filelist = [] + + # Include optparse module path to translate + optparse_path = os.path.abspath(optparse.__file__).rstrip("co") + + # Collect headers for mimetype files + for filename in IN_FILES: + os.system("intltool-extract --type=gettext/xml %s" % filename) + + for root,dirs,filenames in os.walk("pisi"): + for filename in filenames: + if filename.endswith(".py"): + filelist.append(os.path.join(root, filename)) + + filelist.extend(["pisi-cli", "pisi.xml.in.h", optparse_path]) + filelist.sort() + with open(files, "w") as _files: + _files.write("\n".join(filelist)) + + # Generate POT file + os.system("xgettext -L Python \ + --default-domain=%s \ + --keyword=_ \ + --keyword=N_ \ + --files-from=%s \ + -o po/%s.pot" % (PROJECT, files, PROJECT)) + + # Update PO files + for item in glob.glob1("po", "*.po"): + print "Updating .. ", item + os.system("msgmerge --update --no-wrap --sort-by-file po/%s po/%s.pot" % (item, PROJECT)) + + # Cleanup + os.unlink(files) + for f in filelist: + if not f.endswith(".h"): + continue + try: + os.unlink(f) + except OSError: + pass + + class Install(install): def run(self): install.run(self) @@ -84,6 +153,7 @@ class Install(install): pisiconf.write('\n') + setup(name="pisi", version= pisi.__version__, description="PiSi (Packages Installed Successfully as Intended)", @@ -95,7 +165,9 @@ setup(name="pisi", package_dir = {'': ''}, packages = ['pisi', 'pisi.cli', 'pisi.operations', 'pisi.actionsapi', 'pisi.pxml', 'pisi.scenarioapi', 'pisi.db'], scripts = ['pisi-cli', 'scripts/lspisi', 'scripts/unpisi', 'scripts/check-newconfigs.py', 'scripts/revdep-rebuild'], - cmdclass = {'install' : Install} + cmdclass = {'build' : Build, + 'build_po' : BuildPo, + 'install' : Install} ) # the below stuff is really nice but we already have a version