Patchwork [V2] ldconfig-native: also default to lib32 and lib64 directories

login
register
mail settings
Submitter Ming Liu
Date May 5, 2014, 2:30 a.m.
Message ID <1399257033-7155-1-git-send-email-ming.liu@windriver.com>
Download mbox | patch
Permalink /patch/71493/
State Accepted
Commit b84d7915dd0adbdf06008c1fd6f8b4e6991e7e08
Headers show

Comments

Ming Liu - May 5, 2014, 2:30 a.m.
make ldconfig default to /lib+/usr/lib, /lib32+/usr/lib32 and
/lib64+/usr/lib64 on bi-ABI architectures.

Signed-off-by: Ming Liu <ming.liu@windriver.com>
---
 .../ldconfig-default-to-all-multilib-dirs.patch    | 37 ++++++++++++++++++++++
 meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb |  4 ++-
 2 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
Nick D'Ademo - May 7, 2014, 8:50 a.m.
This patch actually breaks my MULTILIB build (Intel NUC platform).
I'll try and get some more details.


On Mon, May 5, 2014 at 12:30 PM, Ming Liu <ming.liu@windriver.com> wrote:

> make ldconfig default to /lib+/usr/lib, /lib32+/usr/lib32 and
> /lib64+/usr/lib64 on bi-ABI architectures.
>
> Signed-off-by: Ming Liu <ming.liu@windriver.com>
> ---
>  .../ldconfig-default-to-all-multilib-dirs.patch    | 37
> ++++++++++++++++++++++
>  meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb |  4 ++-
>  2 files changed, 40 insertions(+), 1 deletion(-)
>  create mode 100644
> meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
>
> diff --git
> a/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
> b/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
> new file mode 100644
> index 0000000..5ed4f6f
> --- /dev/null
> +++
> b/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
> @@ -0,0 +1,37 @@
> +Upstream-Status: Inappropriate [embedded specific]
> +
> +make ldconfig default to both /lib+/usr/lib, /lib32+/usr/lib32 and
> +/lib64+/usr/lib64 on bi-ABI architectures.
> +
> +---
> + ldconfig.c |   10 ++++++++++
> + 1 file changed, 10 insertions(+)
> +
> +diff -urpN a/ldconfig.c b/ldconfig.c
> +--- a/ldconfig.c
> ++++ b/ldconfig.c
> +@@ -52,7 +52,11 @@
> +
> + #define SYSCONFDIR "/etc"
> + #define LIBDIR "/usr/lib"
> ++#define LIBDIR32 "/usr/lib32"
> ++#define LIBDIR64 "/usr/lib64"
> + #define SLIBDIR "/lib"
> ++#define SLIBDIR32 "/lib32"
> ++#define SLIBDIR64 "/lib64"
> + # define N_(msgid)  msgid
> + #define _(msg) msg
> +
> +@@ -1373,6 +1377,12 @@ main (int argc, char **argv)
> +       add_system_dir (SLIBDIR);
> +       if (strcmp (SLIBDIR, LIBDIR))
> +       add_system_dir (LIBDIR);
> ++      add_system_dir (SLIBDIR32);
> ++      if (strcmp (SLIBDIR32, LIBDIR32))
> ++      add_system_dir (LIBDIR32);
> ++      add_system_dir (SLIBDIR64);
> ++      if (strcmp (SLIBDIR64, LIBDIR64))
> ++      add_system_dir (LIBDIR64);
> +     }
> +
> +   const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;
> diff --git a/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bbb/meta/recipes-core/eglibc/
> ldconfig-native_2.12.1.bb
> index d7bc444..75ffbf6 100644
> --- a/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
> +++ b/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
> @@ -10,7 +10,9 @@ SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \
>             file://32and64bit.patch \
>             file://endian-ness_handling.patch \
>             file://flag_fix.patch \
> -           file://endianess-header.patch"
> +           file://endianess-header.patch \
> +           file://ldconfig-default-to-all-multilib-dirs.patch \
> +"
>
>  PR = "r2"
>
> --
> 1.8.4.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
Nick D'Ademo - May 7, 2014, 1:51 p.m.
"ld: cannot find -lgcc"

This is the partial log:


