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,))
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)