Source: elfutils Version: 0.165-3 Severity: normal Tags: patch Dear elfutils maintainers,
elfutils currently fails to cross build from source as can be seen in http://subdivi.de/~helmut/debomatic-logs/elfutils_0.165-3_ppc64el.build. During build, the tool i386_gendis is compiled using the host architecture compiler and then run. Unfortunately, we cannot simply change it to use the host architecture compiler, because it links libeu.a which is also needed for the host architecture. Thus libeu.a needs to be built twice somehow. The crucial insight here is that the output of i386_gendis is architecture independent and that it is only run in maintainer mode. So we can simply build elfutils once natively in maintainer mode and the build it again disabling maintainer mode while reusing some artifacts from the previous build. This sounds complex, but it actually works. Unless you have a better idea to achieve cross building, please consider applying the attached patch. Helmut
--- a/debian/rules +++ b/debian/rules @@ -20,7 +20,7 @@ DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) - confflags += --build=$(DEB_HOST_GNU_TYPE) + confflags += --build=$(DEB_HOST_GNU_TYPE) --enable-maintainer-mode make_check = yes else confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) @@ -41,10 +41,14 @@ config.status: configure.ac dh_testdir autoreconf -fis +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ./configure --enable-maintainer-mode + $(MAKE) $(MAKEFLAGS) + $(MAKE) clean +endif CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure $(confflags) --prefix=/usr \ --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \ - --enable-maintainer-mode \ --program-prefix=eu- build: build-stamp