Patchwork populate_sdk_base.bbclass: check installation machine before installing SDK

login
register
mail settings
Submitter Laurentiu Palcu
Date Nov. 1, 2012, 1:23 p.m.
Message ID <1351776182-26414-1-git-send-email-laurentiu.palcu@intel.com>
Download mbox | patch
Permalink /patch/38757/
State Accepted
Commit ce7e817b49f62db73c6fd0a27cca9f6c0028bf3e
Headers show

Comments

Laurentiu Palcu - Nov. 1, 2012, 1:23 p.m.
Do not allow installer to continue if the installation machine architecture
does not match the intended SDK machine architecture.

[YOCTO: #3269]

Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
---
 meta/classes/populate_sdk_base.bbclass |    8 ++++++++
 1 file changed, 8 insertions(+)
Robert Yang - Nov. 5, 2012, 1:58 a.m.
On 11/01/2012 09:23 PM, Laurentiu Palcu wrote:
> Do not allow installer to continue if the installation machine architecture
> does not match the intended SDK machine architecture.
>
> [YOCTO: #3269]
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
> ---
>   meta/classes/populate_sdk_base.bbclass |    8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
> index a3ac757..dc715c4 100644
> --- a/meta/classes/populate_sdk_base.bbclass
> +++ b/meta/classes/populate_sdk_base.bbclass
> @@ -118,6 +118,14 @@ fakeroot create_shar() {
>   	cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
>   #!/bin/bash
>
> +INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
> +SDKMACHINE=$(echo ${SDKMACHINE} | sed -e "s/i[5-6]86/ix86/")
> +

I'm afraid this doesn't work, how does the script know the SDKMACHINE ?
The SDKMACHINE would always be null in 
poky-eglibc-x86_64-i586-toolchain-gmae-1.3+snapshot-20121104.sh

// Robert


> +if [ "$INST_ARCH" != "$SDKMACHINE" ]; then
> +	echo "Error: Installation machine not supported!"
> +	exit -1
> +fi
> +
>   DEFAULT_INSTALL_DIR="${SDKPATH}"
>   COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)
>
>
Robert Yang - Nov. 5, 2012, 7:54 a.m.
On 11/05/2012 09:58 AM, Robert Yang wrote:
>
>
> On 11/01/2012 09:23 PM, Laurentiu Palcu wrote:
>> Do not allow installer to continue if the installation machine architecture
>> does not match the intended SDK machine architecture.
>>
>> [YOCTO: #3269]
>>
>> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
>> ---
>>   meta/classes/populate_sdk_base.bbclass |    8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/meta/classes/populate_sdk_base.bbclass
>> b/meta/classes/populate_sdk_base.bbclass
>> index a3ac757..dc715c4 100644
>> --- a/meta/classes/populate_sdk_base.bbclass
>> +++ b/meta/classes/populate_sdk_base.bbclass
>> @@ -118,6 +118,14 @@ fakeroot create_shar() {
>>       cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
>>   #!/bin/bash
>>
>> +INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
>> +SDKMACHINE=$(echo ${SDKMACHINE} | sed -e "s/i[5-6]86/ix86/")
>> +
>
> I'm afraid this doesn't work, how does the script know the SDKMACHINE ?
> The SDKMACHINE would always be null in
> poky-eglibc-x86_64-i586-toolchain-gmae-1.3+snapshot-20121104.sh
>

This was because i didn't set the SDKMACHINE, I seldom set it when build
the sdk, but it seems that we should set it since it needs

include conf/machine-sdk/${SDKMACHINE}.conf

Can we check whether the SDKMACHINE is null before build the SDK or use
SDK_ARCH rather than the SDKMACHINE here ? Otherwise, if we don't set the
SDKMACHINE, the SDK would be built, but it can't be installed, we would
always get this error:

Error: Installation machine not supported!

// Robert

> // Robert
>
>
>> +if [ "$INST_ARCH" != "$SDKMACHINE" ]; then
>> +    echo "Error: Installation machine not supported!"
>> +    exit -1
>> +fi
>> +
>>   DEFAULT_INSTALL_DIR="${SDKPATH}"
>>   COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)
>>
>>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>
Laurentiu Palcu - Nov. 5, 2012, 11:51 a.m.
On 11/05/2012 09:54 AM, Robert Yang wrote:
> 
> 
> On 11/05/2012 09:58 AM, Robert Yang wrote:
>>
>>
>> On 11/01/2012 09:23 PM, Laurentiu Palcu wrote:
>>> Do not allow installer to continue if the installation machine architecture
>>> does not match the intended SDK machine architecture.
>>>
>>> [YOCTO: #3269]
>>>
>>> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
>>> ---
>>>   meta/classes/populate_sdk_base.bbclass |    8 ++++++++
>>>   1 file changed, 8 insertions(+)
>>>
>>> diff --git a/meta/classes/populate_sdk_base.bbclass
>>> b/meta/classes/populate_sdk_base.bbclass
>>> index a3ac757..dc715c4 100644
>>> --- a/meta/classes/populate_sdk_base.bbclass
>>> +++ b/meta/classes/populate_sdk_base.bbclass
>>> @@ -118,6 +118,14 @@ fakeroot create_shar() {
>>>       cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
>>>   #!/bin/bash
>>>
>>> +INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
>>> +SDKMACHINE=$(echo ${SDKMACHINE} | sed -e "s/i[5-6]86/ix86/")
>>> +
>>
>> I'm afraid this doesn't work, how does the script know the SDKMACHINE ?
>> The SDKMACHINE would always be null in
>> poky-eglibc-x86_64-i586-toolchain-gmae-1.3+snapshot-20121104.sh
>>
> 
> This was because i didn't set the SDKMACHINE, I seldom set it when build
> the sdk, but it seems that we should set it since it needs
> 
> include conf/machine-sdk/${SDKMACHINE}.conf
Hmm, I had it set in my local.conf... I missed the fact that, by
default, the local.conf had it commented out.


> 
> Can we check whether the SDKMACHINE is null before build the SDK or use
> SDK_ARCH rather than the SDKMACHINE here ? Otherwise, if we don't set the
> SDKMACHINE, the SDK would be built, but it can't be installed, we would
> always get this error:
I suppose we can safely use SDK_ARCH here, instead of SDKMACHINE. I'll
prepare a patch asap.

> 
> Error: Installation machine not supported!
> 
> // Robert
> 
>> // Robert
>>
>>
>>> +if [ "$INST_ARCH" != "$SDKMACHINE" ]; then
>>> +    echo "Error: Installation machine not supported!"
>>> +    exit -1
>>> +fi
>>> +
>>>   DEFAULT_INSTALL_DIR="${SDKPATH}"
>>>   COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)
>>>
>>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>>
>>

Patch

diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index a3ac757..dc715c4 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -118,6 +118,14 @@  fakeroot create_shar() {
 	cat << "EOF" > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
 #!/bin/bash
 
+INST_ARCH=$(uname -m | sed -e "s/i[3-6]86/ix86/" -e "s/x86[-_]64/x86_64/")
+SDKMACHINE=$(echo ${SDKMACHINE} | sed -e "s/i[5-6]86/ix86/")
+
+if [ "$INST_ARCH" != "$SDKMACHINE" ]; then
+	echo "Error: Installation machine not supported!"
+	exit -1
+fi
+
 DEFAULT_INSTALL_DIR="${SDKPATH}"
 COMPONENTS_LEN=$(echo ".${SDKPATH}" | sed "s/\// /g" | wc -w)