Dnia czwartek, 28 października 2010 o 08:06:35 minami napisał(a): > Shouldn't we stop tweaking LD_LIBRARY_PATH to cross-build gcc? > > In my understanding, the error message: > > error while loading shared libraries: > /usr/powerpc-linux-gnu/lib/libc.so.6: ELF file data encoding not > little-endian > > means: > "failed to load the Perl interpreter > with $LD_LIBRARY_PATH/libc.so instead of /lib/libc.so".
Yes, it means that. I solved that by adding /lib:/usr/lib: to LD_LIBRARY_PATH in attached patch. > Fortunately, recent versions of dpkg-shlibdeps seems to be > wise enough to detect GCC_TARGET and DEB_TARGET_GNU_TYPE > and we no longer have to tell dh_shlibdeps where to search > libraries using a special environment variable. Would be nice. Anyway with attached patch I managed to package biarch powerpc and triarch mipsel gcc-4.5. Please take a look. Regards, -- JID: h...@jabber.org Website: http://marcin.juszkiewicz.com.pl/ LinkedIn: http://www.linkedin.com/in/marcinjuszkiewicz
From 765b884759007e961f53a296183a1bddb9a07ee8 Mon Sep 17 00:00:00 2001 From: Marcin Juszkiewicz <marcin.juszkiew...@linaro.org> Date: Wed, 22 Dec 2010 14:08:41 +0100 Subject: [PATCH] Fix biarch/triarch cross builds. There were two problems: 1. dpkg-shlibdeps failed to find libraries for 64 or n32 builds 2. LD_LIBRARY_PATH lacked host dirs so when 1st problem got fixed it was not working. --- debian/rules.d/binary-fortran.mk | 8 ++++---- debian/rules.d/binary-libgcc.mk | 2 +- debian/rules.d/binary-libgomp.mk | 8 ++++---- debian/rules.d/binary-libmudflap.mk | 9 ++++----- debian/rules.d/binary-libobjc.mk | 10 +++++----- debian/rules.d/binary-libstdcxx.mk | 10 +++++----- debian/rules2 | 2 +- 7 files changed, 24 insertions(+), 25 deletions(-) diff --git a/debian/rules.d/binary-fortran.mk b/debian/rules.d/binary-fortran.mk index cfed225..ee089ae 100644 --- a/debian/rules.d/binary-fortran.mk +++ b/debian/rules.d/binary-fortran.mk @@ -56,8 +56,8 @@ define __do_fortran mv $(install_stamp) $(install_stamp)-tmp rm -rf $(d_l) $(d_d) - dh_installdirs -p$(p_l) $(2) - DH_COMPAT=2 dh_movefiles -p$(p_l) $(2)/libgfortran.so.* + dh_installdirs -p$(p_l) $(usr_lib$(2)) + DH_COMPAT=2 dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.* debian/dh_doclink -p$(p_l) $(p_base) debian/dh_doclink -p$(p_d) $(p_base) @@ -67,7 +67,7 @@ define __do_fortran dh_fixperms -p$(p_l) -p$(p_d) dh_makeshlibs -p$(p_l) $(call cross_mangle_shlibs,$(p_l)) - $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) $(call cross_mangle_substvars,$(p_l)) dh_gencontrol -p$(p_l) -p$(p_d) \ -- -v$(DEB_VERSION) $(common_substvars) @@ -79,7 +79,7 @@ define __do_fortran trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) endef -do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(usr_lib$(1))) +do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1)) define do_fortran_dev dh_installdirs -p$(2) $(gcc_lib_dir$(1)) diff --git a/debian/rules.d/binary-libgcc.mk b/debian/rules.d/binary-libgcc.mk index b45a4b4..ba1039f 100644 --- a/debian/rules.d/binary-libgcc.mk +++ b/debian/rules.d/binary-libgcc.mk @@ -64,7 +64,7 @@ define __do_libgcc ) ) - $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) $(call cross_mangle_substvars,$(p_l)) dh_compress -p$(p_l) -p$(p_d) diff --git a/debian/rules.d/binary-libgomp.mk b/debian/rules.d/binary-libgomp.mk index 736b681..c18313b 100644 --- a/debian/rules.d/binary-libgomp.mk +++ b/debian/rules.d/binary-libgomp.mk @@ -15,8 +15,8 @@ define __do_gomp mv $(install_stamp) $(install_stamp)-tmp rm -rf $(d_l) $(d_d) - dh_installdirs -p$(p_l) $(2) - DH_COMPAT=2 dh_movefiles -p$(p_l) $(2)/libgomp.so.* + dh_installdirs -p$(p_l) $(usr_lib$(2)) + DH_COMPAT=2 dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.* debian/dh_doclink -p$(p_l) $(p_base) debian/dh_doclink -p$(p_d) $(p_base) @@ -26,7 +26,7 @@ define __do_gomp dh_fixperms -p$(p_l) -p$(p_d) dh_makeshlibs -p$(p_l) $(call cross_mangle_shlibs,$(p_l)) - $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) $(call cross_mangle_substvars,$(p_l)) dh_gencontrol -p$(p_l) -p$(p_d) \ -- -v$(DEB_VERSION) $(common_substvars) @@ -40,7 +40,7 @@ endef # ---------------------------------------------------------------------- -do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(usr_lib$(1))) +do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1)) $(binary_stamp)-libgomp: $(install_stamp) $(call do_gomp,) diff --git a/debian/rules.d/binary-libmudflap.mk b/debian/rules.d/binary-libmudflap.mk index e35ae5c..ff89781 100644 --- a/debian/rules.d/binary-libmudflap.mk +++ b/debian/rules.d/binary-libmudflap.mk @@ -24,9 +24,8 @@ define __do_mudflap mv $(install_stamp) $(install_stamp)-tmp rm -rf $(d_l) $(d_d) - dh_installdirs -p$(p_l) $(2) - DH_COMPAT=2 dh_movefiles -p$(p_l) \ - $(2)/libmudflap*.so.* + dh_installdirs -p$(p_l) $(usr_lib$(2)) + DH_COMPAT=2 dh_movefiles -p$(p_l) $(usr_lib$(2))/libmudflap*.so.* debian/dh_doclink -p$(p_l) $(p_base) debian/dh_doclink -p$(p_d) $(p_base) @@ -38,7 +37,7 @@ define __do_mudflap dh_fixperms -p$(p_l) -p$(p_d) dh_makeshlibs -p$(p_l) -V '$(p_l) (>= $(DEB_SOVERSION))' $(call cross_mangle_shlibs,$(p_l)) - $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) $(call cross_mangle_substvars,$(p_l)) dh_gencontrol -p$(p_l) -p$(p_d) \ -- -v$(DEB_VERSION) $(common_substvars) @@ -50,7 +49,7 @@ define __do_mudflap trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) endef -do_mudflap = $(call __do_mudflap,lib$(1)mudflap$(MUDFLAP_SONAME),$(usr_lib$(1))) +do_mudflap = $(call __do_mudflap,lib$(1)mudflap$(MUDFLAP_SONAME),$(1)) define __do_mudflap_dev dh_installdirs -p$(p_mfd) $(1) diff --git a/debian/rules.d/binary-libobjc.mk b/debian/rules.d/binary-libobjc.mk index ed0e196..97e466b 100644 --- a/debian/rules.d/binary-libobjc.mk +++ b/debian/rules.d/binary-libobjc.mk @@ -12,10 +12,10 @@ ifeq ($(with_libn32objc),yes) endif files_lobjc = \ - $(2)/libobjc.so.* + $(usr_lib$(2))/libobjc.so.* ifeq ($(with_objc_gc),yes) files_lobjc += \ - $(2)/libobjc_gc.so.* + $(usr_lib$(2))/libobjc_gc.so.* endif define __do_libobjc @@ -25,7 +25,7 @@ define __do_libobjc rm -rf $(d_l) $(d_d) dh_installdirs -p$(p_l) \ - $(2) + $(usr_lib$(2)) DH_COMPAT=2 dh_movefiles -p$(p_l) \ $(files_lobjc) @@ -37,7 +37,7 @@ define __do_libobjc dh_fixperms -p$(p_l) -p$(p_d) dh_makeshlibs -p$(p_l) -Xlibobjc_gc.so $(call cross_mangle_shlibs,$(p_l)) - $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) $(call cross_mangle_substvars,$(p_l)) dh_gencontrol -p$(p_l) -p$(p_d) \ -- -v$(DEB_VERSION) $(common_substvars) @@ -51,7 +51,7 @@ endef # ---------------------------------------------------------------------- -do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(usr_lib$(1))) +do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1)) $(binary_stamp)-libobjc: $(install_stamp) $(call do_libobjc,) diff --git a/debian/rules.d/binary-libstdcxx.mk b/debian/rules.d/binary-libstdcxx.mk index 88cb511..f3047c8 100644 --- a/debian/rules.d/binary-libstdcxx.mk +++ b/debian/rules.d/binary-libstdcxx.mk @@ -143,7 +143,7 @@ define __do_libstdcxx dh_makeshlibs -p$(p_l) $(call cross_mangle_shlibs,$(p_l)) - $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ -L$(p_l$(2)gcc) -l:$(d)/$(usr_lib$(2)): $(call cross_mangle_substvars,$(p_l)) @@ -182,7 +182,7 @@ define __do_libstdcxx_dbg rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a ) - $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ -L$(p_l$(2)gcc) -l:$(d)/$(usr_lib$(2)): $(call cross_mangle_substvars,$(p_d)) @@ -313,11 +313,11 @@ endif dh_fixperms -p$(p_dev) -p$(p_pic) -p$(p_dbg) # XXX: what about biarchn32? #ifeq ($(biarch64),yes) -# $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib64 +# DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib64 #else -# $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib32/debug +# DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib32/debug #endif - $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) + DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) $(call cross_mangle_substvars,$(p_dbg)) dh_gencontrol -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ -- -v$(DEB_VERSION) $(common_substvars) diff --git a/debian/rules2 b/debian/rules2 index 5dc7309..3490d45 100644 --- a/debian/rules2 +++ b/debian/rules2 @@ -471,7 +471,7 @@ else --with-headers=/$(PF)/$(DEB_TARGET_GNU_TYPE)/include \ --with-libs=/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib endif - SET_CROSS_LIB_PATH = LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib + SET_CROSS_LIB_PATH = LD_LIBRARY_PATH=/lib:/usr/lib:$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib$${DIRNAME} endif ifeq ($(with_bootstrap),off) -- 1.7.2.3