changeset 555:3105488b3eab

Include Andres changes to build gnupg from git with testing for scratchbox
author Bjoern Ricks <bricks@intevation.de>
date Tue, 31 May 2011 09:25:51 +0000
parents 3a83cb3c6504
children 10c0492da014
files recipes/gnupg/base.py
diffstat 1 files changed, 46 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/recipes/gnupg/base.py	Tue May 31 08:58:13 2011 +0000
+++ b/recipes/gnupg/base.py	Tue May 31 09:25:51 2011 +0000
@@ -11,6 +11,7 @@
 import re
 import inspect
 import new
+import shutil
 
 import treepkg.util
 import treepkg.packager
@@ -43,8 +44,8 @@
         raise RuntimeError("Could not determine the version number from %s"
                            % filename)
 
-    def determine_package_version(self, directory):
-        return "%s+svn%s" % (self.orig_source_version(directory), self.revision)
+    def determine_upstream_version(self, directory=None):
+        return self.orig_source_version(directory) 
 
     def do_package(self):
         pkgbaseversion, pkgbasedir = self.export_sources()
@@ -57,9 +58,9 @@
         # file.  autogen.sh normally determines it from svn, but here it
         # ran on a copy that did not include the .svn subdirectories and
         # thus could not find the svn revision.
-        treepkg.util.replace_in_file(os.path.join(pkgbasedir, "configure"),
-                                     re.escape(orig_version) + "-svn0",
-                                     orig_version + "-svn%s" % self.revision)
+        #treepkg.util.replace_in_file(os.path.join(pkgbasedir, "configure"),
+        #                             re.escape(orig_version) + "-git0",
+        #                             orig_version + "-git%s" % self.revision)
 
         pkgbasename = self.pkg_basename + "_" + pkgbaseversion
         origtargz = os.path.join(self.work_dir,
@@ -67,7 +68,7 @@
         self.create_tarball(origtargz, self.work_dir,
                             os.path.basename(pkgbasedir))
 
-        changemsg = ("Update to rev. %s" % (self.revision,))
+        changemsg = ("Update to git rev. %s" % (self.revision,))
         self.copy_debian_directory(pkgbasedir, pkgbaseversion,
                                    changemsg)
 
@@ -92,15 +93,20 @@
 
     createtarball_script = """\
 #! /bin/bash
-set -e
+set -e 
 
-apt-get --assume-yes --force-yes install %(builddeps)s
-
+# Check if we are in a scratchbox
+if [ -n "${SBOX_UNAME_MACHINE+x}" ]; then
+    fakeroot apt-get --assume-yes --force-yes install %(builddeps)s      
+else
+    apt-get --assume-yes --force-yes install %(builddeps)s
+fi
+export AUTOMAKE_SUFFIX=-1.10
 # copy the source tree to a directory that's under pbuilder control so
 # that it gets removed along with the build environment.  Otherwise we
 # end up with a directory containing files that cannot be removed by
 # treepkg
-workdir=/tmp/work
+workdir=/tmp/treepkg_gpg_work
 cp -a %(basedir)s $workdir
 cd $workdir
 
@@ -111,13 +117,33 @@
 sed -e '/AUTOMAKE_OPTIONS/ s/[a-zA-Z0-9-]*dist[a-zA-Z0-9-]*//g' \
     Makefile.am.orig > Makefile.am
 
+# Run Autogen
 ./autogen.sh
+
+# Tweak configure to contain svn revision numbers
+cp configure configure.orig
+sed -e "s/-svn0/-svn%(svn_revision)s/g" configure.orig > configure
+
+echo ./configure --enable-maintainer-mode $add_cfg_opts
 ./configure --enable-maintainer-mode
 
 # revert autoconf changes, so that the original Makefile.am ends up in
 # the tarball
 mv Makefile.am.orig Makefile.am
 
+# Evil hack for a fig2dev bug in scratchbox
+fakefigs="gnupg-card-architecture libgcrypt-modules fips-fsm"
+
+if [ -n "${SBOX_UNAME_MACHINE+x}" ]; then
+    for i in $fakefigs; do
+        if [ -f doc/$i.fig ]; then
+            touch doc/$i.eps
+            touch doc/$i.png
+            touch doc/$i.pdf
+        fi
+    done
+fi
+
 %(make_dist_command)s
 
 mv *.tar.gz %(origtargz)s
@@ -147,22 +173,25 @@
         self.pkgbasename = self.pkg_basename + "_" + self.pkgbaseversion
         self.origtargz = os.path.join(self.work_dir,
                                       self.pkgbasename + ".orig.tar.gz")
-
         script = (self.createtarball_script
                   % dict(builddeps=" ".join(self.track.dependencies_required()
                                             | self.tarball_dependencies),
                          basedir=copied_working_copy,
                          origtargz=self.origtargz,
+                         svn_revision=self.revision,
                          make_dist_command=self.make_dist_command))
         script_name = os.path.join(self.work_dir, "createtarball")
         treepkg.util.writefile(script_name, script, 0755)
 
         treepkg.util.ensure_directory(self.src_dir)
         treepkg.util.ensure_directory(self.log_dir)
-        self.builder.run_script([script_name],
-                                      logfile=os.path.join(self.log_dir,
-                                                           "tarball_log.txt"),
-                                      bindmounts=[self.work_dir, self.src_dir])
+        try:
+            self.builder.run_script([script_name],
+                                    logfile=os.path.join(self.log_dir, 
+                                                         "tarball_log.txt"),
+                                    bindmounts=[self.work_dir, self.src_dir])
+        finally:
+            shutil.rmtree("/tmp/treepkg_gpg_work", ignore_errors=True)
 
     def create_orig_dir(self):
         """Unpacks the tarball created by create_original_tarball into work_dir
@@ -185,7 +214,7 @@
         self.create_original_tarball()
         orig_dir = self.create_orig_dir()
 
-        changemsg = ("Update to rev. %s" % (self.revision,))
+        changemsg = ("Update to git rev. %s" % (self.revision,))
         self.copy_debian_directory(orig_dir, self.pkgbaseversion, changemsg)
 
         self.create_source_package(orig_dir, self.origtargz)
@@ -194,7 +223,7 @@
 
 def define_gnupg_packager(pkg_basename,
                           tarball_dependencies=("autoconf", "automake",
-                                                "texinfo", "subversion"),
+                                                "texinfo"),
                           make_dist_command=None):
     """Create a SourcePackager for a GnuPG package in the caller's globals().
     This is a helper function for the modules in the recipe.gnupg package.
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)