annotate recipes/gnupg/gnupg2.py @ 386:ffa86312ee81 treepkg-status

added classed for treepkg status xml generation
author Bjoern Ricks <bricks@intevation.de>
date Wed, 07 Jul 2010 15:40: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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)