Patchwork populate_sdk: We need to ensure that the SDK sysroot reflects PACKAGE_ARCH

login
register
mail settings
Submitter Richard Purdie
Date Aug. 9, 2011, 5:57 p.m.
Message ID <1312912632.14274.312.camel@rex>
Download mbox | patch
Permalink /patch/9557/
State New, archived
Headers show

Comments

Richard Purdie - Aug. 9, 2011, 5:57 p.m.
If we don't do this, the SDK target sysroot is named generically even
when it contains package architecture specific optimisations.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
Lianhao Lu - Aug. 10, 2011, 4 a.m.
Richard Purdie wrote on 2011-08-10:
> If we don't do this, the SDK target sysroot is named generically even
> when it contains package architecture specific optimisations.
> 
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> ---
> diff --git a/meta/classes/populate_sdk.bbclass
> b/meta/classes/populate_sdk.bbclass index 0f3591b..8c19e83 100644 ---
> a/meta/classes/populate_sdk.bbclass +++
> b/meta/classes/populate_sdk.bbclass @@ -5,7 +5,7 @@ SDK_DIR =
> "${WORKDIR}/sdk"
>  SDK_OUTPUT = "${SDK_DIR}/image"
>  SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"

In gcc-configure-sdk.inc, it is set "--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS}". 
Is there any inconsistency?

Best Regards,
Lianhao

>  TOOLCHAIN_HOST_TASK ?= "task-sdk-host-nativesdk
>  task-cross-canadian-${TRANSLATED_TARGET_ARCH}" TOOLCHAIN_TARGET_TASK ?=
>  "task-core-standalone-sdk-target
> task-core-standalone-sdk-target-dbg"
Kumar Gala - Aug. 10, 2011, 12:53 p.m.
On Aug 9, 2011, at 12:57 PM, Richard Purdie wrote:

> If we don't do this, the SDK target sysroot is named generically even
> when it contains package architecture specific optimisations.
> 
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
> diff --git a/meta/classes/populate_sdk.bbclass b/meta/classes/populate_sdk.bbclass
> index 0f3591b..8c19e83 100644
> --- a/meta/classes/populate_sdk.bbclass
> +++ b/meta/classes/populate_sdk.bbclass
> @@ -5,7 +5,7 @@ SDK_DIR = "${WORKDIR}/sdk"
> SDK_OUTPUT = "${SDK_DIR}/image"
> SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
> 
> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"
> 
> TOOLCHAIN_HOST_TASK ?= "task-sdk-host-nativesdk task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
> TOOLCHAIN_TARGET_TASK ?= "task-core-standalone-sdk-target task-core-standalone-sdk-target-dbg"
> 

Ack.

- k
Kumar Gala - Aug. 10, 2011, 12:59 p.m.
On Aug 9, 2011, at 11:00 PM, Lu, Lianhao wrote:

> Richard Purdie wrote on 2011-08-10:
>> If we don't do this, the SDK target sysroot is named generically even
>> when it contains package architecture specific optimisations.
>> 
>> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> ---
>> diff --git a/meta/classes/populate_sdk.bbclass
>> b/meta/classes/populate_sdk.bbclass index 0f3591b..8c19e83 100644 ---
>> a/meta/classes/populate_sdk.bbclass +++
>> b/meta/classes/populate_sdk.bbclass @@ -5,7 +5,7 @@ SDK_DIR =
>> "${WORKDIR}/sdk"
>> SDK_OUTPUT = "${SDK_DIR}/image"
>> SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
>> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
>> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"
> 
> In gcc-configure-sdk.inc, it is set "--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS}". 
> Is there any inconsistency?

Binutils might also need updating.

- k
Richard Purdie - Aug. 10, 2011, 1:07 p.m.
On Wed, 2011-08-10 at 07:59 -0500, Kumar Gala wrote:
> On Aug 9, 2011, at 11:00 PM, Lu, Lianhao wrote:
> 
> > Richard Purdie wrote on 2011-08-10:
> >> If we don't do this, the SDK target sysroot is named generically even
> >> when it contains package architecture specific optimisations.
> >> 
> >> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> ---
> >> diff --git a/meta/classes/populate_sdk.bbclass
> >> b/meta/classes/populate_sdk.bbclass index 0f3591b..8c19e83 100644 ---
> >> a/meta/classes/populate_sdk.bbclass +++
> >> b/meta/classes/populate_sdk.bbclass @@ -5,7 +5,7 @@ SDK_DIR =
> >> "${WORKDIR}/sdk"
> >> SDK_OUTPUT = "${SDK_DIR}/image"
> >> SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
> >> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
> >> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"
> > 
> > In gcc-configure-sdk.inc, it is set "--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS}". 
> > Is there any inconsistency?
> 
> Binutils might also need updating.

