From: Robert Yang <liezhi.yang@windriver.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>,
Mark Hatle <mark.hatle@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 2/3] populate_sdk_base.bbclass: help rpm to pull in multilib toolchain
Date: Mon, 17 Aug 2015 10:27:11 +0800 [thread overview]
Message-ID: <55D1467F.6090807@windriver.com> (raw)
In-Reply-To: <1439628950.1218.16.camel@linuxfoundation.org>
On 08/15/2015 04:55 PM, Richard Purdie wrote:
> On Thu, 2015-08-13 at 00:37 -0700, Robert Yang wrote:
>> When configure multilib, "bitbake <image_bb> -c populate_sdk" should
>> install all arch toolchains (for example, 32 and 64bit), but rpm not
>> handle the multilib requires correctly, for example:
>> lib32-packagegroup-core-standalone-sdk-target requires lib32-libc6, rpm
>> may pull in libc6 rather than lib32-libc6, if we directly use something
>> like IMAGE_INSTALL_append = " lib32-libc6", then it works well, so
>> update TOOLCHAIN_TARGET_TASK to include the RDEPENDS packages will fix
>> the issue.
>
> Whilst I understand why you're doing this, its rather sad that as the
> rpm multilib code is broken, we have to hack the core sdk code like this
> to work around it.
>
> Could/should we not put this into the rpm sdk backend instead?
Sorry, I can't understand what did you mean, do you mean put this into rpm
sdk backend such as meta/lib/oe/sdk.py ?
// Robert
>
> I also can't help this is just a bandaid and that we'll likely find
> other ways this breaks in the future, its not a complete solution to the
> issue :/.
>
> Cheers,
>
> Richard
>
>> [YOCTO #8089]
>>
>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>> ---
>> meta/classes/populate_sdk_base.bbclass | 32 ++++++++++++++++++++++++++++++++
>> 1 file changed, 32 insertions(+)
>>
>> diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
>> index a9e9bd7..c2491ea 100644
>> --- a/meta/classes/populate_sdk_base.bbclass
>> +++ b/meta/classes/populate_sdk_base.bbclass
>> @@ -83,8 +83,40 @@ POPULATE_SDK_POST_HOST_COMMAND_append = " write_host_sdk_manifest; "
>> fakeroot python do_populate_sdk() {
>> from oe.sdk import populate_sdk
>> from oe.manifest import create_manifest, Manifest
>> + import oe.packagedata
>>
>> pn = d.getVar('PN', True)
>> + # Help rpm to pull in multilib requires since it may not pull in
>> + # them correctly, for example,
>> + # lib32-packagegroup-core-standalone-sdk-target requires
>> + # lib32-libc6, rpm may pull in libc6 rather than lib32-libc6, but
>> + # directly use
>> + # TOOLCHAIN_TARGET_TASK_append = " lib32-libc6" works well.
>> + for pkg in (d.getVar('TOOLCHAIN_TARGET_TASK', True) or "").split():
>> + sub_data = oe.packagedata.read_subpkgdata(pkg, d)
>> + sub_rdep = sub_data.get("RDEPENDS_" + pkg)
>> + if not sub_rdep:
>> + continue
>> + done = sub_rdep.split()
>> + next = done
>> + # Find all the rdepends on the dependency chain
>> + while next:
>> + new = []
>> + for sub_pkg in next:
>> + sub_data = oe.packagedata.read_subpkgdata(sub_pkg, d)
>> + sub_pkg_rdep = sub_data.get("RDEPENDS_" + sub_pkg)
>> + if not sub_pkg_rdep:
>> + continue
>> + for p in sub_pkg_rdep.split():
>> + if p in done:
>> + continue
>> + if not p.startswith('(') and \
>> + oe.packagedata.has_subpkgdata(p, d):
>> + # It's a new rdep
>> + done.append(p)
>> + new.append(p)
>> + next = new
>> + d.appendVar('TOOLCHAIN_TARGET_TASK', ' ' + " ".join(done))
>> runtime_mapping_rename("TOOLCHAIN_TARGET_TASK", pn, d)
>> runtime_mapping_rename("TOOLCHAIN_TARGET_TASK_ATTEMPTONLY", pn, d)
>>
>> --
>> 1.7.9.5
>>
>
>
>
>
next prev parent reply other threads:[~2015-08-17 2:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-13 7:37 [PATCH 0/3] populate_sdk_base.bbclass: fixes for multilib sdk Robert Yang
2015-08-13 7:37 ` [PATCH 1/3] toolchain-shar-extract.sh: add a space in the end Robert Yang
2015-08-15 1:23 ` Randy MacLeod
2015-08-17 2:27 ` Robert Yang
2015-08-13 7:37 ` [PATCH 2/3] populate_sdk_base.bbclass: help rpm to pull in multilib toolchain Robert Yang
2015-08-15 8:55 ` Richard Purdie
2015-08-17 2:27 ` Robert Yang [this message]
2015-08-13 7:37 ` [PATCH 3/3] packagegroup-core-standalone-sdk-target: remove qemuwrapper-cross Robert Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55D1467F.6090807@windriver.com \
--to=liezhi.yang@windriver.com \
--cc=mark.hatle@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.