| x86_64-poky-linux-gcc  -m64 -march=corei7 -mtune=corei7 -mfpmath=sse
-msse4.2 --sysroot=/home/nick/poky/build/tmp/sysroots/8tree-tcbootstrap
-nostdlib -nostartfiles -r -o
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/libc_pic.os
\
|      -Wl,-d -Wl,--whole-archive
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/libc_pic.a
-o
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/libc_pic.os
| x86_64-poky-linux-gcc  -m64 -march=corei7 -mtune=corei7 -mfpmath=sse
-msse4.2 --sysroot=/home/nick/poky/build/tmp/sysroots/8tree-tcbootstrap
-nostdlib -nostartfiles -r -o
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/elf/librtld.map.o
'-Wl,-('
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/elf/dl-allobjs.os
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/libc_pic.a
-lgcc '-Wl,-)'
-Wl,-Map,/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/elf/librtld.mapT
|
/home/nick/poky/build/tmp/sysroots/i686-linux/usr/libexec/x86_64-poky-linux.gcc-cross-initial-x86_64/gcc/x86_64-poky-linux/4.9.0/ld:
cannot find -lgcc
| collect2: error: ld returned 1 exit status
| make[2]: ***
[/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/build-x86_64-poky-linux/elf/librtld.map]
Error 1
| make[2]: *** Waiting for unfinished jobs....
| make[2]: Leaving directory
`/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/eglibc-2.19/libc/elf'
| make[1]: *** [elf/subdir_lib] Error 2
| make[1]: Leaving directory
`/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/eglibc-2.19/libc'
| make: *** [all] Error 2
| ERROR: oe_runmake failed
| WARNING:
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/temp/run.do_compile.5579:1
exit 1 from
|   exit 1
| ERROR: Function failed: do_compile (log file is located at
/home/nick/poky/build/tmp/work/corei7-64-poky-linux/eglibc/2.19-r0/temp/log.do_compile.5579)
ERROR: Task 40 (/home/nick/poky/meta/recipes-core/eglibc/eglibc_2.19.bb,
do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 1275 tasks of which 20 didn't need to be
rerun and 2 failed.
Waiting for 0 running tasks to finish:

Summary: 2 tasks failed:
  virtual:multilib:lib32:/home/nick/poky/meta/recipes-core/eglibc/
eglibc_2.19.bb, do_compile
  /home/nick/poky/meta/recipes-core/eglibc/eglibc_2.19.bb, do_compile
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.



On Wed, May 7, 2014 at 6:50 PM, Nick D'Ademo <nickdademo@gmail.com> wrote:

> This patch actually breaks my MULTILIB build (Intel NUC platform).
> I'll try and get some more details.
>
>
>
> On Mon, May 5, 2014 at 12:30 PM, Ming Liu <ming.liu@windriver.com> wrote:
>
>> make ldconfig default to /lib+/usr/lib, /lib32+/usr/lib32 and
>> /lib64+/usr/lib64 on bi-ABI architectures.
>>
>> Signed-off-by: Ming Liu <ming.liu@windriver.com>
>> ---
>>  .../ldconfig-default-to-all-multilib-dirs.patch    | 37
>> ++++++++++++++++++++++
>>  meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb |  4 ++-
>>  2 files changed, 40 insertions(+), 1 deletion(-)
>>  create mode 100644
>> meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
>>
>> diff --git
>> a/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
>> b/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
>> new file mode 100644
>> index 0000000..5ed4f6f
>> --- /dev/null
>> +++
>> b/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
>> @@ -0,0 +1,37 @@
>> +Upstream-Status: Inappropriate [embedded specific]
>> +
>> +make ldconfig default to both /lib+/usr/lib, /lib32+/usr/lib32 and
>> +/lib64+/usr/lib64 on bi-ABI architectures.
>> +
>> +---
>> + ldconfig.c |   10 ++++++++++
>> + 1 file changed, 10 insertions(+)
>> +
>> +diff -urpN a/ldconfig.c b/ldconfig.c
>> +--- a/ldconfig.c
>> ++++ b/ldconfig.c
>> +@@ -52,7 +52,11 @@
>> +
>> + #define SYSCONFDIR "/etc"
>> + #define LIBDIR "/usr/lib"
>> ++#define LIBDIR32 "/usr/lib32"
>> ++#define LIBDIR64 "/usr/lib64"
>> + #define SLIBDIR "/lib"
>> ++#define SLIBDIR32 "/lib32"
>> ++#define SLIBDIR64 "/lib64"
>> + # define N_(msgid)  msgid
>> + #define _(msg) msg
>> +
>> +@@ -1373,6 +1377,12 @@ main (int argc, char **argv)
>> +       add_system_dir (SLIBDIR);
>> +       if (strcmp (SLIBDIR, LIBDIR))
>> +       add_system_dir (LIBDIR);
>> ++      add_system_dir (SLIBDIR32);
>> ++      if (strcmp (SLIBDIR32, LIBDIR32))
>> ++      add_system_dir (LIBDIR32);
>> ++      add_system_dir (SLIBDIR64);
>> ++      if (strcmp (SLIBDIR64, LIBDIR64))
>> ++      add_system_dir (LIBDIR64);
>> +     }
>> +
>> +   const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;
>> diff --git a/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bbb/meta/recipes-core/eglibc/
>> ldconfig-native_2.12.1.bb
>> index d7bc444..75ffbf6 100644
>> --- a/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
>> +++ b/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
>> @@ -10,7 +10,9 @@ SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \
>>             file://32and64bit.patch \
>>             file://endian-ness_handling.patch \
>>             file://flag_fix.patch \
>> -           file://endianess-header.patch"
>> +           file://endianess-header.patch \
>> +           file://ldconfig-default-to-all-multilib-dirs.patch \
>> +"
>>
>>  PR = "r2"
>>
>> --
>> 1.8.4.1
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>>
>
>
Richard Purdie - May 7, 2014, 2:10 p.m.
On Wed, 2014-05-07 at 23:51 +1000, Nick D'Ademo wrote:
> "ld: cannot find -lgcc"

