[meta-mingw,V2] testsdk: enhance extract sdk part

Submitted by changqing.li@windriver.com on Jan. 17, 2019, 9:49 a.m. | Patch ID: 158032

Details

Message ID 1547718545-238633-2-git-send-email-changqing.li@windriver.com
State New
Headers show

Commit Message

changqing.li@windriver.com Jan. 17, 2019, 9:49 a.m.
From: Changqing Li <changqing.li@windriver.com>

Current sdk type is tar.xz, but for mingw sdk, since we
have symlink under the sdk folder, 7zip which used to
extract tar.xz cannot handle it, refer 7zip upstream bug:
https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
so oe-core have add support of change SDK type to .zip, so correct
the extract function.

Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
 lib/oeqa/sdkmingw/testsdk.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/lib/oeqa/sdkmingw/testsdk.py b/lib/oeqa/sdkmingw/testsdk.py
index 85fe3c6..173cfd9 100644
--- a/lib/oeqa/sdkmingw/testsdk.py
+++ b/lib/oeqa/sdkmingw/testsdk.py
@@ -12,7 +12,7 @@  class TestSDKMinGW(TestSDK):
         """
         Get the name of the SDK file
         """
-        return d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.xz")
+        return d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}")
 
     def extract_sdk(self, tcname, sdk_dir, d):
         """
@@ -23,7 +23,14 @@  class TestSDKMinGW(TestSDK):
         try:
             # TODO: It would be nice to try and extract the SDK in Wine to make
             # sure it is well formed
-            subprocess.check_output(['tar', '-xf', tcname, '-C', sdk_dir])
+            
+            # TODO: Extract SDK according to SDK_ARCHIVE_TYPE, need to change if
+            # oe-core support other types.
+            if d.getVar("SDK_ARCHIVE_TYPE") == "zip":
+                subprocess.check_output(['unzip', '-d', sdk_dir, tcname])
+            else:
+                subprocess.check_output(['tar', '-xf', tcname, '-C', sdk_dir])
+
         except subprocess.CalledProcessError as e:
             bb.fatal("Couldn't install the SDK:\n%s" % e.output.decode("utf-8"))
 

Comments

Joshua Watt Jan. 21, 2019, 2:47 p.m.
Just FYI, I haven't forgot about this patch. I want to wait until the
dependent OE-core patch is at least in the master-next branch before I
apply this to the MinGW master-next branch. If you want to give me a
ping when the OE-core patch shows up in master-next, it would be very
helpful.

Thanks

On Thu, 2019-01-17 at 17:49 +0800, changqing.li@windriver.com wrote:
> From: Changqing Li <changqing.li@windriver.com>
> 
> Current sdk type is tar.xz, but for mingw sdk, since we
> have symlink under the sdk folder, 7zip which used to
> extract tar.xz cannot handle it, refer 7zip upstream bug:
> https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
> so oe-core have add support of change SDK type to .zip, so correct
> the extract function.
> 
> Signed-off-by: Changqing Li <changqing.li@windriver.com>
> ---
>  lib/oeqa/sdkmingw/testsdk.py | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/oeqa/sdkmingw/testsdk.py
> b/lib/oeqa/sdkmingw/testsdk.py
> index 85fe3c6..173cfd9 100644
> --- a/lib/oeqa/sdkmingw/testsdk.py
> +++ b/lib/oeqa/sdkmingw/testsdk.py
> @@ -12,7 +12,7 @@ class TestSDKMinGW(TestSDK):
>          """
>          Get the name of the SDK file
>          """
> -        return
> d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.xz")
> +        return
> d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}")
>  
>      def extract_sdk(self, tcname, sdk_dir, d):
>          """
> @@ -23,7 +23,14 @@ class TestSDKMinGW(TestSDK):
>          try:
>              # TODO: It would be nice to try and extract the SDK in
> Wine to make
>              # sure it is well formed
> -            subprocess.check_output(['tar', '-xf', tcname, '-C',
> sdk_dir])
> +            
> +            # TODO: Extract SDK according to SDK_ARCHIVE_TYPE, need
> to change if
> +            # oe-core support other types.
> +            if d.getVar("SDK_ARCHIVE_TYPE") == "zip":
> +                subprocess.check_output(['unzip', '-d', sdk_dir,
> tcname])
> +            else:
> +                subprocess.check_output(['tar', '-xf', tcname, '-C', 
> sdk_dir])
> +
>          except subprocess.CalledProcessError as e:
>              bb.fatal("Couldn't install the SDK:\n%s" %
> e.output.decode("utf-8"))
>  
> -- 
> 2.7.4
>
changqing.li@windriver.com Jan. 22, 2019, 1:28 a.m.
On 1/21/19 10:47 PM, Joshua Watt wrote:
> Just FYI, I haven't forgot about this patch. I want to wait until the
> dependent OE-core patch is at least in the master-next branch before I
> apply this to the MinGW master-next branch. If you want to give me a
> ping when the OE-core patch shows up in master-next, it would be very
> helpful.
>
> Thanks

Yes, I will do it.

>
> On Thu, 2019-01-17 at 17:49 +0800, changqing.li@windriver.com wrote:
>> From: Changqing Li <changqing.li@windriver.com>
>>
>> Current sdk type is tar.xz, but for mingw sdk, since we
>> have symlink under the sdk folder, 7zip which used to
>> extract tar.xz cannot handle it, refer 7zip upstream bug:
>> https://sourceforge.net/p/sevenzip/discussion/45797/thread/c71d6b96/
>> so oe-core have add support of change SDK type to .zip, so correct
>> the extract function.
>>
>> Signed-off-by: Changqing Li <changqing.li@windriver.com>
>> ---
>>   lib/oeqa/sdkmingw/testsdk.py | 11 +++++++++--
>>   1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/oeqa/sdkmingw/testsdk.py
>> b/lib/oeqa/sdkmingw/testsdk.py
>> index 85fe3c6..173cfd9 100644
>> --- a/lib/oeqa/sdkmingw/testsdk.py
>> +++ b/lib/oeqa/sdkmingw/testsdk.py
>> @@ -12,7 +12,7 @@ class TestSDKMinGW(TestSDK):
>>           """
>>           Get the name of the SDK file
>>           """
>> -        return
>> d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.xz")
>> +        return
>> d.expand("${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}")
>>   
>>       def extract_sdk(self, tcname, sdk_dir, d):
>>           """
>> @@ -23,7 +23,14 @@ class TestSDKMinGW(TestSDK):
>>           try:
>>               # TODO: It would be nice to try and extract the SDK in
>> Wine to make
>>               # sure it is well formed
>> -            subprocess.check_output(['tar', '-xf', tcname, '-C',
>> sdk_dir])
>> +
>> +            # TODO: Extract SDK according to SDK_ARCHIVE_TYPE, need
>> to change if
>> +            # oe-core support other types.
>> +            if d.getVar("SDK_ARCHIVE_TYPE") == "zip":
>> +                subprocess.check_output(['unzip', '-d', sdk_dir,
>> tcname])
>> +            else:
>> +                subprocess.check_output(['tar', '-xf', tcname, '-C',
>> sdk_dir])
>> +
>>           except subprocess.CalledProcessError as e:
>>               bb.fatal("Couldn't install the SDK:\n%s" %
>> e.output.decode("utf-8"))
>>   
>> -- 
>> 2.7.4
>>