Mercurial > treepkg
annotate recipes/gnupg/gnupg2.py @ 274:2676abfc0e1d
Refactoring: Implement do_package in treepkg.packager.SourcePackager.
The actual implementation in the derived classes is almost identical in
all cases so it's better to have as much of the implementation in the
base class. The update_version_numbers method is not called directly by
the base class code so is removed from the base class. OTOH,
prepare_sources_for_tarball has been added as a more general variant of
update_version_numbers that is actually called by the default
implementation of do_package.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Thu, 07 May 2009 15:19:15 +0000 |
parents | e4512f045999 |
children |
rev | line source |
---|---|
134
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
1 # Copyright (C) 2008 by Intevation GmbH |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
2 # Authors: |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
3 # Bernhard Herzog <bh@intevation.de> |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
4 # |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
5 # This program is free software under the GPL (>=v2) |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
6 # Read the file COPYING coming with the software for details. |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
7 |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
8 """Recipe to build gnugp2 from SVN""" |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
9 |
141
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
10 import os |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
11 import shutil |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
12 import logging |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
13 import re |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
14 |
156
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
15 from genshi.template import TemplateLoader |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
16 |
141
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
17 import treepkg.packager |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
18 import treepkg.util |
156
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
19 import treepkg.report |
141
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
20 |
134
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
21 import base |
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff
changeset
|
22 base.define_gnupg_packager("gnupg2") |
141
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
23 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
24 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
25 class BinaryPackager(treepkg.packager.BinaryPackager): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
26 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
27 pkits_log = treepkg.packager._fromparent("pkits_log") |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
28 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
29 def package(self): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
30 self.status.creating_binary_package() |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
31 treepkg.util.ensure_directory(self.binary_dir) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
32 self.create_pkits_workdir() |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
33 try: |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
34 logging.info("Building binary package; logging to %r", self.logfile) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
35 extra_env=dict(GNUPG_PKITS_DIRECTORY=self.pkits_workdir) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
36 self.track.builder.build(self.dsc_file, self.binary_dir, self.logfile, |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
37 bindmounts=[self.pkits_workdir], |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
38 extra_packages=["bzip2"], |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
39 extra_env=extra_env) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
40 self.extract_pkits_log() |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
41 finally: |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
42 self.remove_pkits_workdir() |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
43 self.status.binary_package_created() |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
44 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
45 def create_pkits_workdir(self): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
46 self.pkits_workdir = os.path.join(self.parent.base_dir, "pkits-work") |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
47 treepkg.util.ensure_directory(self.pkits_workdir) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
48 shutil.copy(os.path.join(self.track.checkout_dir, "tests", "pkits", |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
49 "PKITS_data.tar.bz2"), |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
50 self.pkits_workdir) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
51 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
52 def remove_pkits_workdir(self): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
53 shutil.rmtree(self.pkits_workdir) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
54 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
55 def extract_pkits_log(self): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
56 testlog = None |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
57 for line in open(self.logfile): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
58 if re.match("--------- END PKITS LOG ---------", line): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
59 break |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
60 elif re.match("-------- BEGIN PKITS LOG --------", line): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
61 testlog = [] |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
62 elif testlog is not None and line[:1] in "0123456789": |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
63 testlog.append(line) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
64 else: |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
65 logging.info("Could not find PKITS LOG in %s", self.logfile) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
66 return |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
67 treepkg.util.ensure_directory(os.path.dirname(self.pkits_log)) |
156
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
68 treepkg.util.writefile(self.pkits_log, |
157
13de20d2db9f
gnupg2 recipe: create the pkits log with 0644 permissions
Bernhard Herzog <bh@intevation.de>
parents:
156
diff
changeset
|
69 self.htmlize_pkits_log(testlog), 0644) |
156
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
70 |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
71 def htmlize_pkits_log(self, raw_lines): |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
72 loader = TemplateLoader([os.path.dirname(__file__)]) |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
73 template = loader.load("pkits.html") |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
74 pkits = treepkg.report.struct(revision=self.parent.revision, |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
75 lines=raw_lines) |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
76 stream = template.generate(pkits=pkits) |
27e78096a3fe
gnupg2 recipe: format the PKITS log as a HTML table
Bernhard Herzog <bh@intevation.de>
parents:
141
diff
changeset
|
77 return stream.render('html') |
141
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
78 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
79 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
80 class RevisionPackager(treepkg.packager.RevisionPackager): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
81 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
82 source_packager_cls = SourcePackager |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
83 binary_packager_cls = BinaryPackager |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
84 |
175
e4512f045999
Adapt gnugp2 recipe to the filenameproperty renaming
Bernhard Herzog <bh@intevation.de>
parents:
157
diff
changeset
|
85 pkits_log = treepkg.util.filenameproperty("pkits_log.html", |
e4512f045999
Adapt gnugp2 recipe to the filenameproperty renaming
Bernhard Herzog <bh@intevation.de>
parents:
157
diff
changeset
|
86 dir_attr="log_dir") |
141
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
87 |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
88 def list_log_files(self): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
89 files = super(RevisionPackager, self).list_log_files() |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
90 if os.path.exists(self.pkits_log): |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
91 files.append(("PKITS log", self.pkits_log)) |
2c942b75b98b
Extend the gnupg2 recipe so that it extracts the PKITS log.
Bernhard Herzog <bh@intevation.de>
parents:
134
diff
changeset
|
92 return files |