comparison recipes/wince/dbus.py @ 376:964e6981847a

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