annotate recipes/wince/dbus.py @ 557:9824e409388b

Refactor git branching If a checkout is already available and the branch is changed in the config git command would always fail because it doesn't know the branch to track. Therefore always check if the branch is locally available and if not checkout the remote branch
author Bjoern Ricks <bricks@intevation.de>
date Fri, 02 Sep 2011 08:45:28 +0000
parents 964e6981847a
children
rev   line source
376
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
1 # Copyright (C) 2010 by Intevation GmbH
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
2 # Authors:
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
3 # Andre Heinecke <aheinecke@intevation.de>
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
4 #
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
7
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8 """Recipe to build DBus from Git"""
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
10 import os
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11 import re
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12 import inspect
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 import new
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
14
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
15 import treepkg.util
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16 import treepkg.packager
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 import treepkg.run as run
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
18 from treepkg.cmdexpand import cmdexpand
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
20 class SourcePackager(treepkg.packager.SourcePackager):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
21
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
22 """SourcePackager that uses pbuilder to create the source tarball"""
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
23
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
24 tarball_dependencies=set(["autoconf", "automake","git-core", "git",
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 "libexpat-ce-arm-dev"])
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
26 createtarball_script = """\
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
27 #! /bin/bash
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
28 #set -e
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 apt-get --assume-yes --force-yes install %(builddeps)s
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32 # copy the source tree to a directory that's under pbuilder control so
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33 # that it gets removed along with the build environment. Otherwise we
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 # end up with a directory containing files that cannot be removed by
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35 # treepkg
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 workdir=/tmp/work
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
37 cp -a %(basedir)s $workdir
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38 cd $workdir
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
40 export MINGWPATH=/opt/mingw32ce
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
41 export INCLUDE=$MINGWPATH/arm-mingw32ce/include:$MINGWPATH/include:$INCLUDE
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
42 export LIB=$MINGWPATH/arm-mingw32ce/lib:$MINGWPATH/lib:$LIB
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43 export PATH=:$PATH:$MINGWPATH/bin:$MINGWPATH/arm-mingw32ce/bin:\
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
44 $MINGWPATH/libexec/gcc/arm-mingw32ce/4.4.0
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 export LDFLAGS=-L$MINGWPATH/lib
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
46 export CFLAGS=-I$MINGWPATH/include
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
47 export CPPFLAGS=-I$MINGWPATH/include
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
48
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49 ./autogen.sh --enable-maintainer-mode --host=arm-mingw32ce
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 %(make_dist_command)s
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51 echo "origtargz " %(origtargz)s
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 mv *.tar.gz %(origtargz)s
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 """
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 make_dist_command = "make dist"
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 def __init__(self, *args):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 super(SourcePackager, self).__init__(*args)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 self.pkgbasename = None
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
60 self.pkgbaseversion = None
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 self.origtargz = None
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
62
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
63 def orig_source_version(self, directory):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
64 """Determines the version from configure.in"""
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
65 major = run.capture_output(cmdexpand("/bin/sh -c \"cat configure.in | \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
66 grep dbus_major_version\] | \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 awk -F \[ '{print $$3}'\""),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
68 cwd=directory)[:1]
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
69 minor = run.capture_output(cmdexpand("/bin/sh -c \"cat configure.in | \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
70 grep dbus_minor_version\] | \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 awk -F \[ '{print $$3}'\""),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 cwd=directory)[:1]
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73 micro = run.capture_output(cmdexpand("/bin/sh -c \"cat configure.in | \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
74 grep dbus_micro_version\] | \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
75 awk -F \[ '{print $$3}'\""),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
76 cwd=directory)[:1]
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
77 if not major or not minor or not micro:
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
78 raise RuntimeError("Could not determine version from \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
79 %s/configure.in" % directory)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
80 return "%s.%s.%s" % (major[:1],minor[:1],micro[:1])
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
81
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
82 def determine_package_version(self, directory):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
83 """ Returns a Git package Name """
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
84 date = run.capture_output(cmdexpand("/bin/sh -c \" git log --date=iso \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
85 -n 1 | grep Date \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
86 | awk \'{print $$2}\'\""),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
87 cwd=directory)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
88 time = run.capture_output(cmdexpand("/bin/sh -c \" git log --date=iso \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
89 -n 1 | grep Date \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
90 | awk \'{print $$3}\'\""),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
91 cwd=directory)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
92 date = date.replace('-','')
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
93 time = time.replace(':','')
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
94 return "%s-%s%s.%s" % (self.orig_source_version(directory),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
95 date[:8], time[:4], self.revision[:7])
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
96
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
97 def copy_workingcopy(self, dest):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
98 treepkg.util.copytree(self.track.checkout_dir, dest)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
99
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
100 def create_original_tarball(self):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
101 copied_working_copy = os.path.join(self.work_dir, "copied_working_copy")
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
102 self.copy_workingcopy(copied_working_copy)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
103
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
104 self.pkgbaseversion = \
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
105 self.determine_package_version(copied_working_copy)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
106 self.pkgbasename = self.pkg_basename + "_" + self.pkgbaseversion
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
107 self.origtargz = os.path.join(self.work_dir,
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
108 self.pkgbasename + ".orig.tar.gz")
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
109
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
110 script = (self.createtarball_script
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
111 % dict(builddeps=" ".join(self.track.dependencies_required()
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
112 | self.tarball_dependencies),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
113 basedir=copied_working_copy,
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
114 origtargz=self.origtargz,
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
115 make_dist_command=self.make_dist_command))
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
116 script_name = os.path.join(self.work_dir, "createtarball")
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
117 treepkg.util.writefile(script_name, script, 0755)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
118
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
119 treepkg.util.ensure_directory(self.src_dir)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
120 treepkg.util.ensure_directory(self.log_dir)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
121 self.track.builder.run_script([script_name],
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
122 logfile=os.path.join(self.log_dir,
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
123 "tarball_log.txt"),
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
124 bindmounts=[self.work_dir, self.src_dir])
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
125
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
126 def create_orig_dir(self):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
127 """Unpacks the tarball created by create_original_tarball into work_dir
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
128 """
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
129 unpack_dir = os.path.join(self.work_dir, "unpack")
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
130 treepkg.util.ensure_directory(unpack_dir)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
131 run.call(cmdexpand("tar xzf $origtargz -C $unpack_dir",
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
132 unpack_dir=unpack_dir, origtargz=self.origtargz))
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
133 unpacked_files = treepkg.util.listdir_abs(unpack_dir)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
134 if len(unpacked_files) != 1:
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
135 raise RuntimeError("%s should have extracted to a single directory",
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
136 origtargz)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
137 unpacked_dir = unpacked_files[0]
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
138
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
139 orig_dir = os.path.join(self.work_dir, os.path.basename(unpacked_dir))
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
140 os.rename(unpacked_dir, orig_dir)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
141 return orig_dir
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
142
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
143 def do_package(self):
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
144 self.create_original_tarball()
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
145 orig_dir = self.create_orig_dir()
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
146
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
147 changemsg = ("Update to change: %s" % self.revision)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
148
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
149 self.copy_debian_directory(orig_dir, self.pkgbaseversion, changemsg)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
150
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
151 self.create_source_package(orig_dir, self.origtargz)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
152 self.move_source_package(self.pkgbasename)
964e6981847a Added for Windows CE
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
153
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)