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: