| Submitter | Kumar Gala |
|---|---|
| Date | Aug. 4, 2011, 6:54 p.m. |
| Message ID | <1312484099-29314-1-git-send-email-galak@kernel.crashing.org> |
| Download | mbox | patch |
| Permalink | /patch/9315/ |
| State | New, archived |
| Headers | show |
Comments
On Aug 4, 2011, at 1:54 PM, Kumar Gala wrote: > Rather than tweaking MULTILIB_DIRNAMES & MULTILIB_OSDIRNAMES like is > done for x86-64 via 64bithack.patch. We can just go with gcc defaults > and utilize ${base_lib} for where to find gcc libs. > > Signed-off-by: Kumar Gala <galak@kernel.crashing.org> > --- > .../gcc/gcc-cross-intermediate.inc | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc > index df5958a..7b1bb38 100644 > --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc > +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc > @@ -34,7 +34,7 @@ do_compile () { > do_install () { > oe_runmake 'DESTDIR=${D}' install > install -d ${D}${target_base_libdir}/ > - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/ > + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/ > > # We don't really need this (here shares/ contains man/, info/, locale/). > rm -rf ${D}${datadir}/ > -- > 1.7.3.4 ping - k
On 08/05/2011 09:53 AM, Kumar Gala wrote: > > On Aug 4, 2011, at 1:54 PM, Kumar Gala wrote: > >> Rather than tweaking MULTILIB_DIRNAMES& MULTILIB_OSDIRNAMES like is >> done for x86-64 via 64bithack.patch. We can just go with gcc defaults >> and utilize ${base_lib} for where to find gcc libs. >> >> Signed-off-by: Kumar Gala<galak@kernel.crashing.org> >> --- >> .../gcc/gcc-cross-intermediate.inc | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >> index df5958a..7b1bb38 100644 >> --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >> +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >> @@ -34,7 +34,7 @@ do_compile () { >> do_install () { >> oe_runmake 'DESTDIR=${D}' install >> install -d ${D}${target_base_libdir}/ >> - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/ >> + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/ >> >> # We don't really need this (here shares/ contains man/, info/, locale/). >> rm -rf ${D}${datadir}/ >> -- >> 1.7.3.4 > > ping Kumar, I need to check with Richard on the bitbake.conf and this change, it's in my pending queue for a pull later today. Sau! > > - k > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core >
Hi Kumar,
I just found this patch breaks the qemux86-64 lib64 multilib build.
the error log is as below:
| mv: cannot stat
`/home/kyu3/sdb/multilib2/tmp/work/x86_64-pokymllib64-linux/lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4/image/home/kyu3/sdb/multilib2/tmp/sysroots/x86_64-linux/usr/x86_64-pokymllib64-linux/lib64/*':
No such file or directory
NOTE: package lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4: task
do_install: Failed
ERROR: Task 1557
(virtual:multilib:lib64:/home/kyu3/src/poky/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.6.bb,
do_install) failed with exit code
the error is caused by command in gcc-cross-intermediate.inc:
do_install(): "mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/*
${D}${target_base_libdir}/"
and the reason is that: ${baselib} is lib64 in multilib case, while the
files to be moved is still in ${D}${exec_prefix}/${TARGET_SYS}/lib/*,
so mv will fail.
The fix may be either reverting this commit, or putting the file to
${baselib} instead of lib. I'd like to get your input before going further.
Regards
Ke
on 2011-8-5 2:54, Kumar Gala wrote:
> Rather than tweaking MULTILIB_DIRNAMES& MULTILIB_OSDIRNAMES like is
> done for x86-64 via 64bithack.patch. We can just go with gcc defaults
> and utilize ${base_lib} for where to find gcc libs.
>
> Signed-off-by: Kumar Gala<galak@kernel.crashing.org>
> ---
> .../gcc/gcc-cross-intermediate.inc | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
> index df5958a..7b1bb38 100644
> --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
> +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc
> @@ -34,7 +34,7 @@ do_compile () {
> do_install () {
> oe_runmake 'DESTDIR=${D}' install
> install -d ${D}${target_base_libdir}/
> - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/
> + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/
>
> # We don't really need this (here shares/ contains man/, info/, locale/).
> rm -rf ${D}${datadir}/
revert this is not acceptable as that will break ppc64 builds. I think you need to look at 64bithack.patch and if we really should be using it for multilib builds. - k On Aug 11, 2011, at 1:36 AM, Yu Ke wrote: > Hi Kumar, > > I just found this patch breaks the qemux86-64 lib64 multilib build. > > the error log is as below: > > | mv: cannot stat `/home/kyu3/sdb/multilib2/tmp/work/x86_64-pokymllib64-linux/lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4/image/home/kyu3/sdb/multilib2/tmp/sysroots/x86_64-linux/usr/x86_64-pokymllib64-linux/lib64/*': No such file or directory > NOTE: package lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4: task do_install: Failed > ERROR: Task 1557 (virtual:multilib:lib64:/home/kyu3/src/poky/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.6.bb, do_install) failed with exit code > > the error is caused by command in gcc-cross-intermediate.inc: do_install(): "mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/" > > and the reason is that: ${baselib} is lib64 in multilib case, while the files to be moved is still in ${D}${exec_prefix}/${TARGET_SYS}/lib/*, so mv will fail. > > The fix may be either reverting this commit, or putting the file to ${baselib} instead of lib. I'd like to get your input before going further. > > Regards > Ke > > on 2011-8-5 2:54, Kumar Gala wrote: >> Rather than tweaking MULTILIB_DIRNAMES& MULTILIB_OSDIRNAMES like is >> done for x86-64 via 64bithack.patch. We can just go with gcc defaults >> and utilize ${base_lib} for where to find gcc libs. >> >> Signed-off-by: Kumar Gala<galak@kernel.crashing.org> >> --- >> .../gcc/gcc-cross-intermediate.inc | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >> index df5958a..7b1bb38 100644 >> --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >> +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >> @@ -34,7 +34,7 @@ do_compile () { >> do_install () { >> oe_runmake 'DESTDIR=${D}' install >> install -d ${D}${target_base_libdir}/ >> - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/ >> + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/ >> >> # We don't really need this (here shares/ contains man/, info/, locale/). >> rm -rf ${D}${datadir}/
Ok, CC Richard to see if it is OK to not use 64bithack.patch Regards Ke on 2011-8-11 14:47, Kumar Gala wrote: > revert this is not acceptable as that will break ppc64 builds. > > I think you need to look at 64bithack.patch and if we really should be using it for multilib builds. > > - k > > On Aug 11, 2011, at 1:36 AM, Yu Ke wrote: > >> Hi Kumar, >> >> I just found this patch breaks the qemux86-64 lib64 multilib build. >> >> the error log is as below: >> >> | mv: cannot stat `/home/kyu3/sdb/multilib2/tmp/work/x86_64-pokymllib64-linux/lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4/image/home/kyu3/sdb/multilib2/tmp/sysroots/x86_64-linux/usr/x86_64-pokymllib64-linux/lib64/*': No such file or directory >> NOTE: package lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4: task do_install: Failed >> ERROR: Task 1557 (virtual:multilib:lib64:/home/kyu3/src/poky/meta/recipes-devtools/gcc/gcc-cross-intermediate_4.6.bb, do_install) failed with exit code >> >> the error is caused by command in gcc-cross-intermediate.inc: do_install(): "mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/" >> >> and the reason is that: ${baselib} is lib64 in multilib case, while the files to be moved is still in ${D}${exec_prefix}/${TARGET_SYS}/lib/*, so mv will fail. >> >> The fix may be either reverting this commit, or putting the file to ${baselib} instead of lib. I'd like to get your input before going further. >> >> Regards >> Ke >> >> on 2011-8-5 2:54, Kumar Gala wrote: >>> Rather than tweaking MULTILIB_DIRNAMES& MULTILIB_OSDIRNAMES like is >>> done for x86-64 via 64bithack.patch. We can just go with gcc defaults >>> and utilize ${base_lib} for where to find gcc libs. >>> >>> Signed-off-by: Kumar Gala<galak@kernel.crashing.org> >>> --- >>> .../gcc/gcc-cross-intermediate.inc | 2 +- >>> 1 files changed, 1 insertions(+), 1 deletions(-) >>> >>> diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >>> index df5958a..7b1bb38 100644 >>> --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >>> +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc >>> @@ -34,7 +34,7 @@ do_compile () { >>> do_install () { >>> oe_runmake 'DESTDIR=${D}' install >>> install -d ${D}${target_base_libdir}/ >>> - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/ >>> + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/ >>> >>> # We don't really need this (here shares/ contains man/, info/, locale/). >>> rm -rf ${D}${datadir}/ > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core >
On Thursday, August 11, 2011 03:45:01 PM Yu Ke wrote: > Ok, CC Richard to see if it is OK to not use 64bithack.patch > > Regards > Ke > > on 2011-8-11 14:47, Kumar Gala wrote: > > revert this is not acceptable as that will break ppc64 builds. > > > > I think you need to look at 64bithack.patch and if we really should be > > using it for multilib builds. I think it could be conditionally applied only for non multilib builds but I would be in favour of removing it if not much will break in non multilib case. > > > > - k > > > > On Aug 11, 2011, at 1:36 AM, Yu Ke wrote: > >> Hi Kumar, > >> > >> I just found this patch breaks the qemux86-64 lib64 multilib build. > >> > >> the error log is as below: > >> | mv: cannot stat > >> | `/home/kyu3/sdb/multilib2/tmp/work/x86_64-pokymllib64-linux/lib64 > >> | -gcc-cross-intermediate-4.6.1+svnr175454-r4/image/home/kyu3/sdb/mu > >> | ltilib2/tmp/sysroots/x86_64-linux/usr/x86_64-pokymllib64-linux/lib > >> | 64/*': No such file or directory>> > >> NOTE: package lib64-gcc-cross-intermediate-4.6.1+svnr175454-r4: task > >> do_install: Failed ERROR: Task 1557 > >> (virtual:multilib:lib64:/home/kyu3/src/poky/meta/recipes-devtools/gcc > >> /gcc-cross-intermediate_4.6.bb, do_install) failed with exit code > >> > >> the error is caused by command in gcc-cross-intermediate.inc: > >> do_install(): "mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* > >> ${D}${target_base_libdir}/" > >> > >> and the reason is that: ${baselib} is lib64 in multilib case, while > >> the files to be moved is still in > >> ${D}${exec_prefix}/${TARGET_SYS}/lib/*, so mv will fail. > >> > >> The fix may be either reverting this commit, or putting the file to > >> ${baselib} instead of lib. I'd like to get your input before going > >> further. > >> > >> Regards > >> Ke > >> > >> on 2011-8-5 2:54, Kumar Gala wrote: > >>> Rather than tweaking MULTILIB_DIRNAMES& MULTILIB_OSDIRNAMES like > >>> is > >>> done for x86-64 via 64bithack.patch. We can just go with gcc > >>> defaults > >>> and utilize ${base_lib} for where to find gcc libs. > >>> > >>> Signed-off-by: Kumar Gala<galak@kernel.crashing.org> > >>> --- > >>> > >>> .../gcc/gcc-cross-intermediate.inc | 2 +- > >>> 1 files changed, 1 insertions(+), 1 deletions(-) > >>> > >>> diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc > >>> b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc index > >>> df5958a..7b1bb38 100644 > >>> --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc > >>> +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc > >>> @@ -34,7 +34,7 @@ do_compile () { > >>> > >>> do_install () { > >>> > >>> oe_runmake 'DESTDIR=${D}' install > >>> install -d ${D}${target_base_libdir}/ > >>> > >>> - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* > >>> ${D}${target_base_libdir}/ > >>> + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* > >>> ${D}${target_base_libdir}/>>> > >>> # We don't really need this (here shares/ contains man/, > >>> info/, locale/). rm -rf ${D}${datadir}/ > > > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
On Thu, 2011-08-11 at 01:47 -0500, Kumar Gala wrote: > revert this is not acceptable as that will break ppc64 builds. > > I think you need to look at 64bithack.patch and if we really should be using it for multilib builds. This just sounds like gcc totally ignores the the library directory we're using and that is plain wrong :(. I'd much prefer gcc didn't make assumptions in this case and did what were were configuring it to do. That is why there is that 64bit hack there and I think gcc should be honouring however we configure the library directories, not doing what it thinks is best... Cheers, Richard
On Thu, 2011-08-11 at 16:30 +0100, Richard Purdie wrote: > On Thu, 2011-08-11 at 01:47 -0500, Kumar Gala wrote: > > revert this is not acceptable as that will break ppc64 builds. > > > > I think you need to look at 64bithack.patch and if we really should be using it for multilib builds. > > This just sounds like gcc totally ignores the the library directory > we're using and that is plain wrong :(. > > I'd much prefer gcc didn't make assumptions in this case and did what > were were configuring it to do. That is why there is that 64bit hack > there and I think gcc should be honouring however we configure the > library directories, not doing what it thinks is best... I did more digging and this really just highlights why we have that 64bit "hack" patch in the first place. GCC has internal multilib 'magic' which assumes certain library layout in the 64 bit case. The implication is if you build 64 bit, you cannot have baselib != "lib64". Whilst I can understand this on desktop system, I'd suggest our build system has a better idea what its doing than most and can cope without hardcoding things. This is why the default builds in the gcc config are set to "." by that patch, that respects whatever base_libdir is set to. I'd suggest we do this for x86, pcc and mips 64 bit and revert the origin baselib patch, but this time better improve the patch documentation about why this is necessary. Cheers, Richard
On Aug 11, 2011, at 1:41 PM, Richard Purdie wrote: > On Thu, 2011-08-11 at 16:30 +0100, Richard Purdie wrote: >> On Thu, 2011-08-11 at 01:47 -0500, Kumar Gala wrote: >>> revert this is not acceptable as that will break ppc64 builds. >>> >>> I think you need to look at 64bithack.patch and if we really should be using it for multilib builds. >> >> This just sounds like gcc totally ignores the the library directory >> we're using and that is plain wrong :(. >> >> I'd much prefer gcc didn't make assumptions in this case and did what >> were were configuring it to do. That is why there is that 64bit hack >> there and I think gcc should be honouring however we configure the >> library directories, not doing what it thinks is best... > > I did more digging and this really just highlights why we have that > 64bit "hack" patch in the first place. > > GCC has internal multilib 'magic' which assumes certain library layout > in the 64 bit case. The implication is if you build 64 bit, you cannot > have baselib != "lib64". Whilst I can understand this on desktop system, > I'd suggest our build system has a better idea what its doing than most > and can cope without hardcoding things. > > This is why the default builds in the gcc config are set to "." by that > patch, that respects whatever base_libdir is set to. I'd suggest we do > this for x86, pcc and mips 64 bit and revert the origin baselib patch, > but this time better improve the patch documentation about why this is > necessary. > > Cheers, > > Richard Khem had some feelings on this so I'll let him chime in - k
Patch
diff --git a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc index df5958a..7b1bb38 100644 --- a/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc +++ b/meta/recipes-devtools/gcc/gcc-cross-intermediate.inc @@ -34,7 +34,7 @@ do_compile () { do_install () { oe_runmake 'DESTDIR=${D}' install install -d ${D}${target_base_libdir}/ - mv ${D}${exec_prefix}/${TARGET_SYS}/lib/* ${D}${target_base_libdir}/ + mv ${D}${exec_prefix}/${TARGET_SYS}/${baselib}/* ${D}${target_base_libdir}/ # We don't really need this (here shares/ contains man/, info/, locale/). rm -rf ${D}${datadir}/
Rather than tweaking MULTILIB_DIRNAMES & MULTILIB_OSDIRNAMES like is done for x86-64 via 64bithack.patch. We can just go with gcc defaults and utilize ${base_lib} for where to find gcc libs. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> --- .../gcc/gcc-cross-intermediate.inc | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)