Mercurial > treepkg
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 | 83 created by the upstream maintainers as possible. For the gnupg |
84 software this means we need to run 'make dist' in a configured SVN | |
85 working copy with some additional software installed like autoconf | |
86 and texinfo. We want to avoid running code from a working copy | |
87 outside of the pbuilder environment and having to install recipe | |
88 specific additional software packages in the treepkg host system. | |
89 Therefore we create the source tarball using 'pbuilder execute' with | |
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) |