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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)