Mercurial > treepkg
annotate recipes/kde_enterprise_3_5/kde_i18n.py @ 310:26c15a0f0e52
When stopping because of an error, do not raise the exception again as
it leads to confusing double tracebacks in the log. Instead, simply log
the reason for the stopping and stop in the same way a stop instruction
is handled.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Wed, 02 Dec 2009 14:46:37 +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,)) |