This is an interesting question. We certainly compile in a default path
for the sysroot but we in general always override it from the
environment anyway.

As long as the package architectures for the sdk components are correct
we should be able to update the defaults. I've not yet checked that
though.

Cheers,

Richard
Richard Purdie - Aug. 10, 2011, 1:23 p.m.
On Wed, 2011-08-10 at 14:07 +0100, Richard Purdie wrote:
> On Wed, 2011-08-10 at 07:59 -0500, Kumar Gala wrote:
> > On Aug 9, 2011, at 11:00 PM, Lu, Lianhao wrote:
> > 
> > > Richard Purdie wrote on 2011-08-10:
> > >> If we don't do this, the SDK target sysroot is named generically even
> > >> when it contains package architecture specific optimisations.
> > >> 
> > >> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> ---
> > >> diff --git a/meta/classes/populate_sdk.bbclass
> > >> b/meta/classes/populate_sdk.bbclass index 0f3591b..8c19e83 100644 ---
> > >> a/meta/classes/populate_sdk.bbclass +++
> > >> b/meta/classes/populate_sdk.bbclass @@ -5,7 +5,7 @@ SDK_DIR =
> > >> "${WORKDIR}/sdk"
> > >> SDK_OUTPUT = "${SDK_DIR}/image"
> > >> SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
> > >> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
> > >> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"
> > > 
> > > In gcc-configure-sdk.inc, it is set "--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS}". 
> > > Is there any inconsistency?
> > 
> > Binutils might also need updating.
> 
> This is an interesting question. We certainly compile in a default path
> for the sysroot but we in general always override it from the
> environment anyway.
> 
> As long as the package architectures for the sdk components are correct
> we should be able to update the defaults. I've not yet checked that
> though.

This is something which gets built into
gcc-cross-canadian-${TARGET_ARCH} (i.e i586/armpowerpc). Since we use
the target libs (inc libgcc) and everything in that package is multiple
platform enabled, I think the current behaviour is correct. It might
point an an invalid default sysroot but its up to the package
architecture specific environment files to correct that. This means the
one toolchain can be shared over multiple package architectures.

I'm open to other views of that but I think what we have there is
correct and should work with the above change.

Cheers,

Richard
Gary Thomas - Aug. 10, 2011, 1:34 p.m.
On 2011-08-10 07:23, Richard Purdie wrote:
> On Wed, 2011-08-10 at 14:07 +0100, Richard Purdie wrote:
>> On Wed, 2011-08-10 at 07:59 -0500, Kumar Gala wrote:
>>> On Aug 9, 2011, at 11:00 PM, Lu, Lianhao wrote:
>>>
>>>> Richard Purdie wrote on 2011-08-10:
>>>>> If we don't do this, the SDK target sysroot is named generically even
>>>>> when it contains package architecture specific optimisations.
>>>>>
>>>>> Signed-off-by: Richard Purdie<richard.purdie@linuxfoundation.org>  ---
>>>>> diff --git a/meta/classes/populate_sdk.bbclass
>>>>> b/meta/classes/populate_sdk.bbclass index 0f3591b..8c19e83 100644 ---
>>>>> a/meta/classes/populate_sdk.bbclass +++
>>>>> b/meta/classes/populate_sdk.bbclass @@ -5,7 +5,7 @@ SDK_DIR =
>>>>> "${WORKDIR}/sdk"
>>>>> SDK_OUTPUT = "${SDK_DIR}/image"
>>>>> SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
>>>>> -SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
>>>>> +SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"
>>>>
>>>> In gcc-configure-sdk.inc, it is set "--with-sysroot=${SDKPATH}/sysroots/${TARGET_SYS}".
>>>> Is there any inconsistency?
>>>
>>> Binutils might also need updating.
>>
>> This is an interesting question. We certainly compile in a default path
>> for the sysroot but we in general always override it from the
>> environment anyway.
>>
>> As long as the package architectures for the sdk components are correct
>> we should be able to update the defaults. I've not yet checked that
>> though.
>
> This is something which gets built into
> gcc-cross-canadian-${TARGET_ARCH} (i.e i586/armpowerpc). Since we use
> the target libs (inc libgcc) and everything in that package is multiple
> platform enabled, I think the current behaviour is correct. It might
> point an an invalid default sysroot but its up to the package
> architecture specific environment files to correct that. This means the
> one toolchain can be shared over multiple package architectures.
>
> I'm open to other views of that but I think what we have there is
> correct and should work with the above change.

