[oe] [PATCH] gphoto2: search libdir in sysroot
Jan Kobler
eng1 at koblersystems.de
Fri Mar 25 20:32:37 UTC 2011
In the configuration file of gphoto2 the wrong libdir was searched for popt_libdir. The libdir should be searched in the sysroot folder, if sysroot is not empty.
This is a fix for this kind of error message:
| powerpc-angstrom-linux-libtool: link: powerpc-angstrom-linux-gcc -mcpu=e300c3 --sysroot=/my_openembedded/tmp/sysroots/ppce300c3-angstrom-linux -I..
-I../gphoto2 -DLOCALEDIR=\"/usr/share/locale\" -Wall -Wmissing-declarations -Wmissing-prototypes -g -D_GPHOTO2_INTERNAL_CODE
-I/my_openembedded/tmp/sysroots/ppce300c3-angstrom-linux/my_openembedded/tmp/sysroots/ppce300c3-angstrom-linux/usr/include/gphoto2
-I/my_openembedded/tmp/sysroots/ppce300c3-angstrom-linux/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb2 -Wl,-O1
-Wl,--hash-style=gnu -Wall -g -Wl,-O1 -Wl,--hash-style=gnu -o gphoto2 gphoto2-actions.o gphoto2-foreach.o gphoto2-gp-params.o gphoto2-spawnve.o gphoto2-main.o
gphoto2-version.o gphoto2-range.o gphoto2-shell.o /my_openembedded/tmp/sysroots/ppce300c3-angstrom-linux/usr/lib/libjpeg.so -lreadline
/usr/lib64/libgphoto2.so -L/usr/lib64 /usr/lib64/libgphoto2_port.so /usr/lib64/libltdl.so -ldl -lpthread /usr/lib64/libexif.so -lm /usr/lib64/libusb.so
/usr/lib64/libpopt.so -Wl,-rpath -Wl,/usr/lib
| /my_openembedded/tmp/sysroots/x86_64-linux/usr/ppce300c3/lib/gcc/powerpc-angstrom-linux/4.5.3/../../../../powerpc-angstrom-linux/bin/ld: skipping
incompatible /usr/lib64/libreadline.so when searching for -lreadline
| /my_openembedded/tmp/sysroots/x86_64-linux/usr/ppce300c3/lib/gcc/powerpc-angstrom-linux/4.5.3/../../../../powerpc-angstrom-linux/bin/ld: skipping
incompatible /usr/lib64/libreadline.a when searching for -lreadline
| /usr/lib64/libgphoto2.so: could not read symbols: File in wrong format
| collect2: ld returned 1 exit status
| make[2]: *** [gphoto2] Error 1
| make[2]: Leaving directory `/my_openembedded/tmp/work/ppce300c3-angstrom-linux/gphoto2-2.4.8-r0/gphoto2-2.4.8/gphoto2'
| make[1]: *** [all-recursive] Error 1
| make[1]: Leaving directory `/my_openembedded/tmp/work/ppce300c3-angstrom-linux/gphoto2-2.4.8-r0/gphoto2-2.4.8'
| make: *** [all] Error 2
NOTE: package gphoto2-2.4.8-r0: task do_compile: Failed
ERROR: Function 'do_compile' failed (see /my_openembedded/tmp/work/ppce300c3-angstrom-linux/gphoto2-2.4.8-r0/temp/log.do_compile.20262 for further
information)
ERROR: Task 6 (/my_openembedded/openembedded/recipes/gphoto2/gphoto2_2.4.8.bb, do_compile) failed with exit code '1'
ERROR: '/my_openembedded/openembedded/recipes/gphoto2/gphoto2_2.4.8.bb' failed
There is no lib64 in /my_openembedded/tmp/sysroots/ppce300c3-angstrom-linux. The configure script is testing the wrong folder /usr/lib64.
Instead of
elif test -d "${popt_libdir}"; then
the test should be
elif test -d "${lt_sysroot}/${popt_libdir}"; then
Because ${lt_sysroot} may be also an empty string, it is important to test it and define a new variable ${popt_sysroot} accordingly.
Because there is already a patch file "recipes/gphoto2/files/gphoto-popt-fixup.patch", I am providing a patch for this patch file.
After "bitbake -c configure gphoto2" the changed part of the file "/my_openembedded/tmp/work/ppce300c3-angstrom-linux/gphoto2-2.4.8-r0/gphoto2-2.4.8/configure" is
# try to find options to link against popt
LDFLAGS_save="$LDFLAGS"
popt_links=no
popt_sysroot=""
if test "x${lt_sysroot}" != x; then
popt_sysroot="${lt_sysroot}/"
fi
for popt_prefix in /usr "" /usr/local; do
# We could have "/usr" and "lib64" at the beginning of the
# lists. Then the first tested location would
# incidentally be the right one on 64bit systems, and
# thus work around a bug in libtool on 32bit systems:
#
# 32bit libtool doesn't know about 64bit systems, and so the
# compilation will fail when linking a 32bit library from
# /usr/lib to a 64bit binary.
#
# This hack has been confirmed to workwith a
# 32bit Debian Sarge and 64bit Fedora Core 3 system.
for ldir in lib64 "" lib; do
popt_libdir="${popt_prefix}/${ldir}"
if test "${popt_libdir}" = "/"; then
popt_libdir=""
elif test -d "${popt_sysroot}${popt_libdir}"; then
LDFLAGS="-L${popt_libdir} ${LDFLAGS_save}"
else
continue
fi
# Avoid caching of results
ac_cv_lib_popt_poptStuffArgs=""
unset ac_cv_lib_popt_poptStuffArgs
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for poptStuffArgs in -lpopt" >&5
Signed-off-by: Jan Kobler <eng1 at koblersystems.de>
---
recipes/gphoto2/files/gphoto-popt-fixup.patch | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/recipes/gphoto2/files/gphoto-popt-fixup.patch b/recipes/gphoto2/files/gphoto-popt-fixup.patch
index 66b6168..61a4216 100644
--- a/recipes/gphoto2/files/gphoto-popt-fixup.patch
+++ b/recipes/gphoto2/files/gphoto-popt-fixup.patch
@@ -11,11 +11,24 @@ Index: gphoto2-2.4.2/m4m/gp-check-popt.m4
else
continue
fi
-@@ -113,7 +113,7 @@
+@@ -96,6 +96,10 @@
+ # try to find options to link against popt
+ LDFLAGS_save="$LDFLAGS"
+ popt_links=no
++ popt_sysroot=""
++ if test "x${lt_sysroot}" != x; then
++ popt_sysroot="${lt_sysroot}/"
++ fi
+ for popt_prefix in /usr "" /usr/local; do
+ # We could have "/usr" and "lib64" at the beginning of the
+ # lists. Then the first tested location would
+@@ -112,8 +116,8 @@
+ popt_libdir="${popt_prefix}/${ldir}"
if test "${popt_libdir}" = "/"; then
popt_libdir=""
- elif test -d "${popt_libdir}"; then
+- elif test -d "${popt_libdir}"; then
- LDFLAGS="-L${popt_libdir} ${LDFLAGS}"
++ elif test -d "${popt_sysroot}${popt_libdir}"; then
+ LDFLAGS="-L${popt_libdir} ${LDFLAGS_save}"
else
continue
--
1.7.3.4
More information about the Openembedded-devel
mailing list