Package: klibc
Severity: normal
Tags: patch

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Klibc fails to cross build for armel architecture:
http://people.linaro.org/~wookey/buildd/precise/sbuild-ma/klibc_1.5.25-1ubuntu1-precise-ma-cross-armel-20120323-023815.34378.log

echo 'multiarch_path=arm-linux-gnueabi' >> klcc/klibc.config
  perl klcc/makeklcc.pl /«PKGBUILDDIR»/klcc/klcc.in klcc/klibc.config 
/usr/bin/perl > klcc/klcc || ( rm -f klcc/klcc ; exit 1 ) && chmod a+x klcc/klcc
:
make -f /«PKGBUILDDIR»/scripts/Kbuild.klibc obj=.
make -rR -f /«PKGBUILDDIR»/scripts/Kbuild.klibc obj=scripts/basic
  gcc -Wp,-MD,scripts/basic/.fixdep.d -Wall -Wstrict-prototypes -O2 
-fomit-frame-pointer -o scripts/basic/fixdep scripts/basic/fixdep.c
:
make -rR -f /«PKGBUILDDIR»/scripts/Kbuild.klibc obj=usr/klibc
  arm-linux-gnueabi-gcc -Wp,-MD,usr/klibc/.__static_init.o.d -nostdinc 
-iwithprefix include -I/«PKGBUILDDIR»/usr/include/arch/x86_64 
-Iusr/include/arch/x86_64 -I/«PKGBUILDDIR»/usr/include/bits64 
-Iusr/include/bits64 -I/«PKGBUILDDIR»/usr/klibc/../include 
-Iusr/klibc/../include -I/«PKGBUILDDIR»/usr/include -Iusr/include 
-I/«PKGBUILDDIR»/linux/include -Ilinux/include 
-I/«PKGBUILDDIR»/linux/arch/x86/include -Ilinux/arch/x86/include -D__KLIBC__=1 
-D__KLIBC_MINOR__=5 -D_BITSIZE=64 -fno-stack-protector -fwrapv -m64 -Os 
-fno-asynchronous-unwind-tables -fomit-frame-pointer -falign-functions=1 
-falign-jumps=1 -falign-loops=1 -W -Wall -Wno-sign-compare 
-Wno-unused-parameter -c -o usr/klibc/__static_init.o usr/klibc/__static_init.c
cc1: error: unrecognized command line option '-m64'
make[4]: *** [usr/klibc/__static_init.o] Error 1
make[3]: *** [all] Error 2
make[2]: *** [klibc] Error 2
make[2]: Leaving directory `/«PKGBUILDDIR»'
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory `/«PKGBUILDDIR»'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

For armhf it fails later:

make -f /tmp/porting/klibc-1.5.25/scripts/Kbuild.install obj=.
echo " INSTALL headers + man pages to debian/tmp/usr/lib/klibc"
  INSTALL headers + man pages to debian/tmp/usr/lib/klibc
mkdir -p debian/tmp/usr/bin
mkdir -p debian/tmp/usr/man/man1
mkdir -p debian/tmp/lib
mkdir -p debian/tmp/usr/lib/klibc
rm -rf debian/tmp/usr/lib/klibc/include
mkdir -p debian/tmp/usr/lib/klibc/include
mkdir -p debian/tmp/usr/lib/klibc/lib
mkdir -p debian/tmp/usr/lib/klibc/bin
if [ -n "arm-linux-gnueabihf" ]; then \
                ln -s /usr/include/arm-linux-gnueabihf/asm 
debian/tmp/usr/lib/klibc/include/ || exit; \
        fi
for x in /usr/include/linux /usr/include/asm*; do \
                ln -s ${x} debian/tmp/usr/lib/klibc/include/ || exit; \
        done