On a related thought to these changes - how does this play if
you use multiple SDKs for different, but somewhat related, architectures?
I'd like to create a simple SDK (just toolchain mostly) using 'meta-toolchain'
for both armv5te and armv7a and install them simultaneously on the same
host.  My previous attempts at this fell flat as there were a number of
files marked as "arm" (i.e. not armv5te or arvm7a) that were common between
the two SDK packages, but they didn't seem to be identical.

With these changes, will it be possible to support such sets of multiple
toolchains?  (No, ADT is not the answer - I just want the toolchains)

Thanks

(sorry if this seems I hijacked your thread - my question is related to
what you are discussing here)
Richard Purdie - Aug. 10, 2011, 1:40 p.m.
On Wed, 2011-08-10 at 07:34 -0600, Gary Thomas wrote:
> On a related thought to these changes - how does this play if
> you use multiple SDKs for different, but somewhat related, architectures?
> I'd like to create a simple SDK (just toolchain mostly) using 'meta-toolchain'
> for both armv5te and armv7a and install them simultaneously on the same
> host.  My previous attempts at this fell flat as there were a number of
> files marked as "arm" (i.e. not armv5te or arvm7a) that were common between
> the two SDK packages, but they didn't seem to be identical.

This is supposed to work but wouldn't due to the issue and the patch
I've proposed. Whether that is the only issue I don't know.

Can you remember which files we're talking about here?

> With these changes, will it be possible to support such sets of multiple
> toolchains?  (No, ADT is not the answer - I just want the toolchains)

ADT uses meta-toolchain-* so its all related.

Cheers,

Richard
Gary Thomas - Aug. 10, 2011, 1:48 p.m.
On 2011-08-10 07:40, Richard Purdie wrote:
> On Wed, 2011-08-10 at 07:34 -0600, Gary Thomas wrote:
>> On a related thought to these changes - how does this play if
>> you use multiple SDKs for different, but somewhat related, architectures?
>> I'd like to create a simple SDK (just toolchain mostly) using 'meta-toolchain'
>> for both armv5te and armv7a and install them simultaneously on the same
>> host.  My previous attempts at this fell flat as there were a number of
>> files marked as "arm" (i.e. not armv5te or arvm7a) that were common between
>> the two SDK packages, but they didn't seem to be identical.
>
> This is supposed to work but wouldn't due to the issue and the patch
> I've proposed. Whether that is the only issue I don't know.

I'll be glad to test this once you've worked it out.

>
> Can you remember which files we're talking about here?

Not right off - there were just a ton of directories with only arm in the
path that seemed to be architecture dependent.  I think it's all related to
TARGET_SYS vs MULTIMACH_TARGET_SYS and how/where they are used.

>
>> With these changes, will it be possible to support such sets of multiple
>> toolchains?  (No, ADT is not the answer - I just want the toolchains)
>
> ADT uses meta-toolchain-* so its all related.

Fair enough, I just don't want to have to use ADT just to install a toolchain.

Thanks
Kumar Gala - Aug. 10, 2011, 2:23 p.m.
On Aug 10, 2011, at 8:48 AM, Gary Thomas wrote:

