[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#553047: libc6: (cross) libc-2.10.1.so/powerpc: ELF file data



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:      hrw@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.juszkiewicz@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


Reply to: