# HG changeset patch # User Bjoern Ricks # Date 1306833951 0 # Node ID 3105488b3eab486adbc2776912a8615ca0970193 # Parent 3a83cb3c650415f7f4c0c4e649044aefa5c6b252 Include Andres changes to build gnupg from git with testing for scratchbox diff -r 3a83cb3c6504 -r 3105488b3eab recipes/gnupg/base.py --- 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.