annotate recipes/kde/enterprise/branch_3_5/kde_i18n.py @ 578:bccd69dedbe5

shlex.split all config parameters that may contain a command Return the command as list and use @ operator for the variable in cmdexpand
author Bjoern Ricks <bricks@intevation.de>
date Sat, 03 Sep 2011 11:53:12 +0000
parents 57034905ac4c
children
rev   line source
315
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
8 import os
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9 import logging
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import shutil
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 import treepkg.util
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 import treepkg.run as run
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14 from treepkg.cmdexpand import cmdexpand
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 import recipes.kde.enterprise.generic as generic
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19 class SourcePackager(generic.SourcePackager):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 """Creates the debian source package for the i18n files
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 This is quite complicated. The orig.tar.gz file of the debian
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 source package contains one .tar.bz2 file for every language. Those
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 .tar.bz files are the kde-18n-<lang> files released by the KDE
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 project. For now, we only have the German localization in the
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 enterprise source package, so the orig.tar.gz file will have the
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 following contents:
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 kde-i18n-<version>/
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 kde-i18n-<version>/kde-i18n-de-<version>.tar.bz2
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 <version> is the same everywhere.
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35 The kde-i18n-de tarball contains the localization files for the
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 entire KDE project, including KDE-PIM. The SVN enterprise branch
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 only contains the localizations for KDE-PIM, though, so we have to
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 assemble a new .tar.bz2 from an original
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 kde-i18n-de-<version>.tar.bz and the new files from the enterprise
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 branch.
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41 """
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 def unpack_orig_tarball(self):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 orig_tarball = self.track.orig_tarball
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 run.call(cmdexpand("tar xjf $tarball -C $directory",
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 tarball=orig_tarball, directory=self.work_dir))
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 tarbasename = os.path.basename(orig_tarball)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48 splitext = os.path.splitext
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 return os.path.join(self.work_dir,
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 splitext(splitext(tarbasename)[0])[0])
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 def create_i18n_de_tarball(self, pkgbasedir, pkgbaseversion):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53 """Creates a new kde-i18n-de tarball and returns its filename
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 This is the tarball as it would be released by KDE. It is not
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 yet the tarball that will become the .orig.tar.gz for the debian
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 package.
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 """
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 logging.info("Creating kde-i18n-de tarball")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 untarred_dir = self.unpack_orig_tarball()
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61 new_de_dir = os.path.join(pkgbasedir, "new-de")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 de_dir = os.path.join(pkgbasedir, "de")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63 os.rename(de_dir, new_de_dir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 treepkg.util.copytree(untarred_dir, de_dir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 treepkg.util.copytree(new_de_dir, de_dir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 logging.info("Running scripts/autogen.sh for kde-i18n-de tarball")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 run.call(cmdexpand("/bin/sh scripts/autogen.sh de"), cwd=pkgbasedir,
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 suppress_output=True)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 tarballdir = "kde-i18n-de-" + pkgbaseversion
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 os.rename(de_dir, os.path.join(pkgbasedir, tarballdir))
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73 tarball = os.path.join(os.path.dirname(pkgbasedir),
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 tarballdir + ".tar.bz2")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 run.call(cmdexpand("tar cjf $tarball -C $pkgbasedir $tarballdir",
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76 **locals()))
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77 logging.info("Created kde-i18n-de tarball")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 return tarball
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 def prepare_sources_for_tarball(self, pkgbasedir, pkgbaseversion):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81 # We have to reuse the same directory when building the
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 # orig.tar.gz. However, we need to preserve the scripts
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 # sub-directory because it's not needed for the kde-i18n-de
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84 # tarball but for the .orig.tar.gz.
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85 tarball = self.create_i18n_de_tarball(pkgbasedir, pkgbaseversion)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 pkg_scripts_dir = os.path.join(pkgbasedir, "scripts")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 tmp_scripts_dir = os.path.join(self.work_dir, "scripts")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 os.rename(pkg_scripts_dir, tmp_scripts_dir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89 shutil.rmtree(pkgbasedir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90 os.mkdir(pkgbasedir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 os.rename(tmp_scripts_dir, pkg_scripts_dir)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92 os.rename(tarball, os.path.join(pkgbasedir,
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 os.path.basename(tarball)))
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96 class RevisionPackager(generic.RevisionPackager):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98 source_packager_cls = SourcePackager
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 class PackageTrack(generic.PackageTrack):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 revision_packager_cls = RevisionPackager
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105 extra_config_desc = generic.PackageTrack.extra_config_desc \
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 + ["orig_tarball"]
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
107
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
108 def __init__(self, *args, **kw):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109 self.orig_tarball = kw.pop("orig_tarball")
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 super(PackageTrack, self).__init__(*args, **kw)
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112 def init_treepkg(self):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113 super(PackageTrack, self).init_treepkg()
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
114 if not os.path.exists(self.orig_tarball):
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 print ("TODO: The orig_tarball %s still has to be created"
57034905ac4c Copy the enterprise 3.5 packagers to the refactored kde enterprise
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116 % (self.orig_tarball,))
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)