Mercurial > treepkg
annotate recipes/kde_enterprise_3_5/kde_i18n.py @ 378:41226e427823
Added an option to configure the used builder class from the treepkg.cfg. This
should reduce the need for platform specific recipes.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 21 Jun 2010 13:05:26 +0000 |
parents | 433a49cacefc |
children |
rev | line source |
---|---|
271
12facd1b5f19
Implement tag detection for the KDEPIM enterprise 3.5 packages. This is
Bernhard Herzog <bh@intevation.de>
parents:
132
diff
changeset
|
1 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH |
5
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 |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
16 from treepkg.cmdexpand import cmdexpand |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
17 |
271
12facd1b5f19
Implement tag detection for the KDEPIM enterprise 3.5 packages. This is
Bernhard Herzog <bh@intevation.de>
parents:
132
diff
changeset
|
18 import base |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
19 |
277
4441aff001ac
Use base.BaseSourcePackager for building enterprise 35 kde-i18n and rely
Bernhard Herzog <bh@intevation.de>
parents:
271
diff
changeset
|
20 class SourcePackager(base.BaseSourcePackager): |
5
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 """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
|
23 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
24 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
|
25 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
|
26 .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
|
27 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
|
28 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
|
29 following contents: |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
30 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
31 kde-i18n-<version>/ |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
32 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
|
33 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
34 <version> is the same everywhere. |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
35 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
36 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
|
37 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
|
38 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
|
39 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
|
40 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
|
41 branch. |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
42 """ |
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 pkg_basename = "kde-i18n" |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
45 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
46 def unpack_orig_tarball(self): |
53
74cd21b6400b
rename some variables from pkg_track to track
Bernhard Herzog <bh@intevation.de>
parents:
52
diff
changeset
|
47 orig_tarball = self.track.orig_tarball |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
48 run.call(cmdexpand("tar xjf $tarball -C $directory", |
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
49 tarball=orig_tarball, directory=self.work_dir)) |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
50 tarbasename = os.path.basename(orig_tarball) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
51 splitext = os.path.splitext |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
52 return os.path.join(self.work_dir, |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
53 splitext(splitext(tarbasename)[0])[0]) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
54 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
55 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
|
56 """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
|
57 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
58 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
|
59 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
|
60 package. |
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 logging.info("Creating kde-i18n-de tarball") |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
63 untarred_dir = self.unpack_orig_tarball() |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
64 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
|
65 de_dir = os.path.join(pkgbasedir, "de") |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
66 os.rename(de_dir, new_de_dir) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
67 treepkg.util.copytree(untarred_dir, de_dir) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
68 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
|
69 logging.info("Running scripts/autogen.sh for kde-i18n-de tarball") |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
70 run.call(cmdexpand("/bin/sh scripts/autogen.sh de"), cwd=pkgbasedir, |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
71 suppress_output=True) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
72 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
73 tarballdir = "kde-i18n-de-" + pkgbaseversion |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
74 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
|
75 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
76 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
|
77 tarballdir + ".tar.bz2") |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
78 run.call(cmdexpand("tar cjf $tarball -C $pkgbasedir $tarballdir", |
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
79 **locals())) |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
80 logging.info("Created kde-i18n-de tarball") |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
81 return tarball |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
82 |
277
4441aff001ac
Use base.BaseSourcePackager for building enterprise 35 kde-i18n and rely
Bernhard Herzog <bh@intevation.de>
parents:
271
diff
changeset
|
83 def prepare_sources_for_tarball(self, pkgbasedir, pkgbaseversion): |
28
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
84 # We have to reuse the same directory when building the |
277
4441aff001ac
Use base.BaseSourcePackager for building enterprise 35 kde-i18n and rely
Bernhard Herzog <bh@intevation.de>
parents:
271
diff
changeset
|
85 # orig.tar.gz. However, we need to preserve the scripts |
28
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
86 # sub-directory because it's not needed for the kde-i18n-de |
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
87 # tarball but for the .orig.tar.gz. |
277
4441aff001ac
Use base.BaseSourcePackager for building enterprise 35 kde-i18n and rely
Bernhard Herzog <bh@intevation.de>
parents:
271
diff
changeset
|
88 tarball = self.create_i18n_de_tarball(pkgbasedir, pkgbaseversion) |
28
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
89 pkg_scripts_dir = os.path.join(pkgbasedir, "scripts") |
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
90 tmp_scripts_dir = os.path.join(self.work_dir, "scripts") |
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
91 os.rename(pkg_scripts_dir, tmp_scripts_dir) |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
92 shutil.rmtree(pkgbasedir) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
93 os.mkdir(pkgbasedir) |
28
f7f89548a2a6
kdei18n: put the scripts subdirectory into the .orig.tar.gz
Bernhard Herzog <bh@intevation.de>
parents:
9
diff
changeset
|
94 os.rename(tmp_scripts_dir, pkg_scripts_dir) |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
95 os.rename(tarball, os.path.join(pkgbasedir, |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
96 os.path.basename(tarball))) |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
97 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
98 |
284
860bb7269caa
kdepim 3.5 recipes: Use the new BaseRevisionPackager
Bernhard Herzog <bh@intevation.de>
parents:
277
diff
changeset
|
99 class RevisionPackager(base.BaseRevisionPackager): |
5
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 source_packager_cls = SourcePackager |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
102 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
103 |
271
12facd1b5f19
Implement tag detection for the KDEPIM enterprise 3.5 packages. This is
Bernhard Herzog <bh@intevation.de>
parents:
132
diff
changeset
|
104 class PackageTrack(base.BasePackageTrack): |
5
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 revision_packager_cls = RevisionPackager |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
107 |
101
fb5332a286cf
Add documentation/kdepim as SVN externals directory to the enterprise i18n
Bernhard Herzog <bh@intevation.de>
parents:
55
diff
changeset
|
108 svn_external_subdirs = ["scripts", "scripts/admin", "documentation/kdepim"] |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
109 |
271
12facd1b5f19
Implement tag detection for the KDEPIM enterprise 3.5 packages. This is
Bernhard Herzog <bh@intevation.de>
parents:
132
diff
changeset
|
110 extra_config_desc = base.BasePackageTrack.extra_config_desc \ |
12facd1b5f19
Implement tag detection for the KDEPIM enterprise 3.5 packages. This is
Bernhard Herzog <bh@intevation.de>
parents:
132
diff
changeset
|
111 + ["orig_tarball"] |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
112 |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
113 def __init__(self, *args, **kw): |
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
114 self.orig_tarball = kw.pop("orig_tarball") |
52
78cf5f6778ec
Rename 'packagel ine' -> 'package track'
Bernhard Herzog <bh@intevation.de>
parents:
28
diff
changeset
|
115 super(PackageTrack, self).__init__(*args, **kw) |
5
5ea8e9b67395
Add a packager for the enterprise branch localizations
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
116 |
106
66cbfc772f84
Add bin/inittreepkg.py, a script to automate some of the installation
Bernhard Herzog <bh@intevation.de>
parents:
101
diff
changeset
|
117 def init_treepkg(self): |
66cbfc772f84
Add bin/inittreepkg.py, a script to automate some of the installation
Bernhard Herzog <bh@intevation.de>
parents:
101
diff
changeset
|
118 super(PackageTrack, self).init_treepkg() |
66cbfc772f84
Add bin/inittreepkg.py, a script to automate some of the installation
Bernhard Herzog <bh@intevation.de>
parents:
101
diff
changeset
|
119 if not os.path.exists(self.orig_tarball): |
66cbfc772f84
Add bin/inittreepkg.py, a script to automate some of the installation
Bernhard Herzog <bh@intevation.de>
parents:
101
diff
changeset
|
120 print ("TODO: The orig_tarball %s still has to be created" |
66cbfc772f84
Add bin/inittreepkg.py, a script to automate some of the installation
Bernhard Herzog <bh@intevation.de>
parents:
101
diff
changeset
|
121 % (self.orig_tarball,)) |