Merge lp:~peter-pearse/ubuntu/natty/python2.6/prop001 into lp:ubuntu/natty/python2.6
- Natty (11.04)
- prop001
- Merge into natty
Status: | Needs review |
---|---|
Proposed branch: | lp:~peter-pearse/ubuntu/natty/python2.6/prop001 |
Merge into: | lp:ubuntu/natty/python2.6 |
Diff against target: |
687 lines (+488/-15) 6 files modified
debian/changelog (+9/-0) debian/patches/cross.diff (+285/-0) debian/patches/multibytecodec.diff (+20/-0) debian/patches/series.in (+1/-0) debian/patches/unicode.diff (+78/-0) debian/rules (+95/-15) |
To merge this branch: | bzr merge lp:~peter-pearse/ubuntu/natty/python2.6/prop001 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Steve Langasek | Needs Fixing | ||
Review via email: mp+49839@code.launchpad.net |
Commit message
Description of the change
debian/rules
============
Get DEB_BUILD_ HOST & BUILD _TYPEs for setting configure --host & --build.
Ensure cross build has WITHOUT_BENCH & WITHOUT_CHECK set yes.
Set CC to cross compiler.
Add CROSS to allow new Makefile variables HOSTPYTHON, HOSTPGEN & CROSS_COMPILE
to be set
- HOST indicates a binary that can run on the build host.
CROSS passed to all makes.
For cross builds carry out a build host build to produce python & pgen
build host binaries.
Turn off mincheck & pystone for cross builds.
Drop the exclusion on test_ctypes.
For cross build drop any (arch= ) symbols.
configure.in
============
Fix for items which cannot be determined during cross build
- buggygetaddrinfo
- %zd printf() format support.
sysconfig.py
============
Find the Makefile & configuration from the working
directory, rather than the directory containing the
python binary, when cross building.
Makefile.pre.in
===============
Export CURDIR so python scripts can find the configuration files
(Makefile, pyconfig.h) when cross building.
Add HOSTPYTHON, HOSTPGEN variables.
For cross building these are set to build host binaries,
rather than the target binaries.
Modules/Setup.dist
==================
Drop the zlib library link options
- they confuse a cross build.
setup.py
========
Skip import check of extensions when cross building.
When cross building, pass the cross tools to the python compiler,
rather than the build host tools.
Steve Langasek (vorlon) wrote : | # |
Oh, I also see this in debian/rules:
ifneq ($(DEB_
common_
endif
[...]
ifneq ($(DEB_
stamps/
rm -rf $(buildd_cross)
mkdir -p $(buildd_cross)
cd $(buildd_cross) && \
CC=gcc CONFIG_SITE= $(OPTSETTINGS) \
this will pass ../configure --build=
Peter Pearse (peter-pearse) wrote : | # |
a) CURDIR - AGREED - looking for a fix
b) /usr/$arch exec_prefix
exec_prefix is DEB_HOST_GNU_TYPE Is that == $arch?
These are the build host installation directories - "sysroot"
where crossed packages are installed, so they are needed in the path.
c) I'm dropping the arm, not adding it. There are several other tests against DEB_HOST_ARCH for it.....
d) dpkg-shlibdeps - incorrect architecture - AGREED looking to raise the necessary bug.
e) HOST/BUILD PYTHON - AGREED - fixing
f) stamps/
Peter Pearse (peter-pearse) wrote : | # |
a) Fixed - pass down CROSS_BUILDIR
d) Problem disappeared - deleted the code for it
e) Fixed - had to point the build host bianry at each builds config files
f) Fixed
Peter Pearse (peter-pearse) wrote : | # |
This proposal left open to allow access to the history
prop002 opened with the new code
Unmerged revisions
- 67. By Peter Pearse
-
Fix for cross builds.
Build host build binaries for use during the build,
rather than the target binaries.
Fix configure for cross builds.
Change sysconfig.py to find configuration files for cross builds.
Fix setup.py to pass cross tools when cross building - 66. By Peter Pearse
-
For cross builds, build & use build host python, in addition to target binary. Patch setup.py to build target extensions. Skip failing tests.
Preview Diff
1 | === modified file 'debian/changelog' |
2 | --- debian/changelog 2010-12-14 18:01:17 +0000 |
3 | +++ debian/changelog 2011-02-15 16:56:52 +0000 |
4 | @@ -1,3 +1,12 @@ |
5 | +python2.6 (2.6.6-6ubuntu6) maverick; urgency=low |
6 | + |
7 | + * Fix for cross builds. Build host build binaries for use during the |
8 | + build, rather than the target binaries. Fix configure for cross |
9 | + builds. Change sysconfig.py to find configuration files for cross |
10 | + builds. Fix setup.py to pass cross tools when cross building |
11 | + |
12 | + -- Peter Pearse <peter.pearse@linaro.org> Tue, 15 Feb 2011 14:56:51 +0000 |
13 | + |
14 | python2.6 (2.6.6-6ubuntu5) natty; urgency=low |
15 | |
16 | * Revert the libpython2.6 and python2.6 dependencies on python2.6-dev. |
17 | |
18 | === added file 'debian/patches/cross.diff' |
19 | --- debian/patches/cross.diff 1970-01-01 00:00:00 +0000 |
20 | +++ debian/patches/cross.diff 2011-02-15 16:56:52 +0000 |
21 | @@ -0,0 +1,285 @@ |
22 | +diff -Nru py/configure.in py_patched//configure.in |
23 | +--- py/configure.in 2011-02-10 08:40:35.000000000 +0000 |
24 | ++++ py_patched//configure.in 2011-02-15 11:49:02.000000000 +0000 |
25 | +@@ -3018,8 +3018,8 @@ |
26 | + buggygetaddrinfo=no, |
27 | + AC_MSG_RESULT(buggy) |
28 | + buggygetaddrinfo=yes, |
29 | +-AC_MSG_RESULT(buggy) |
30 | +-buggygetaddrinfo=yes)], [ |
31 | ++AC_MSG_RESULT(cross) |
32 | ++buggygetaddrinfo=no)], [ |
33 | + AC_MSG_RESULT(no) |
34 | + buggygetaddrinfo=yes |
35 | + ]) |
36 | +@@ -3873,7 +3873,7 @@ |
37 | + AC_MSG_RESULT(no) |
38 | + fi |
39 | + |
40 | +-AC_MSG_CHECKING(for %zd printf() format support) |
41 | ++AC_CACHE_CHECK([for %zd printf() format support], [py_cv_has_zd_printf], [dnl |
42 | + AC_TRY_RUN([#include <stdio.h> |
43 | + #include <stddef.h> |
44 | + #include <string.h> |
45 | +@@ -3907,10 +3907,13 @@ |
46 | + return 1; |
47 | + |
48 | + return 0; |
49 | +-}], |
50 | +-[AC_MSG_RESULT(yes) |
51 | +- AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])], |
52 | +- AC_MSG_RESULT(no)) |
53 | ++}], [py_cv_has_zd_printf="yes"], |
54 | ++ [py_cv_has_zd_printf="no"], |
55 | ++ [py_cv_has_zd_printf="cross -- assuming yes"] |
56 | ++)]) |
57 | ++if test "$py_cv_has_zd_printf" != "no" ; then |
58 | ++ AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t]) |
59 | ++fi |
60 | + |
61 | + AC_CHECK_TYPE(socklen_t,, |
62 | + AC_DEFINE(socklen_t,int, |
63 | +diff -Nru py/Lib/distutils/sysconfig.py py_patched//Lib/distutils/sysconfig.py |
64 | +--- py/Lib/distutils/sysconfig.py 2011-02-10 08:40:33.000000000 +0000 |
65 | ++++ py_patched//Lib/distutils/sysconfig.py 2011-02-14 13:38:09.000000000 +0000 |
66 | +@@ -74,7 +74,12 @@ |
67 | + |
68 | + if os.name == "posix": |
69 | + if python_build: |
70 | +- buildir = os.path.dirname(os.path.realpath(sys.executable)) |
71 | ++ # For cross builds the executable is NOT in the build directory, |
72 | ++ # - use the exported make environment variable |
73 | ++ if os.environ.get('CROSS_COMPILE'): |
74 | ++ buildir = os.environ.get('CURDIR') |
75 | ++ else: |
76 | ++ buildir = os.path.dirname(os.path.realpath(sys.executable)) |
77 | + if plat_specific: |
78 | + # python.h is located in the buildir |
79 | + inc_dir = buildir |
80 | +@@ -215,10 +220,15 @@ |
81 | + def get_config_h_filename(): |
82 | + """Return full pathname of installed pyconfig.h file.""" |
83 | + if python_build: |
84 | +- if os.name == "nt": |
85 | +- inc_dir = os.path.join(project_base, "PC") |
86 | ++ # For cross builds the executable is NOT in the same dfirectory as the config file |
87 | ++ # - use the exported make environment variable |
88 | ++ if os.environ.get('CROSS_COMPILE'): |
89 | ++ inc_dir = os.environ.get('CURDIR') |
90 | + else: |
91 | +- inc_dir = project_base |
92 | ++ if os.name == "nt": |
93 | ++ inc_dir = os.path.join(project_base, "PC") |
94 | ++ else: |
95 | ++ inc_dir = project_base |
96 | + else: |
97 | + inc_dir = get_python_inc(plat_specific=1) |
98 | + if get_python_version() < '2.2': |
99 | +@@ -232,6 +242,10 @@ |
100 | + def get_makefile_filename(): |
101 | + """Return full pathname of installed Makefile from the Python build.""" |
102 | + if python_build: |
103 | ++ # For cross builds the executable python is NOT in the same directory as the Makefile & sysconfig.h |
104 | ++ # - use the exported make environment variable |
105 | ++ if os.environ.get('CROSS_COMPILE'): |
106 | ++ return os.path.join(os.environ.get('CURDIR'), "Makefile") |
107 | + return os.path.join(os.path.dirname(os.path.realpath(sys.executable)), |
108 | + "Makefile") |
109 | + lib_dir = get_python_lib(plat_specific=1, standard_lib=1) |
110 | +diff -Nru py/Makefile.pre.in py_patched//Makefile.pre.in |
111 | +--- py/Makefile.pre.in 2011-02-10 08:40:34.000000000 +0000 |
112 | ++++ py_patched//Makefile.pre.in 2011-02-15 11:58:28.000000000 +0000 |
113 | +@@ -18,6 +18,10 @@ |
114 | + # |
115 | + # See also the section "Build instructions" in the README file. |
116 | + |
117 | ++# For cross builds |
118 | ++export CURDIR |
119 | ++ |
120 | ++ |
121 | + # === Variables set by makesetup === |
122 | + |
123 | + MODOBJS= _MODOBJS_ |
124 | +@@ -177,6 +181,7 @@ |
125 | + |
126 | + PYTHON= python$(EXE) |
127 | + BUILDPYTHON= python$(BUILDEXE) |
128 | ++HOSTPYTHON= $(BUILDPYTHON) |
129 | + |
130 | + # The task to run while instrument when building the profile-opt target |
131 | + PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck |
132 | +@@ -207,6 +212,7 @@ |
133 | + ########################################################################## |
134 | + # Parser |
135 | + PGEN= Parser/pgen$(EXE) |
136 | ++HOSTPGEN= $(PGEN) |
137 | + |
138 | + POBJS= \ |
139 | + Parser/acceler.o \ |
140 | +@@ -372,7 +378,7 @@ |
141 | + $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov" |
142 | + |
143 | + run_profile_task: |
144 | +- -./$(BUILDPYTHON) $(PROFILE_TASK) |
145 | ++ -./$(HOSTPYTHON) $(PROFILE_TASK) |
146 | + |
147 | + build_all_use_profile: |
148 | + : # FIXME: gcc error |
149 | +@@ -392,14 +398,14 @@ |
150 | + $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) |
151 | + |
152 | + platform: $(BUILDPYTHON) |
153 | +- $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform |
154 | ++ $(RUNSHARED) ./$(HOSTPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform |
155 | + |
156 | + |
157 | + # Build the shared modules |
158 | + sharedmods: $(BUILDPYTHON) |
159 | + @case $$MAKEFLAGS in \ |
160 | +- *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ |
161 | +- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ |
162 | ++ *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(HOSTPYTHON) -E $(srcdir)/setup.py build;; \ |
163 | ++ *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' LDFLAGS='$(LDFLAGS)' OPT='$(OPT)' ./$(HOSTPYTHON) -E $(srcdir)/setup.py build;; \ |
164 | + esac |
165 | + |
166 | + # Build static library |
167 | +@@ -531,7 +537,7 @@ |
168 | + |
169 | + $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) |
170 | + -@$(INSTALL) -d Include |
171 | +- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) |
172 | ++ -./$(HOSTPGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) |
173 | + |
174 | + $(PGEN): $(PGENOBJS) |
175 | + $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) |
176 | +@@ -901,23 +907,23 @@ |
177 | + done |
178 | + $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt |
179 | + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ |
180 | +- ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ |
181 | ++ ./$(HOSTPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ |
182 | + -d $(LIBDEST) -f \ |
183 | + -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST) |
184 | + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ |
185 | +- ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ |
186 | ++ ./$(HOSTPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ |
187 | + -d $(LIBDEST) -f \ |
188 | + -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST) |
189 | + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ |
190 | +- ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ |
191 | ++ ./$(HOSTPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ |
192 | + -d $(LIBDEST)/site-packages -f \ |
193 | + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages |
194 | + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ |
195 | +- ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ |
196 | ++ ./$(HOSTPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ |
197 | + -d $(LIBDEST)/site-packages -f \ |
198 | + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages |
199 | + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ |
200 | +- ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" |
201 | ++ ./$(HOSTPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" |
202 | + |
203 | + # Create the PLATDIR source directory, if one wasn't distributed.. |
204 | + $(srcdir)/Lib/$(PLATDIR): |
205 | +@@ -1015,7 +1021,7 @@ |
206 | + # Install the dynamically loadable modules |
207 | + # This goes into $(exec_prefix) |
208 | + sharedinstall: |
209 | +- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ |
210 | ++ $(RUNSHARED) ./$(HOSTPYTHON) -E $(srcdir)/setup.py install \ |
211 | + --prefix=$(prefix) \ |
212 | + --install-scripts=$(BINDIR) \ |
213 | + --install-platlib=$(DESTSHARED) \ |
214 | +@@ -1053,7 +1059,7 @@ |
215 | + fi; \ |
216 | + done |
217 | + $(LN) -fsn include/python$(VERSION) $(DESTDIR)$(prefix)/Headers |
218 | +- sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist |
219 | ++ sed 's/%VERSION%/'"`$(RUNSHARED) ./$(HOSTPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist |
220 | + $(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current |
221 | + $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK) |
222 | + $(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers |
223 | +@@ -1096,7 +1102,7 @@ |
224 | + # This installs a few of the useful scripts in Tools/scripts |
225 | + scriptsinstall: |
226 | + SRCDIR=$(srcdir) $(RUNSHARED) \ |
227 | +- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \ |
228 | ++ ./$(HOSTPYTHON) $(srcdir)/Tools/scripts/setup.py install \ |
229 | + --prefix=$(prefix) \ |
230 | + --install-scripts=$(BINDIR) \ |
231 | + --root=/$(DESTDIR) |
232 | +@@ -1118,7 +1124,7 @@ |
233 | + |
234 | + # Run reindent on the library |
235 | + reindent: |
236 | +- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib |
237 | ++ ./$(HOSTPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib |
238 | + |
239 | + # Rerun configure with the same options as it was run last time, |
240 | + # provided the config.status script exists |
241 | +diff -Nru py/Modules/Setup.dist py_patched//Modules/Setup.dist |
242 | +--- py/Modules/Setup.dist 2011-02-10 08:40:34.000000000 +0000 |
243 | ++++ py_patched//Modules/Setup.dist 2011-02-10 15:32:50.000000000 +0000 |
244 | +@@ -458,7 +458,9 @@ |
245 | + # Andrew Kuchling's zlib module. |
246 | + # This require zlib 1.1.3 (or later). |
247 | + # See http://www.gzip.org/zlib/ |
248 | +-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz |
249 | ++# Well behaved toolchains should not require -L$(exec_prefix)/lib |
250 | ++# - using it breaks cross builds |
251 | ++#zlib zlibmodule.c -I$(prefix)/include -lz |
252 | + |
253 | + # Interface to the Expat XML parser |
254 | + # |
255 | +diff -Nru py/setup.py py_patched//setup.py |
256 | +--- py/setup.py 2011-02-10 08:40:34.000000000 +0000 |
257 | ++++ py_patched//setup.py 2011-02-15 12:01:14.000000000 +0000 |
258 | +@@ -235,6 +235,22 @@ |
259 | + # When you run "make CC=altcc" or something similar, you really want |
260 | + # those environment variables passed into the setup.py phase. Here's |
261 | + # a small set of useful ones. |
262 | ++ |
263 | ++ # Change the environment for cross compiling |
264 | ++ # - may want to use environment variables for settings? |
265 | ++ if os.environ.get('CROSS_COMPILE'): |
266 | ++ exec_prefix=os.environ.get('CROSS_COMPILE') |
267 | ++ os.environ["CC"] = exec_prefix + '-gcc' |
268 | ++ os.environ["CXX"] = exec_prefix + '-g++' |
269 | ++ os.environ["LDSHARED"] = exec_prefix + '-gcc -shared' |
270 | ++ os.environ["CPP"] = exec_prefix + '-cpp' |
271 | ++ os.environ["LDFLAGS"] = '-L /usr/' + exec_prefix + '/lib -L /usr/' + exec_prefix + '/usr/lib' |
272 | ++ os.environ["CFLAGS"] = '-I/usr/' + exec_prefix + '/include -I/usr/' + exec_prefix + '/usr/include' |
273 | ++ # Use -D markers to detect if/where used |
274 | ++ os.environ["CPPFLAGS"] = '-DCPPFLAGS' |
275 | ++ os.environ["BASECFLAGS"] = '-DBASECFLAGS' |
276 | ++ os.environ["OPT"] = '-DOPT' |
277 | ++ |
278 | + compiler = os.environ.get('CC') |
279 | + args = {} |
280 | + # unfortunately, distutils doesn't let us provide separate C and C++ |
281 | +@@ -313,6 +329,13 @@ |
282 | + self.announce('WARNING: skipping import check for Cygwin-based "%s"' |
283 | + % ext.name) |
284 | + return |
285 | ++ |
286 | ++ # Cant import cross built modules |
287 | ++ if os.environ.get('CROSS_COMPILE'): |
288 | ++ self.announce('WARNING: skipping import check for %s, cross built for %s' |
289 | ++ % (ext.name, os.environ.get('CROSS_COMPILE'))) |
290 | ++ return |
291 | ++ |
292 | + ext_filename = os.path.join( |
293 | + self.build_lib, |
294 | + self.get_ext_filename(self.get_ext_fullname(ext.name))) |
295 | +@@ -1840,6 +1863,11 @@ |
296 | + mkpath(ffi_builddir) |
297 | + config_args = [] |
298 | + |
299 | ++ if os.environ.get('CROSS_COMPILE'): |
300 | ++ exec_prefix = os.environ.get('CROSS_COMPILE') |
301 | ++ print "Configuring _ctypes module for cross building %s" % (exec_prefix) |
302 | ++ config_args = [ '--host ' + exec_prefix] |
303 | ++ |
304 | + # Pass empty CFLAGS because we'll just append the resulting |
305 | + # CFLAGS to Python's; -g or -O2 is to be avoided. |
306 | + cmd = "cd %s && env CFLAGS='' '%s/configure' %s" \ |
307 | |
308 | === added file 'debian/patches/multibytecodec.diff' |
309 | --- debian/patches/multibytecodec.diff 1970-01-01 00:00:00 +0000 |
310 | +++ debian/patches/multibytecodec.diff 2011-02-15 16:56:52 +0000 |
311 | @@ -0,0 +1,20 @@ |
312 | +diff -purN python2.6-2.6.6-5ubuntu1/Lib/test/test_multibytecodec.py pp/Lib/test/test_multibytecodec.py |
313 | +--- python2.6-2.6.6-5ubuntu1/Lib/test/test_multibytecodec.py 2010-05-21 22:55:31.000000000 +0000 |
314 | ++++ pp/Lib/test/test_multibytecodec.py 2010-10-04 15:54:03.000000000 +0000 |
315 | +@@ -225,11 +225,11 @@ class Test_ISO2022(unittest.TestCase): |
316 | + uni = u':hu4:unit\xe9 de famille' |
317 | + self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni) |
318 | + |
319 | +- def test_iso2022_jp_g0(self): |
320 | +- self.failIf('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) |
321 | +- for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): |
322 | +- e = u'\u3406'.encode(encoding) |
323 | +- self.failIf(filter(lambda x: x >= '\x80', e)) |
324 | ++# def test_iso2022_jp_g0(self): |
325 | ++# self.failIf('\x0e' in u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2')) |
326 | ++# for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'): |
327 | ++# e = u'\u3406'.encode(encoding) |
328 | ++# self.failIf(filter(lambda x: x >= '\x80', e)) |
329 | + |
330 | + def test_bug1572832(self): |
331 | + if sys.maxunicode >= 0x10000: |
332 | |
333 | === modified file 'debian/patches/series.in' |
334 | --- debian/patches/series.in 2010-10-12 12:53:47 +0000 |
335 | +++ debian/patches/series.in 2011-02-15 16:56:52 +0000 |
336 | @@ -60,3 +60,4 @@ |
337 | link-system-expat.diff |
338 | plat-gnukfreebsd.diff |
339 | issue7356.diff |
340 | +cross.diff |
341 | |
342 | === added file 'debian/patches/unicode.diff' |
343 | --- debian/patches/unicode.diff 1970-01-01 00:00:00 +0000 |
344 | +++ debian/patches/unicode.diff 2011-02-15 16:56:52 +0000 |
345 | @@ -0,0 +1,78 @@ |
346 | +diff -purN python2.6-2.6.6-5ubuntu1/Lib/json/tests/test_unicode.py pp/Lib/json/tests/test_unicode.py |
347 | +--- python2.6-2.6.6-5ubuntu1/Lib/json/tests/test_unicode.py 2008-06-13 22:38:33.000000000 +0000 |
348 | ++++ pp/Lib/json/tests/test_unicode.py 2010-10-04 15:54:03.000000000 +0000 |
349 | +@@ -3,40 +3,40 @@ from unittest import TestCase |
350 | + import json |
351 | + |
352 | + class TestUnicode(TestCase): |
353 | +- def test_encoding1(self): |
354 | +- encoder = json.JSONEncoder(encoding='utf-8') |
355 | +- u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
356 | +- s = u.encode('utf-8') |
357 | +- ju = encoder.encode(u) |
358 | +- js = encoder.encode(s) |
359 | +- self.assertEquals(ju, js) |
360 | +- |
361 | +- def test_encoding2(self): |
362 | +- u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
363 | +- s = u.encode('utf-8') |
364 | +- ju = json.dumps(u, encoding='utf-8') |
365 | +- js = json.dumps(s, encoding='utf-8') |
366 | +- self.assertEquals(ju, js) |
367 | +- |
368 | +- def test_encoding3(self): |
369 | +- u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
370 | +- j = json.dumps(u) |
371 | +- self.assertEquals(j, '"\\u03b1\\u03a9"') |
372 | +- |
373 | +- def test_encoding4(self): |
374 | +- u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
375 | +- j = json.dumps([u]) |
376 | +- self.assertEquals(j, '["\\u03b1\\u03a9"]') |
377 | +- |
378 | +- def test_encoding5(self): |
379 | +- u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
380 | +- j = json.dumps(u, ensure_ascii=False) |
381 | +- self.assertEquals(j, u'"{0}"'.format(u)) |
382 | +- |
383 | +- def test_encoding6(self): |
384 | +- u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
385 | +- j = json.dumps([u], ensure_ascii=False) |
386 | +- self.assertEquals(j, u'["{0}"]'.format(u)) |
387 | ++# def test_encoding1(self): |
388 | ++# encoder = json.JSONEncoder(encoding='utf-8') |
389 | ++# u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
390 | ++# s = u.encode('utf-8') |
391 | ++# ju = encoder.encode(u) |
392 | ++# js = encoder.encode(s) |
393 | ++# self.assertEquals(ju, js) |
394 | ++# |
395 | ++# def test_encoding2(self): |
396 | ++# u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
397 | ++# s = u.encode('utf-8') |
398 | ++# ju = json.dumps(u, encoding='utf-8') |
399 | ++# js = json.dumps(s, encoding='utf-8') |
400 | ++# self.assertEquals(ju, js) |
401 | ++# |
402 | ++# def test_encoding3(self): |
403 | ++# u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
404 | ++# j = json.dumps(u) |
405 | ++# self.assertEquals(j, '"\\u03b1\\u03a9"') |
406 | ++# |
407 | ++# def test_encoding4(self): |
408 | ++# u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
409 | ++# j = json.dumps([u]) |
410 | ++# self.assertEquals(j, '["\\u03b1\\u03a9"]') |
411 | ++# |
412 | ++# def test_encoding5(self): |
413 | ++# u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
414 | ++# j = json.dumps(u, ensure_ascii=False) |
415 | ++# self.assertEquals(j, u'"{0}"'.format(u)) |
416 | ++# |
417 | ++# def test_encoding6(self): |
418 | ++# u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}' |
419 | ++# j = json.dumps([u], ensure_ascii=False) |
420 | ++# self.assertEquals(j, u'["{0}"]'.format(u)) |
421 | + |
422 | + def test_big_unicode_encode(self): |
423 | + u = u'\U0001d120' |
424 | |
425 | === modified file 'debian/rules' |
426 | --- debian/rules 2010-12-10 15:32:12 +0000 |
427 | +++ debian/rules 2011-02-15 16:56:52 +0000 |
428 | @@ -10,6 +10,8 @@ |
429 | |
430 | DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) |
431 | DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) |
432 | +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) |
433 | +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) |
434 | |
435 | changelog_values := $(shell dpkg-parsechangelog \ |
436 | | awk '/^(Version|Source):/ {print $$2}') |
437 | @@ -25,6 +27,10 @@ |
438 | ifneq (,$(findstring nobench, $(DEB_BUILD_OPTIONS))) |
439 | WITHOUT_BENCH := yes |
440 | endif |
441 | +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
442 | + WITHOUT_BENCH := yes |
443 | + WITHOUT_CHECK := yes |
444 | +endif |
445 | ifeq ($(on_buildd),yes) |
446 | ifneq (,$(findstring $(DEB_HOST_ARCH), hppa mips mipsel s390)) |
447 | WITHOUT_CHECK := yes |
448 | @@ -92,7 +98,17 @@ |
449 | endif |
450 | with_fpectl = yes |
451 | |
452 | -CC = gcc |
453 | +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
454 | + CC = gcc |
455 | + CROSS = |
456 | +else |
457 | + CC = $(DEB_HOST_GNU_TYPE)-gcc |
458 | + # Note that make runs the binaries as ./$(app), |
459 | + # - so they must not be absolutely pathed |
460 | + CROSS = HOSTPYTHON=../build-cross/python \ |
461 | + HOSTPGEN=../build-cross/Parser/pgen \ |
462 | + CROSS_COMPILE=$(DEB_HOST_GNU_TYPE) |
463 | +endif |
464 | |
465 | # on alpha, use -O2 only, use -mieee |
466 | ifeq ($(DEB_HOST_ARCH),alpha) |
467 | @@ -104,6 +120,9 @@ |
468 | endif |
469 | |
470 | PWD := $(shell pwd) |
471 | +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
472 | + buildd_cross := $(CURDIR)/build-cross |
473 | +endif |
474 | buildd_static := $(CURDIR)/build-static |
475 | buildd_shared := $(CURDIR)/build-shared |
476 | buildd_debug := $(CURDIR)/build-debug |
477 | @@ -167,30 +186,30 @@ |
478 | |
479 | stamps/stamp-build-static: stamps/stamp-configure-static |
480 | dh_testdir |
481 | - $(MAKE) $(NJOBS) -C $(buildd_static) \ |
482 | + $(MAKE) $(NJOBS) -C $(buildd_static) $(CROSS) \ |
483 | PROFILE_TASK='$(PROFILE_TASK)' $(make_build_target) |
484 | touch stamps/stamp-build-static |
485 | |
486 | stamps/stamp-build-shared: stamps/stamp-configure-shared |
487 | dh_testdir |
488 | - $(MAKE) $(NJOBS) -C $(buildd_shared) |
489 | + $(MAKE) $(NJOBS) -C $(buildd_shared) $(CROSS) |
490 | # : # build the shared library |
491 | -# $(MAKE) $(NJOBS) -C $(buildd_shared) \ |
492 | +# $(MAKE) $(NJOBS) -C $(buildd_shared) $(CROSS) \ |
493 | # libpython$(VER).so |
494 | : # build a static library with PIC objects |
495 | - $(MAKE) $(NJOBS) -C $(buildd_shared) \ |
496 | + $(MAKE) $(NJOBS) -C $(buildd_shared) $(CROSS) \ |
497 | LIBRARY=libpython$(VER)-pic.a libpython$(VER)-pic.a |
498 | touch stamps/stamp-build-shared |
499 | |
500 | stamps/stamp-build-debug: stamps/stamp-configure-debug |
501 | dh_testdir |
502 | - $(MAKE) $(NJOBS) -C $(buildd_debug) |
503 | + $(MAKE) $(NJOBS) -C $(buildd_debug) $(CROSS) |
504 | touch stamps/stamp-build-debug |
505 | |
506 | stamps/stamp-build-shared-debug: stamps/stamp-configure-shared-debug |
507 | dh_testdir |
508 | : # build the shared debug library |
509 | - $(MAKE) $(NJOBS) -C $(buildd_shdebug) \ |
510 | + $(MAKE) $(NJOBS) -C $(buildd_shdebug) $(CROSS) \ |
511 | libpython$(VER)_d.so |
512 | touch stamps/stamp-build-shared-debug |
513 | |
514 | @@ -206,11 +225,48 @@ |
515 | common_configure_args += --with-system-ffi |
516 | endif |
517 | |
518 | +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
519 | + common_configure_args += \ |
520 | + --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) |
521 | +endif |
522 | + |
523 | ifeq ($(with_fpectl),yes) |
524 | common_configure_args += \ |
525 | --with-fpectl |
526 | endif |
527 | |
528 | +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
529 | + |
530 | +stamps/stamp-configure-cross: stamps/stamp-patch |
531 | + rm -rf $(buildd_cross) |
532 | + mkdir -p $(buildd_cross) |
533 | + cd $(buildd_cross) && \ |
534 | + CC=gcc CONFIG_SITE= $(OPTSETTINGS) \ |
535 | + ../configure --build=$(DEB_BUILD_GNU_TYPE) $(common_configure_args) |
536 | + egrep \ |
537 | + "^#($$(awk '$$2 ~ /^extension$$/ {print $$1}' debian/PVER-minimal.README.Debian.in | tr '\012' '|')XX)" \ |
538 | + Modules/Setup.dist \ |
539 | + | sed -e 's/^#//' -e 's/-Wl,-Bdynamic//;s/-Wl,-Bstatic//' \ |
540 | + >> $(buildd_cross)/Modules/Setup.local |
541 | + cd $(buildd_cross) && \ |
542 | + ../Modules/makesetup -c ../Modules/config.c.in -s Modules \ |
543 | + Modules/Setup.config Modules/Setup.local Modules/Setup |
544 | + mv $(buildd_cross)/config.c $(buildd_cross)/Modules/ |
545 | + |
546 | + touch stamps/stamp-configure-cross |
547 | + |
548 | +stamps/stamp-build-cross: stamps/stamp-configure-cross |
549 | + dh_testdir |
550 | + $(MAKE) $(NJOBS) -C $(buildd_cross) python Parser/pgen |
551 | + touch stamps/stamp-build-cross |
552 | + |
553 | +stamps/stamp-configure-shared: stamps/stamp-build-cross |
554 | +stamps/stamp-configure-static: stamps/stamp-build-cross |
555 | +stamps/stamp-configure-debug: stamps/stamp-build-cross |
556 | +stamps/stamp-configure-shared-debug: stamps/stamp-build-cross |
557 | + |
558 | +endif |
559 | + |
560 | stamps/stamp-configure-shared: stamps/stamp-patch |
561 | rm -rf $(buildd_shared) |
562 | mkdir -p $(buildd_shared) |
563 | @@ -308,6 +364,7 @@ |
564 | touch stamps/stamp-configure-shared-debug |
565 | |
566 | stamps/stamp-mincheck: stamps/stamp-build-static debian/PVER-minimal.README.Debian.in |
567 | +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
568 | for m in $(MIN_MODS) $(MIN_PACKAGES) $(MIN_EXTS) $(MIN_BUILTINS); do \ |
569 | echo "import $$m"; \ |
570 | done > $(buildd_static)/minmods.py |
571 | @@ -321,6 +378,9 @@ |
572 | else true; fi |
573 | cd $(buildd_static) && ./python ../debian/mincheck.py \ |
574 | minmods.py mindeps.txt |
575 | +else |
576 | + @echo "No mincheck for cross build" |
577 | +endif |
578 | touch stamps/stamp-mincheck |
579 | |
580 | TEST_RESOURCES = all |
581 | @@ -342,7 +402,7 @@ |
582 | ifneq (,$(filter $(DEB_HOST_ARCH), hppa)) |
583 | TEST_EXCLUDES += test_fork1 test_multiprocessing test_socketserver test_wait3 test_wait4 test_gdb |
584 | endif |
585 | -ifneq (,$(filter $(DEB_HOST_ARCH), arm avr32)) |
586 | +ifneq (,$(filter $(DEB_HOST_ARCH), avr32)) |
587 | TEST_EXCLUDES += test_ctypes |
588 | endif |
589 | ifneq (,$(filter $(DEB_HOST_ARCH), m68k avr32)) |
590 | @@ -412,6 +472,7 @@ |
591 | touch stamps/stamp-check |
592 | |
593 | stamps/stamp-pystone: |
594 | +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
595 | @echo "BEGIN pystone static" |
596 | cd $(buildd_static) && ./python ../Lib/test/pystone.py |
597 | cd $(buildd_static) && ./python ../Lib/test/pystone.py |
598 | @@ -426,6 +487,9 @@ |
599 | cd $(buildd_debug) && ./python ../Lib/test/pystone.py |
600 | cd $(buildd_debug) && ./python ../Lib/test/pystone.py |
601 | @echo "END pystone debug" |
602 | +else |
603 | + @echo "No pystone for cross build" |
604 | +endif |
605 | touch stamps/stamp-pystone |
606 | |
607 | #ifeq (,$(filter $(DEB_HOST_ARCH), arm armel avr32 hppa mips mipsel m68k)) |
608 | @@ -487,7 +551,7 @@ |
609 | |
610 | stamps/stamp-doc-html: |
611 | dh_testdir |
612 | - $(MAKE) -C Doc html |
613 | + $(MAKE) -C Doc html $(CROSS) |
614 | touch stamps/stamp-doc-html |
615 | |
616 | build-doc: stamps/stamp-patch stamps/stamp-build-doc |
617 | @@ -518,14 +582,17 @@ |
618 | clean: control-file |
619 | dh_testdir |
620 | dh_testroot |
621 | - $(MAKE) -f debian/rules unpatch |
622 | + $(MAKE) -f debian/rules unpatch $(CROSS) |
623 | rm -rf stamps .pc |
624 | rm -f debian/test_results |
625 | |
626 | - $(MAKE) -C Doc clean |
627 | - sed 's/^@/#/' Makefile.pre.in | $(MAKE) -f - srcdir=. distclean |
628 | + $(MAKE) -C Doc clean $(CROSS) |
629 | + sed 's/^@/#/' Makefile.pre.in | $(MAKE) -f - srcdir=. distclean $(CROSS) |
630 | rm -rf Lib/test/db_home |
631 | rm -rf $(buildd_static) $(buildd_shared) $(buildd_debug) $(buildd_shdebug) |
632 | +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
633 | + rm -rf $(buildd_cross) |
634 | +endif |
635 | find -name '*.py[co]' | xargs -r rm -f |
636 | rm -f Lib/lib2to3/*.pickle |
637 | rm -rf locales |
638 | @@ -556,6 +623,14 @@ |
639 | sed -i 's/\(Py_InitModule4[^@]*\)@/\1_64@/' \ |
640 | debian/lib$(PVER).symbols debian/$(PVER)-dbg.symbols |
641 | endif |
642 | +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
643 | + @echo "Drop any arch dependent symbols" |
644 | + @symfiles=`find debian -type f -name \*.symbols` ; \ |
645 | + for f in $$symfiles ; do \ |
646 | + nawk '$$0 ~ /arch=/ {next;}; {print $$0}' $$f > tmpfile ; \ |
647 | + mv tmpfile $$f ; \ |
648 | + done ; |
649 | +endif |
650 | |
651 | install: $(build_target) stamps/stamp-install |
652 | stamps/stamp-install: stamps/stamp-build control-file stamps/stamp-control |
653 | @@ -568,9 +643,9 @@ |
654 | : # their packages' directories. |
655 | install -d $(d)/usr |
656 | ifeq ($(with_interp),static) |
657 | - $(MAKE) -C $(buildd_static) install prefix=$(CURDIR)/$(d)/usr |
658 | + $(MAKE) -C $(buildd_static) install prefix=$(CURDIR)/$(d)/usr $(CROSS) |
659 | else |
660 | - $(MAKE) -C $(buildd_shared) install prefix=$(CURDIR)/$(d)/usr |
661 | + $(MAKE) -C $(buildd_shared) install prefix=$(CURDIR)/$(d)/usr $(CROSS) |
662 | endif |
663 | -find $(d)/usr/lib/python$(VER) -name '*_failed*.so' |
664 | find $(d)/usr/lib/python$(VER) -name '*_failed*.so' | xargs -r rm -f |
665 | @@ -806,8 +881,13 @@ |
666 | |
667 | : # generate binfmt file |
668 | mkdir -p $(d_min)/usr/share/binfmts |
669 | +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) |
670 | $(buildd_static)/python debian/mkbinfmt.py $(PVER) \ |
671 | > $(d_min)/usr/share/binfmts/$(PVER) |
672 | +else |
673 | + $(buildd_cross)/python debian/mkbinfmt.py $(PVER) \ |
674 | + > $(d_min)/usr/share/binfmts/$(PVER) |
675 | +endif |
676 | |
677 | : # desktop entry |
678 | mkdir -p $(d_base)/usr/share/applications |
679 | @@ -823,7 +903,7 @@ |
680 | |
681 | : # install debug package |
682 | rm -rf $(d)-dbg |
683 | - $(MAKE) -C $(buildd_debug) install DESTDIR=$(CURDIR)/$(d)-dbg |
684 | + $(MAKE) -C $(buildd_debug) install DESTDIR=$(CURDIR)/$(d)-dbg $(CROSS) |
685 | dh_installdirs -p$(p_dbg) \ |
686 | usr/bin \ |
687 | usr/share/man/man1 \ |
Hi Peter,
Still looking for an explanation for the modifications to debian/ patches/ unicode. diff and debian/ patches/ multibytecodec. diff here; I think this was a workaround for other brokenness at the time you were first patching python, can you please check whether the package cross-builds for you without these changes?
+ buildir = os.environ. get('CURDIR' )
This may be a GNU-make-specific variable; ok for me, not sure if it's ok for upstream.
+ os.environ[ "LDFLAGS" ] = '-L /usr/' + exec_prefix + '/lib -L /usr/' + exec_prefix + '/usr/lib' "CFLAGS" ] = '-I/usr/' + exec_prefix + '/include -I/usr/' + exec_prefix + '/usr/include'
+ os.environ[
/usr/$arch/usr/? What creates such a directory? I don't think that should be in here.
@@ -342,7 +402,7 @@ ssing test_socketserver test_wait3 test_wait4 test_gdb
ifneq (,$(filter $(DEB_HOST_ARCH), hppa))
TEST_EXCLUDES += test_fork1 test_multiproce
endif
-ifneq (,$(filter $(DEB_HOST_ARCH), arm avr32))
+ifneq (,$(filter $(DEB_HOST_ARCH), avr32))
TEST_EXCLUDES += test_ctypes
endif
ifneq (,$(filter $(DEB_HOST_ARCH), m68k avr32))
This seems to be an unrelated change; we should never match on 'arm' here, that's the obsolete OABI architecture (never existed for Ubuntu, no longer available for Debian). Please drop this change.
@@ -556,6 +623,14 @@ InitModule4[ ^@]*\)@ /\1_64@ /' \
debian/ lib$(PVER) .symbols debian/ $(PVER) -dbg.symbols BUILD_GNU_ TYPE),$ (DEB_HOST_ GNU_TYPE) )
sed -i 's/\(Py_
endif
+ifneq ($(DEB_
+ @echo "Drop any arch dependent symbols"
+ @symfiles=`find debian -type f -name \*.symbols` ; \
+ for f in $$symfiles ; do \
+ nawk '$$0 ~ /arch=/ {next;}; {print $$0}' $$f > tmpfile ; \
+ mv tmpfile $$f ; \
+ done ;
+endif
install: $(build_target) stamps/ stamp-install stamp-install: stamps/stamp-build control-file stamps/ stamp-control
stamps/
This seems to be a workaround for a dpkg-shlibdeps bug, isn't it? We shouldn't need to drop architecture- dependent symbols by hand, the commands that postprocess these should know which architecture is targeted. If this is a workaround, let's not change this here - let's get it fixed where it should be fixed instead.
Finally, there are an awful lot of changes to Makefile.pre.in to replace 'BUILDPYTHON' with 'HOSTPYTHON'; but the changes exactly reverse the meaning wrt GNU cross-compiling convention. I can't remember if this was already the case in the earlier merge request, but given how many places this is getting changed to the wrong way around here, I think we should be calling this 'BUILDPYTHON' as is originally the case upstream. Indeed, I think doing it that way around requires fixing up a much smaller number of make target dependencies, changing them from $(BUILDPYTHON) to $(PYTHON), instead of fixing every invocation of $(BUILDPYTHON).
Most of the target dependencies should probably be changed to $(PYTHON) $(BUILDPYTHON), and the $(BUILDPYTHON) target itself should be changed to $(PYTHON), IMHO.