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

changqing.li at windriver.com changqing.li at windriver.com
Thu Jan 17 01:49:05 PST 2019


From: Changqing Li <changqing.li at 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 at 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



More information about the yocto mailing list