summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes-recipe/populate_sdk_base.bbclass12
-rw-r--r--meta/files/toolchain-shar-extract.sh6
2 files changed, 16 insertions, 2 deletions
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index 16013d5872..031c65f05f 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -84,6 +84,7 @@ SDK_XZ_OPTIONS ?= "${XZ_DEFAULTS} ${SDK_XZ_COMPRESSION_LEVEL}"
84SDK_ZIP_OPTIONS ?= "-y" 84SDK_ZIP_OPTIONS ?= "-y"
85SDK_7ZIP_OPTIONS ?= "-mx=9 -mm=BZip2" 85SDK_7ZIP_OPTIONS ?= "-mx=9 -mm=BZip2"
86SDK_7ZIP_TYPE ?= "7z" 86SDK_7ZIP_TYPE ?= "7z"
87SDK_ZSTD_COMPRESSION_LEVEL = "-17"
87 88
88# To support different sdk type according to SDK_ARCHIVE_TYPE, now support zip and tar.xz 89# To support different sdk type according to SDK_ARCHIVE_TYPE, now support zip and tar.xz
89python () { 90python () {
@@ -95,9 +96,16 @@ python () {
95 elif d.getVar('SDK_ARCHIVE_TYPE') == '7zip': 96 elif d.getVar('SDK_ARCHIVE_TYPE') == '7zip':
96 d.setVar('SDK_ARCHIVE_DEPENDS', 'p7zip-native') 97 d.setVar('SDK_ARCHIVE_DEPENDS', 'p7zip-native')
97 d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; 7za a -r ${SDK_7ZIP_OPTIONS} ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_7ZIP_TYPE} .') 98 d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; 7za a -r ${SDK_7ZIP_OPTIONS} ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_7ZIP_TYPE} .')
98 else: 99 elif d.getVar('SDK_ARCHIVE_TYPE') == 'tar.zst':
100 d.setVar('SDK_ARCHIVE_DEPENDS', 'zstd-native')
101 d.setVar('SDK_ARCHIVE_CMD',
102 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | zstd -f -k -T0 -c ${SDK_ZSTD_COMPRESSION_LEVEL} > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
103 elif d.getVar('SDK_ARCHIVE_TYPE') == 'tar.xz':
99 d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native') 104 d.setVar('SDK_ARCHIVE_DEPENDS', 'xz-native')
100 d.setVar('SDK_ARCHIVE_CMD', 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz ${SDK_XZ_OPTIONS} > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}') 105 d.setVar('SDK_ARCHIVE_CMD',
106 'cd ${SDK_OUTPUT}/${SDKPATH}; tar ${SDKTAROPTS} -cf - . | xz ${SDK_XZ_OPTIONS} > ${SDKDEPLOYDIR}/${TOOLCHAIN_OUTPUTNAME}.${SDK_ARCHIVE_TYPE}')
107 else:
108 bb.fatal("Invalid SDK_ARCHIVE_TYPE: %s, the supported SDK archive types are: zip, 7z, tar.xz, tar.zst" % d.getVar('SDK_ARCHIVE_TYPE'))
101} 109}
102 110
103SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" 111SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh
index 8368a81196..a5c5d0444e 100644
--- a/meta/files/toolchain-shar-extract.sh
+++ b/meta/files/toolchain-shar-extract.sh
@@ -255,6 +255,12 @@ if [ @SDK_ARCHIVE_TYPE@ = "zip" ]; then
255 else 255 else
256 rm sdk.zip && exit 1 256 rm sdk.zip && exit 1
257 fi 257 fi
258elif [ @SDK_ARCHIVE_TYPE@ = "tar.zst" ]; then
259 if [ -z "$(command -v zstd)" ]; then
260 echo "Aborted, zstd is required to extract the SDK archive, please make sure it's installed on your system!"
261 exit 1
262 fi
263 tail -n +$payload_offset "$0"| zstd -T0 -dc | $SUDO_EXEC tar mx -C $target_sdk_dir --checkpoint=.2500 $EXTRA_TAR_OPTIONS || exit 1
258else 264else
259 if [ -z "$(command -v xz)" ]; then 265 if [ -z "$(command -v xz)" ]; then
260 echo "Aborted, xz is required to extract the SDK archive, please make sure it's installed on your system!" 266 echo "Aborted, xz is required to extract the SDK archive, please make sure it's installed on your system!"