annotate recipes/gnupg/base.py @ 191:94fb3f3ab58b

When building a subset of tracks, make sure new packages are added to pbuilder even if the tracks that depend on them are not being built. To achieve this, the information which tracks are to be built is now stored as the do_build flag in the individual tracks and not by passing only a subset of the tracks ot the PackagerGroup. Otherwise the PackagerGroup would not determine the dependencies correctly.
author Bernhard Herzog <bh@intevation.de>
date Wed, 30 Jul 2008 19:23:10 +0000
parents 81585486281b
children bd887d02068a
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
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
31 match = re.match(r"m4_define\(\[?my_version\]?, \[([0-9.]+)\]\)",
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
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
83 created by the upstream maintainers. For the gnupg software this
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
84 means need to run 'make dist' in a configured SVN working copy with
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
85 some additional software installed like autoconf and texinfo. We
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
86 want to avoid running code from a working copy outside of the
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
87 pbuilder environment and to have to install recipe specific
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
88 additional software packages in the treepkg host system. Therefore
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
89 we create the source tarball using 'pbuilder execute' with a script.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
90 """
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 createtarball_script = """\
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
93 #! /bin/bash
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
94 set -e
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
95
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
96 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
97
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
98 # 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
99 # 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
100 # 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
101 # treepkg
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
102 workdir=/tmp/work
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
103 cp -a %(basedir)s $workdir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
104 cd $workdir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
105
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
106 # 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
107 # 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
108 # achieve that.
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
109 cp Makefile.am Makefile.am.orig
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
110 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
111 Makefile.am.orig > Makefile.am
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
112
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
113 ./autogen.sh
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
114 ./configure --enable-maintainer-mode
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
115
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
116 # 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
117 # the tarball
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
118 mv Makefile.am.orig Makefile.am
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
119
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
120 %(make_dist_command)s
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
121
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
122 mv *.tar.gz %(origtargz)s
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
123 """
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 make_dist_command = "make dist"
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
126
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
127 def __init__(self, *args):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
128 super(SmartSourcePackager, self).__init__(*args)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
129 self.pkgbasename = None
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
130 self.pkgbaseversion = None
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
131 self.origtargz = None
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
132
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
133 def copy_workingcopy(self, dest):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
134 treepkg.util.copytree(self.track.checkout_dir, dest)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
135
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
136 def create_original_tarball(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
137 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
138 self.copy_workingcopy(copied_working_copy)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
139
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
140 self.pkgbaseversion = \
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
141 self.determine_package_version(copied_working_copy)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
142 self.pkgbasename = self.pkg_basename + "_" + self.pkgbaseversion
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
143 self.origtargz = os.path.join(self.work_dir,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
144 self.pkgbasename + ".orig.tar.gz")
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
145
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
146 script = (self.createtarball_script
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
147 % dict(builddeps=" ".join(self.track.dependencies_required()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
148 | self.tarball_dependencies),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
149 basedir=copied_working_copy,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
150 origtargz=self.origtargz,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
151 make_dist_command=self.make_dist_command))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
152 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
153 treepkg.util.writefile(script_name, script, 0755)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
154
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
155 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
156 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
157 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
158 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
159 "tarball_log.txt"),
134
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
160 bindmounts=[self.work_dir, self.src_dir])
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
161
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
162 def create_orig_dir(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
163 """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
164 """
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
165 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
166 treepkg.util.ensure_directory(unpack_dir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
167 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
168 unpack_dir=unpack_dir, origtargz=self.origtargz))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
169 unpacked_files = treepkg.util.listdir_abs(unpack_dir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
170 if len(unpacked_files) != 1:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
171 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
172 origtargz)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
173 unpacked_dir = unpacked_files[0]
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
174
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
175 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
176 os.rename(unpacked_dir, orig_dir)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
177 return orig_dir
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
178
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
179 def do_package(self):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
180 self.create_original_tarball()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
181 orig_dir = self.create_orig_dir()
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
182
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
183 changemsg = ("Update to SVN rev. %d" % (self.revision,))
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
184 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
185
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
186 self.create_source_package(orig_dir, self.origtargz)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
187 self.move_source_package(self.pkgbasename)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
188
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 def define_gnupg_packager(pkg_basename,
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
191 tarball_dependencies=("autoconf", "automake",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
192 "texinfo", "subversion"),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
193 make_dist_command=None):
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
194 """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
195 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
196 """
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
197 base_class = BaseSourcePackager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
198 class_attributes = dict(pkg_basename=pkg_basename)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
199 if tarball_dependencies is not None:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
200 base_class = SmartSourcePackager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
201 class_attributes["tarball_dependencies"] = set(tarball_dependencies)
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
202 if make_dist_command is not None:
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
203 base_class = SmartSourcePackager
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
204 class_attributes["make_dist_command"] = make_dist_command
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
205
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
206 caller_globals = inspect.currentframe().f_back.f_globals
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
207 caller_globals["SourcePackager"] = new.classobj("SourcePackager",
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
208 (base_class,),
605f6784aae7 Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
209 class_attributes)
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)