Package: zlib Version: 1:1.2.3.3.dfsg-5 Severity: normal Tags: patch zlib used to cross-build successfully but only because of a bug in the cross-build scripts that consistently forced the override of $ENV{'MAKEFLAGS'}. Fixing this bug to allow other packages to build internal build tools correctly (e.g. libx11-6) has resulted in a failure to build certain packages that relied on the former behaviour. zlib is one of those packages.
The top level 'make' command tries to use gcc instead of $(DEB_HOST_GNU_TYPE)-gcc and the LDSHARED value also sets 'gcc' instead of $(DEB_HOST_GNU_TYPE)-gcc. Similarly, the install targets try to use gcc. Finally, 'make test' or 'make check' cannot operate in a cross-building environment. The current build does ignore that error but I've wrapped the call to 'make test' in the attached patch for clarity. The patch has no effect if $(DEB_HOST_GNU_TYPE) matches the value of $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) so I hope you will be able to apply it and help Emdebian cross-build zlib more easily. Thanks. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.22-2-amd64 (SMP w/1 CPU core) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash
--- zlib.old/debian/rules 2007-09-30 15:09:14.000000000 +0100 +++ zlib-1.2.3.3.dfsg/debian/rules 2007-09-30 15:42:52.000000000 +0100 @@ -15,6 +15,15 @@ # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) + CROSSFLAGS += CC=$(DEB_HOST_GNU_TYPE)-gcc + CROSSLDSHARED += LDSHARED="$(DEB_HOST_GNU_TYPE)-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map" +else + CROSSFLAGS += + CROSSLDSHARED += +endif CFLAGS = -Wall -g -D_REENTRANT @@ -73,10 +82,11 @@ build-stamp: configure-stamp dh_testdir - $(MAKE) + $(MAKE) $(CROSSFLAGS) $(CROSSLDSHARED) $(MAKE) CC=$(DEB_HOST_GNU_TYPE)-gcc OPT="$(CFLAGS)" -C contrib/minizip +ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) -$(MAKE) test - +endif touch $@ build64-stamp: configure64-stamp @@ -110,13 +120,13 @@ dh_clean -k dh_installdirs - $(MAKE) prefix=$(CURDIR)/debian/tmp/usr install + $(MAKE) $(CROSSFLAGS) prefix=$(CURDIR)/debian/tmp/usr install install64: install build64-stamp - $(MAKE) -C debian/64 prefix=$(CURDIR)/debian/tmp install + $(MAKE) $(CROSSFLAGS) -C debian/64 prefix=$(CURDIR)/debian/tmp install install32: install build32-stamp - $(MAKE) -C debian/32 prefix=$(CURDIR)/debian/tmp install + $(MAKE) $(CROSSFLAGS) -C debian/32 prefix=$(CURDIR)/debian/tmp install # Build architecture-independent files here. binary-indep: build install