This iss is not from the ldconfig patch, its due to the addition of gcc
4.9 and the realisation that certain PREFERRED_VERSION directives aren't
working (you'll see its building bits of gcc 4.9 and parts of 4.8).

There are patches out for this, it also needs a bitbake version update
to get one of the fixes.

Cheers,

Richard

Patch

diff --git a/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch b/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
new file mode 100644
index 0000000..5ed4f6f
--- /dev/null
+++ b/meta/recipes-core/eglibc/ldconfig-native-2.12.1/ldconfig-default-to-all-multilib-dirs.patch
@@ -0,0 +1,37 @@ 
+Upstream-Status: Inappropriate [embedded specific]
+
+make ldconfig default to both /lib+/usr/lib, /lib32+/usr/lib32 and
+/lib64+/usr/lib64 on bi-ABI architectures.
+
+---
+ ldconfig.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff -urpN a/ldconfig.c b/ldconfig.c
+--- a/ldconfig.c
++++ b/ldconfig.c
+@@ -52,7 +52,11 @@
+ 
+ #define SYSCONFDIR "/etc"
+ #define LIBDIR "/usr/lib"
++#define LIBDIR32 "/usr/lib32"
++#define LIBDIR64 "/usr/lib64"
+ #define SLIBDIR "/lib"
++#define SLIBDIR32 "/lib32"
++#define SLIBDIR64 "/lib64"
+ # define N_(msgid)  msgid
+ #define _(msg) msg
+ 
+@@ -1373,6 +1377,12 @@ main (int argc, char **argv)
+       add_system_dir (SLIBDIR);
+       if (strcmp (SLIBDIR, LIBDIR))
+ 	add_system_dir (LIBDIR);
++      add_system_dir (SLIBDIR32);
++      if (strcmp (SLIBDIR32, LIBDIR32))
++	add_system_dir (LIBDIR32);
++      add_system_dir (SLIBDIR64);
++      if (strcmp (SLIBDIR64, LIBDIR64))
++	add_system_dir (LIBDIR64);
+     }
+ 
+   const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;
diff --git a/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb b/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
index d7bc444..75ffbf6 100644
--- a/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
+++ b/meta/recipes-core/eglibc/ldconfig-native_2.12.1.bb
@@ -10,7 +10,9 @@  SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \
            file://32and64bit.patch \
            file://endian-ness_handling.patch \
            file://flag_fix.patch \
-           file://endianess-header.patch"
+           file://endianess-header.patch \
+           file://ldconfig-default-to-all-multilib-dirs.patch \
+"
 
 PR = "r2"