[Treepkg-commits] r66 - trunk/recipes/gnupg
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Mon Jun 2 17:58:13 CEST 2008
Author: bh
Date: 2008-06-02 17:58:13 +0200 (Mon, 02 Jun 2008)
New Revision: 66
Modified:
trunk/recipes/gnupg/gnupg2.py
Log:
Extend the gnupg2 recipe so that it extracts the PKITS log.
Modified: trunk/recipes/gnupg/gnupg2.py
===================================================================
--- trunk/recipes/gnupg/gnupg2.py 2008-06-02 15:46:41 UTC (rev 65)
+++ trunk/recipes/gnupg/gnupg2.py 2008-06-02 15:58:13 UTC (rev 66)
@@ -7,5 +7,76 @@
"""Recipe to build gnugp2 from SVN"""
+import os
+import shutil
+import logging
+import re
+
+import treepkg.packager
+import treepkg.util
+
import base
base.define_gnupg_packager("gnupg2")
+
+
+class BinaryPackager(treepkg.packager.BinaryPackager):
+
+ pkits_log = treepkg.packager._fromparent("pkits_log")
+
+ def package(self):
+ self.status.creating_binary_package()
+ treepkg.util.ensure_directory(self.binary_dir)
+ self.create_pkits_workdir()
+ try:
+ logging.info("Building binary package; logging to %r", self.logfile)
+ extra_env=dict(GNUPG_PKITS_DIRECTORY=self.pkits_workdir)
+ self.track.builder.build(self.dsc_file, self.binary_dir, self.logfile,
+ bindmounts=[self.pkits_workdir],
+ extra_packages=["bzip2"],
+ extra_env=extra_env)
+ self.extract_pkits_log()
+ finally:
+ self.remove_pkits_workdir()
+ self.status.binary_package_created()
+
+ def create_pkits_workdir(self):
+ self.pkits_workdir = os.path.join(self.parent.base_dir, "pkits-work")
+ treepkg.util.ensure_directory(self.pkits_workdir)
+ shutil.copy(os.path.join(self.track.checkout_dir, "tests", "pkits",
+ "PKITS_data.tar.bz2"),
+ self.pkits_workdir)
+
+ def remove_pkits_workdir(self):
+ shutil.rmtree(self.pkits_workdir)
+
+ def extract_pkits_log(self):
+ testlog = None
+ for line in open(self.logfile):
+ if re.match("--------- END PKITS LOG ---------", line):
+ break
+ elif re.match("-------- BEGIN PKITS LOG --------", line):
+ testlog = []
+ elif testlog is not None and line[:1] in "0123456789":
+ testlog.append(line)
+ else:
+ logging.info("Could not find PKITS LOG in %s", self.logfile)
+ return
+ treepkg.util.ensure_directory(os.path.dirname(self.pkits_log))
+ outfile = open(self.pkits_log, "w")
+ outfile.writelines(testlog)
+ outfile.close()
+
+
+class RevisionPackager(treepkg.packager.RevisionPackager):
+
+ source_packager_cls = SourcePackager
+ binary_packager_cls = BinaryPackager
+
+ pkits_log = treepkg.packager._filenameproperty("pkits_log.txt",
+ dir_attr="log_dir")
+
+ def list_log_files(self):
+ files = super(RevisionPackager, self).list_log_files()
+ if os.path.exists(self.pkits_log):
+ files.append(("PKITS log", self.pkits_log))
+ return files
More information about the Treepkg-commits
mailing list