comparison recipes/kde/enterprise/branch_3_5/kde_i18n.py @ 315:57034905ac4c

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