> On 2011-08-10 07:40, Richard Purdie wrote:
>> On Wed, 2011-08-10 at 07:34 -0600, Gary Thomas wrote:
>>> On a related thought to these changes - how does this play if
>>> you use multiple SDKs for different, but somewhat related, architectures?
>>> I'd like to create a simple SDK (just toolchain mostly) using 'meta-toolchain'
>>> for both armv5te and armv7a and install them simultaneously on the same
>>> host.  My previous attempts at this fell flat as there were a number of
>>> files marked as "arm" (i.e. not armv5te or arvm7a) that were common between
>>> the two SDK packages, but they didn't seem to be identical.
>> 
>> This is supposed to work but wouldn't due to the issue and the patch
>> I've proposed. Whether that is the only issue I don't know.
> 
> I'll be glad to test this once you've worked it out.
> 
>> 
>> Can you remember which files we're talking about here?
> 
> Not right off - there were just a ton of directories with only arm in the
> path that seemed to be architecture dependent.  I think it's all related to
> TARGET_SYS vs MULTIMACH_TARGET_SYS and how/where they are used.
> 
>> 
>>> With these changes, will it be possible to support such sets of multiple
>>> toolchains?  (No, ADT is not the answer - I just want the toolchains)
>> 
>> ADT uses meta-toolchain-* so its all related.
> 
> Fair enough, I just don't want to have to use ADT just to install a toolchain.

And this is also something we're wanting to work to allow different PPC toolchain variants to live together

- k
Gary Thomas - Aug. 17, 2011, 3:44 p.m.
On 2011-08-10 07:48, Gary Thomas wrote:
> On 2011-08-10 07:40, Richard Purdie wrote:
>> On Wed, 2011-08-10 at 07:34 -0600, Gary Thomas wrote:
>>> On a related thought to these changes - how does this play if
>>> you use multiple SDKs for different, but somewhat related, architectures?
>>> I'd like to create a simple SDK (just toolchain mostly) using 'meta-toolchain'
>>> for both armv5te and armv7a and install them simultaneously on the same
>>> host. My previous attempts at this fell flat as there were a number of
>>> files marked as "arm" (i.e. not armv5te or arvm7a) that were common between
>>> the two SDK packages, but they didn't seem to be identical.
>>
>> This is supposed to work but wouldn't due to the issue and the patch
>> I've proposed. Whether that is the only issue I don't know.
>
> I'll be glad to test this once you've worked it out.
>

Any progress on this yet?  The discussion seems to have died down...
Richard Purdie - Sept. 5, 2011, 7:45 p.m.
On Wed, 2011-08-17 at 09:44 -0600, Gary Thomas wrote:
> On 2011-08-10 07:48, Gary Thomas wrote:
> > On 2011-08-10 07:40, Richard Purdie wrote:
> >> On Wed, 2011-08-10 at 07:34 -0600, Gary Thomas wrote:
> >>> On a related thought to these changes - how does this play if
> >>> you use multiple SDKs for different, but somewhat related, architectures?
> >>> I'd like to create a simple SDK (just toolchain mostly) using 'meta-toolchain'
> >>> for both armv5te and armv7a and install them simultaneously on the same
> >>> host. My previous attempts at this fell flat as there were a number of
> >>> files marked as "arm" (i.e. not armv5te or arvm7a) that were common between
> >>> the two SDK packages, but they didn't seem to be identical.
> >>
> >> This is supposed to work but wouldn't due to the issue and the patch
> >> I've proposed. Whether that is the only issue I don't know.
> >
> > I'll be glad to test this once you've worked it out.
> 
> Any progress on this yet?  The discussion seems to have died down...

I merged the patch in question so I'm open to feedback on whether this
works better now...

Cheers,

Richard

Patch

diff --git a/meta/classes/populate_sdk.bbclass b/meta/classes/populate_sdk.bbclass
index 0f3591b..8c19e83 100644
--- a/meta/classes/populate_sdk.bbclass
+++ b/meta/classes/populate_sdk.bbclass
@@ -5,7 +5,7 @@  SDK_DIR = "${WORKDIR}/sdk"
 SDK_OUTPUT = "${SDK_DIR}/image"
 SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
 
-SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${TARGET_SYS}"
+SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${MULTIMACH_TARGET_SYS}"
 
 TOOLCHAIN_HOST_TASK ?= "task-sdk-host-nativesdk task-cross-canadian-${TRANSLATED_TARGET_ARCH}"
 TOOLCHAIN_TARGET_TASK ?= "task-core-standalone-sdk-target task-core-standalone-sdk-target-dbg"