annotate enterprise/kdei18n.py @ 5:5ea8e9b67395

Add a packager for the enterprise branch localizations
author Bernhard Herzog <bh@intevation.de>
date Fri, 09 Mar 2007 12:28:59 +0100
parents
children 574506a022f6
rev   line source
5
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2007 by Intevation GmbH
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8 import os
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 import logging
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import shutil
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import time
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 import treepkg.packager
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 import treepkg.util
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 import treepkg.run as run
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 class SourcePackager(treepkg.packager.SourcePackager):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20 """Creates the debian source package for the i18n files
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22 This is quite complicated. The orig.tar.gz file of the debian
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 source package contains one .tar.bz2 file for every language. Those
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 .tar.bz files are the kde-18n-<lang> files released by the KDE
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 project. For now, we only have the German localization in the
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 enterprise source package, so the orig.tar.gz file will have the
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 following contents:
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 kde-i18n-<version>/
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 kde-i18n-<version>/kde-i18n-de-<version>.tar.bz2
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 <version> is the same everywhere.
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 The kde-i18n-de tarball contains the localization files for the
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 entire KDE project, including KDE-PIM. The SVN enterprise branch
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 only contains the localizations for KDE-PIM, though, so we have to
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 assemble a new .tar.bz2 from an original
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 kde-i18n-de-<version>.tar.bz and the new files from the enterprise
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 branch.
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 """
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42 pkg_basename = "kde-i18n"
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 def determine_package_version(self, directory):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 enterprise_version = (time.strftime("%Y%m%d", time.localtime()) \
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 + "." + str(self.revision))
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 kdepimversion = "3.5.5"
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 version_template = "%(kdepimversion)s.enterprise.0.%(enterprise_version)s"
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 return version_template % locals()
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51 def unpack_orig_tarball(self):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 orig_tarball = self.plant.orig_tarball
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53 run.call(["tar", "xjf", orig_tarball, "-C", self.work_dir])
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 tarbasename = os.path.basename(orig_tarball)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 splitext = os.path.splitext
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 return os.path.join(self.work_dir,
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 splitext(splitext(tarbasename)[0])[0])
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 def create_i18n_de_tarball(self, pkgbasedir, pkgbaseversion):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 """Creates a new kde-i18n-de tarball and returns its filename
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 This is the tarball as it would be released by KDE. It is not
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 yet the tarball that will become the .orig.tar.gz for the debian
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 package.
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 """
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 logging.info("Creating kde-i18n-de tarball")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 untarred_dir = self.unpack_orig_tarball()
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 new_de_dir = os.path.join(pkgbasedir, "new-de")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69 de_dir = os.path.join(pkgbasedir, "de")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 os.rename(de_dir, new_de_dir)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 treepkg.util.copytree(untarred_dir, de_dir)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72 treepkg.util.copytree(new_de_dir, de_dir)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73 logging.info("Running scripts/autogen.sh for kde-i18n-de tarball")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 run.call(["/bin/sh", "scripts/autogen.sh", "de"], cwd=pkgbasedir,
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 suppress_output=True)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77 tarballdir = "kde-i18n-de-" + pkgbaseversion
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 os.rename(de_dir, os.path.join(pkgbasedir, tarballdir))
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 tarball = os.path.join(os.path.dirname(pkgbasedir),
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 tarballdir + ".tar.bz2")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 run.call(["tar", "cjf", tarball, "-C", pkgbasedir, tarballdir])
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 logging.info("Created kde-i18n-de tarball")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84 return tarball
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 def do_package(self):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 pkgbaseversion, pkgbasedir = self.export_sources()
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 tarball = self.create_i18n_de_tarball(pkgbasedir, pkgbaseversion)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90 shutil.rmtree(pkgbasedir)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 os.mkdir(pkgbasedir)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 pkgbasename = self.pkg_basename + "_" + pkgbaseversion
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 origtargz = os.path.join(self.work_dir,
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95 pkgbasename + ".orig.tar.gz")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96 os.rename(tarball, os.path.join(pkgbasedir,
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97 os.path.basename(tarball)))
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98 self.create_tarball(origtargz, self.work_dir,
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99 os.path.basename(pkgbasedir))
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 changemsg = ("Update to SVN enterprise branch rev. %d"
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102 % (self.revision,))
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 self.copy_debian_directory(pkgbasedir, pkgbaseversion,
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104 changemsg)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 self.create_source_package(pkgbasedir, origtargz)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
107 self.move_source_package(pkgbasename)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
108
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 class RevisionPackager(treepkg.packager.RevisionPackager):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112 source_packager_cls = SourcePackager
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
114
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 class AssemblyLine(treepkg.packager.AssemblyLine):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
117 revision_packager_cls = RevisionPackager
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
118
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
119 svn_external_subdirs = ["scripts", "scripts/admin"]
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
120
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
121 extra_config_desc = ["orig_tarball"]
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
122
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
123 def __init__(self, *args, **kw):
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
124 self.orig_tarball = kw.pop("orig_tarball")
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
125 super(AssemblyLine, self).__init__(*args, **kw)
5ea8e9b67395 Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
126
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)