Mercurial > treepkg
annotate recipes/gnupg/base.py @ 171:c0ea6cbb0fd2
Add "--debbuildopts -b" to "pbuilder build" command line to stop
pbuilder from creating a source package. The .changes would otherwise
contain references to that new source package instead of the one we
passed to pbuilder. The checksums for the two source packages would be
different so the .changes file would not match the source package that
treepkg produces.
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Mon, 23 Jun 2008 16:12:01 +0000 |
parents | 93fcd0b9e82c |
children | 81585486281b |
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) |
134
605f6784aae7
Add recipes for gnupg and related packages
Bernhard Herzog <bh@intevation.de>
parents:
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) |