ln: failed to create symbolic link `debian/tmp/usr/lib/klibc/include/asm': File 
exists
make[3]: *** [header] Error 1
make[2]: *** [install] Error 2
make[2]: Leaving directory `/tmp/porting/klibc-1.5.25'
make[1]: *** [override_dh_auto_install] Error 2
make[1]: Leaving directory `/tmp/porting/klibc-1.5.25'
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debuild: fatal error at line 1350:
dpkg-buildpackage -rfakeroot -d -us -uc -b -aarmhf -nc failed

Attached patch adds "ARCH=arm" which is needed when cross building for
armel architecture. Also I am patching order of symlinks done by
klibc-linux-libc-dev patch to make sure that build will use
/usr/include/asm/ of target architecture.

- -- System Information:
Debian Release: wheezy/sid
  APT prefers precise-updates
  APT policy: (999, 'precise-updates'), (999, 'precise'), (500, 
'precise-security'), (50, 'precise')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-20-generic (SMP w/8 CPU cores)
Locale: LANG=pl_PL.UTF-8, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEARECAAYFAk91hkkACgkQeQ6MlGH/2qs+OQCfbGvGbTy1ulO+JS5nfvUJPc2t
KmIAnRcLXlDOYPcL8hPY+AA397pGdz7Y
=e5/E
-----END PGP SIGNATURE-----
diff -Nru klibc-2.0~rc3/debian/changelog klibc-2.0~rc3/debian/changelog
--- klibc-2.0~rc3/debian/changelog	2012-03-02 11:08:54.000000000 +0100
+++ klibc-2.0~rc3/debian/changelog	2012-03-30 12:06:21.000000000 +0200
@@ -1,3 +1,9 @@
+klibc (2.0~rc3-2) unstable; urgency=low
+
+  * Fix cross building - LP: #963047
+
+ -- Marcin Juszkiewicz <marcin.juszkiew...@linaro.org>  Fri, 30 Mar 2012 12:05:41 +0200
+
 klibc (2.0~rc3-1) unstable; urgency=low
 
   * New upstream snapshot (closes: #653790)
diff -Nru klibc-2.0~rc3/debian/patches/fix-cross-build klibc-2.0~rc3/debian/patches/fix-cross-build
--- klibc-2.0~rc3/debian/patches/fix-cross-build	1970-01-01 01:00:00.000000000 +0100
+++ klibc-2.0~rc3/debian/patches/fix-cross-build	2012-03-30 12:03:03.000000000 +0200
@@ -0,0 +1,32 @@
+Author: Marcin Juszkiewicz <marcin.juszkiew...@linaro.org>
+Description: fix cross build
+
+When klibc is cross built we want /usr/include/DEB_HOST_MULTIARCH/asm as
+include/asm not /usr/include/DEB_BUILD_MULTIARCH/asm one.
+
+---
+ scripts/Kbuild.install |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- klibc-1.5.25.orig/scripts/Kbuild.install
++++ klibc-1.5.25/scripts/Kbuild.install
+@@ -93,16 +93,16 @@ header:
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)
+ 	$(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib
+ 	$(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin
+-	$(Q)if [ -n "$(DEB_HOST_MULTIARCH)" ]; then \
+-		ln -s /usr/include/$(DEB_HOST_MULTIARCH)/asm $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
+-	fi
+ 	$(Q)for x in /usr/include/linux /usr/include/asm*; do \
+ 		ln -s $${x} $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
+ 	done
++	$(Q)if [ -n "$(DEB_HOST_MULTIARCH)" ]; then \
++		ln -sf /usr/include/$(DEB_HOST_MULTIARCH)/asm $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/ || exit; \
++	fi
+ 	$(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/.
+ 	$(Q)chmod -R a+rX $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include
+ 	$(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1
+ 	$(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir)
+ 
diff -Nru klibc-2.0~rc3/debian/patches/series klibc-2.0~rc3/debian/patches/series
--- klibc-2.0~rc3/debian/patches/series	2012-03-02 10:26:06.000000000 +0100
+++ klibc-2.0~rc3/debian/patches/series	2012-03-30 12:07:06.000000000 +0200
@@ -5,3 +5,4 @@
 multiarch-include-path
 Fix-minimal-mv-to-work-across-fs
 m68k-support
+fix-cross-build
diff -Nru klibc-2.0~rc3/debian/rules klibc-2.0~rc3/debian/rules
--- klibc-2.0~rc3/debian/rules	2012-03-02 10:26:06.000000000 +0100
+++ klibc-2.0~rc3/debian/rules	2012-03-30 12:03:03.000000000 +0200
@@ -7,7 +7,7 @@
 export DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 
 ifeq ($(DEB_HOST_ARCH),armel)
-DEB_MAKE_ENVVARS := CONFIG_AEABI=y
+DEB_MAKE_ENVVARS := ARCH=arm CONFIG_AEABI=y
 endif
 ifeq ($(DEB_HOST_ARCH),armhf)
 DEB_MAKE_ENVVARS := ARCH=arm CONFIG_AEABI=y CPU_ARCH=armv7-a CPU_TUNE=cortex-a8

Reply via email to