Blob Blame History Raw
diff --git a/setup.py b/setup.py
index 52f1ea8..27a1c5a 100755
--- a/setup.py
+++ b/setup.py
@@ -23,17 +23,29 @@ from distutils.command.sdist import sdist
 from distutils.command.build import build
 from unittest import TextTestRunner, TestLoader
 
-scripts = ["virt-install", "virt-clone", "virt-image", "virt-convert"]
-packages = ['virtinst', 'virtconv', 'virtconv.parsers']
-config_files = ["virtinst/_config.py", "virtconv/_config.py"]
-datafiles = [('share/man/man1', ['man/en/virt-install.1',
-                                 'man/en/virt-clone.1',
-                                 'man/en/virt-image.1',
-                                 'man/en/virt-convert.1']),
-             ('share/man/man5', ['man/en/virt-image.5'])]
-
 VERSION = "0.600.0"
 
+# translation installing
+def _build_po_list():
+    ret = {}
+    for filename in glob.glob(os.path.join(os.getcwd(), 'po', '*.po')):
+        filename = os.path.basename(filename)
+        lang = os.path.basename(filename)[0:len(filename) - 3]
+        langdir = os.path.join("build", "mo", lang, "LC_MESSAGES")
+
+        newname = os.path.join(langdir, "virtinst.mo")
+        ret[lang] = (filename, newname)
+    return ret
+
+def _build_lang_data():
+    ret = []
+    for lang, (ignore, newname) in _build_po_list().items():
+        targetpath = os.path.join("share", "locale", lang, "LC_MESSAGES")
+        ret.append((targetpath, [newname]))
+    return ret
+
+# Config file building
+config_files = ["virtinst/_config.py", "virtconv/_config.py"]
 config_template = """
 __version__ = "%(VERSION)s"
 __version_info__ = tuple([ int(num) for num in __version__.split('.')])
@@ -312,30 +324,30 @@ class mybuild(build):
             "VERSION" : VERSION,
             "RHEL6DEFAULTS" : self.rhel6defaults,
         }
+
         config_data = config_template % config_opts
         print "Version              : %s" % VERSION
         print "RHEL6 defaults       : %s" % bool(self.rhel6defaults)
 
         for f in config_files:
+            if os.path.exists(f):
+                origconfig = file(f).read()
+                if origconfig == config_data:
+                    continue
+
             print "Generating %s" % f
             fd = open(f, "w")
             fd.write(config_data)
             fd.close()
 
-        for filename in glob.glob(os.path.join(os.getcwd(), 'po', '*.po')):
-            filename = os.path.basename(filename)
-            lang = os.path.basename(filename)[0:len(filename) - 3]
-            langdir = os.path.join("build", "mo", lang, "LC_MESSAGES")
+        for filename, newname in _build_po_list().values():
+            langdir = os.path.dirname(newname)
             if not os.path.exists(langdir):
                 os.makedirs(langdir)
 
-            newname = os.path.join(langdir, "virtinst.mo")
             print "Formatting %s to %s" % (filename, newname)
             os.system("msgfmt po/%s -o %s" % (filename, newname))
 
-            targetpath = os.path.join("share", "locale", lang, "LC_MESSAGES")
-            self.distribution.data_files.append((targetpath, (newname,)))
-
         build.run(self)
 
 setup(
@@ -348,8 +360,18 @@ setup(
     url='http://virt-manager.org',
     package_dir={'virtinst': 'virtinst'},
     scripts=["virt-install", "virt-clone", "virt-image", "virt-convert"],
-    packages=packages,
-    data_files=datafiles,
+    packages=['virtinst', 'virtconv', 'virtconv.parsers'],
+
+    data_files=[
+        ('share/man/man1', [
+            'man/en/virt-install.1',
+            'man/en/virt-clone.1',
+            'man/en/virt-image.1',
+            'man/en/virt-convert.1']),
+        ('share/man/man5', [
+            'man/en/virt-image.5']),
+    ] + _build_lang_data(),
+
     cmdclass={
         'test': TestCommand,
         'test_urls' : TestURLFetch,
@@ -361,5 +383,5 @@ setup(
         'refresh_translations': refresh_translations,
 
         'build': mybuild,
-    }
+    },
 )