Mercurial > treepkg
annotate recipes/gnupg/gnupg2.py @ 312:2d6915bce473
Rework the packager mainloop. it's a bit simpler now and stopping should
be more reliable.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Wed, 02 Dec 2009 16:31:48 +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 |