annotate recipes/gnupg/base.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 98ffe5f3863b
children f5282057838a
rev   line source
134
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2007, 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 """Base classes for all gnupg packagers"""
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import os
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
11 import re
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 import inspect
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 import new
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
15 import treepkg.util
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 import treepkg.packager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17 import treepkg.run as run
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
18 from treepkg.cmdexpand import cmdexpand
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21 class BaseSourcePackager(treepkg.packager.SourcePackager):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
22
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23 def orig_source_version(self, directory):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 """Determines the version from the configure.ac file in directory"""
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
25 filename = os.path.join(directory, "configure.ac")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 for line in open(filename):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28 # Matches lines like
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 # m4_define(my_version, [1.1.7])
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
30 # used by most of the gnupg packages
197
bd887d02068a Make the version detection for the gnupg recipes more tolerant to deal
Bernhard Herzog <bh@intevation.de>
parents: 181
diff changeset
31 match = re.match(r"m4_define\(\[?my_version\]?, \[([^]]+)\]\)",
134
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32 line)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
33 if match:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
34 return match.group(1)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
36 # Matches lines like.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
37 # AC_INIT(pinentry, 0.7.6-cvs, [gnupg-devel@gnupg.org])
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
38 # pinentry is the GnuPG package that actually needs this
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
39 match = re.match(r"AC_INIT\([a-zA-Z_]+, ([0-9.]+)", line)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
40 if match:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
41 return match.group(1)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
42
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 raise RuntimeError("Could not determine the version number from %s"
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
44 % filename)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46 def determine_package_version(self, directory):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 return "%s+svn%d" % (self.orig_source_version(directory), self.revision)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
48
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 def do_package(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 pkgbaseversion, pkgbasedir = self.export_sources()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
52 run.call(cmdexpand("/bin/sh autogen.sh"), cwd=pkgbasedir,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
53 suppress_output=True)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
54 orig_version = self.orig_source_version(pkgbasedir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
56 # patch the version number in the newly generated configure
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57 # file. autogen.sh normally determines it from svn, but here it
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 # ran on a copy that did not include the .svn subdirectories and
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 # thus could not find the svn revision.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
60 treepkg.util.replace_in_file(os.path.join(pkgbasedir, "configure"),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61 re.escape(orig_version) + "-svn0",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62 orig_version + "-svn%d" % self.revision)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
63
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 pkgbasename = self.pkg_basename + "_" + pkgbaseversion
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65 origtargz = os.path.join(self.work_dir,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 pkgbasename + ".orig.tar.gz")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 self.create_tarball(origtargz, self.work_dir,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 os.path.basename(pkgbasedir))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
69
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
70 changemsg = ("Update to SVN rev. %d" % (self.revision,))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
71 self.copy_debian_directory(pkgbasedir, pkgbaseversion,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
72 changemsg)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
73
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
74 self.create_source_package(pkgbasedir, origtargz)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
75 self.move_source_package(pkgbasename)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
76
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
77
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
78 class SmartSourcePackager(BaseSourcePackager):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
79
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
80 """SourcePackager that uses pbuilder to create the source tarball.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
81
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
82 We try to create source tarballs that are as close to the tarballs
206
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
83 created by the upstream maintainers as possible. For the gnupg
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
84 software this means we need to run 'make dist' in a configured SVN
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
85 working copy with some additional software installed like autoconf
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
86 and texinfo. We want to avoid running code from a working copy
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
87 outside of the pbuilder environment and having to install recipe
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
88 specific additional software packages in the treepkg host system.
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
89 Therefore we create the source tarball using 'pbuilder execute' with
98ffe5f3863b Fix doc-string
Bernhard Herzog <bh@intevation.de>
parents: 197
diff changeset
90 a script.
134
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
91 """
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
92
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 createtarball_script = """\
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 #! /bin/bash
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95 set -e
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
97 apt-get --assume-yes --force-yes install %(builddeps)s
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
99 # copy the source tree to a directory that's under pbuilder control so
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
100 # that it gets removed along with the build environment. Otherwise we
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
101 # end up with a directory containing files that cannot be removed by
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102 # treepkg
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 workdir=/tmp/work
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104 cp -a %(basedir)s $workdir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105 cd $workdir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
107 # tweak autoconf settings so that make dist produces a tar.gz, not a
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
108 # tar.bz2. Removing all options whose names contain 'dist' should
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109 # achieve that.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 cp Makefile.am Makefile.am.orig
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
111 sed -e '/AUTOMAKE_OPTIONS/ s/[a-zA-Z0-9-]*dist[a-zA-Z0-9-]*//g' \
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112 Makefile.am.orig > Makefile.am
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
114 ./autogen.sh
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115 ./configure --enable-maintainer-mode
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
117 # revert autoconf changes, so that the original Makefile.am ends up in
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
118 # the tarball
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
119 mv Makefile.am.orig Makefile.am
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
120
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
121 %(make_dist_command)s
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
122
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
123 mv *.tar.gz %(origtargz)s
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
124 """
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
125
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
126 make_dist_command = "make dist"
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
127
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
128 def __init__(self, *args):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
129 super(SmartSourcePackager, self).__init__(*args)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
130 self.pkgbasename = None
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
131 self.pkgbaseversion = None
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
132 self.origtargz = None
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
133
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
134 def copy_workingcopy(self, dest):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
135 treepkg.util.copytree(self.track.checkout_dir, dest)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
136
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
137 def create_original_tarball(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
138 copied_working_copy = os.path.join(self.work_dir, "copied_working_copy")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
139 self.copy_workingcopy(copied_working_copy)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
140
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
141 self.pkgbaseversion = \
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
142 self.determine_package_version(copied_working_copy)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
143 self.pkgbasename = self.pkg_basename + "_" + self.pkgbaseversion
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
144 self.origtargz = os.path.join(self.work_dir,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
145 self.pkgbasename + ".orig.tar.gz")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
146
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
147 script = (self.createtarball_script
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
148 % dict(builddeps=" ".join(self.track.dependencies_required()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
149 | self.tarball_dependencies),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
150 basedir=copied_working_copy,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
151 origtargz=self.origtargz,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
152 make_dist_command=self.make_dist_command))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
153 script_name = os.path.join(self.work_dir, "createtarball")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
154 treepkg.util.writefile(script_name, script, 0755)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
155
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
156 treepkg.util.ensure_directory(self.src_dir)
137
93fcd0b9e82c In the gnupg SmartSourcePackager, put the tarball creation log into the log_dir.
Bernhard Herzog <bh@intevation.de>
parents: 134
diff changeset
157 treepkg.util.ensure_directory(self.log_dir)
181
81585486281b Extend the PBuilder.run_script method so that the script can be called
Bernhard Herzog <bh@intevation.de>
parents: 137
diff changeset
158 self.track.builder.run_script([script_name],
137
93fcd0b9e82c In the gnupg SmartSourcePackager, put the tarball creation log into the log_dir.
Bernhard Herzog <bh@intevation.de>
parents: 134
diff changeset
159 logfile=os.path.join(self.log_dir,
93fcd0b9e82c In the gnupg SmartSourcePackager, put the tarball creation log into the log_dir.
Bernhard Herzog <bh@intevation.de>
parents: 134
diff changeset
160 "tarball_log.txt"),
134
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
161 bindmounts=[self.work_dir, self.src_dir])
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
162
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
163 def create_orig_dir(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
164 """Unpacks the tarball created by create_original_tarball into work_dir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
165 """
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
166 unpack_dir = os.path.join(self.work_dir, "unpack")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
167 treepkg.util.ensure_directory(unpack_dir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
168 run.call(cmdexpand("tar xzf $origtargz -C $unpack_dir",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
169 unpack_dir=unpack_dir, origtargz=self.origtargz))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
170 unpacked_files = treepkg.util.listdir_abs(unpack_dir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
171 if len(unpacked_files) != 1:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
172 raise RuntimeError("%s should have extracted to a single directory",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
173 origtargz)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
174 unpacked_dir = unpacked_files[0]
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
175
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
176 orig_dir = os.path.join(self.work_dir, os.path.basename(unpacked_dir))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
177 os.rename(unpacked_dir, orig_dir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
178 return orig_dir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
179
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
180 def do_package(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
181 self.create_original_tarball()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
182 orig_dir = self.create_orig_dir()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
183
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
184 changemsg = ("Update to SVN rev. %d" % (self.revision,))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
185 self.copy_debian_directory(orig_dir, self.pkgbaseversion, changemsg)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
186
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
187 self.create_source_package(orig_dir, self.origtargz)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
188 self.move_source_package(self.pkgbasename)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
189
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
190
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
191 def define_gnupg_packager(pkg_basename,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
192 tarball_dependencies=("autoconf", "automake",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
193 "texinfo", "subversion"),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
194 make_dist_command=None):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
195 """Create a SourcePackager for a GnuPG package in the caller's globals().
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
196 This is a helper function for the modules in the recipe.gnupg package.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
197 """
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
198 base_class = BaseSourcePackager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
199 class_attributes = dict(pkg_basename=pkg_basename)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
200 if tarball_dependencies is not None:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
201 base_class = SmartSourcePackager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
202 class_attributes["tarball_dependencies"] = set(tarball_dependencies)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
203 if make_dist_command is not None:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
204 base_class = SmartSourcePackager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
205 class_attributes["make_dist_command"] = make_dist_command
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
206
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
207 caller_globals = inspect.currentframe().f_back.f_globals
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
208 caller_globals["SourcePackager"] = new.classobj("SourcePackager",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
209 (base_class,),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
210 class_attributes)
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)