diff options
-rw-r--r-- | meta/classes-recipe/populate_sdk_base.bbclass | 12 | ||||
-rw-r--r-- | meta/files/toolchain-shar-extract.sh | 6 |
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}" | |||
84 | SDK_ZIP_OPTIONS ?= "-y" | 84 | SDK_ZIP_OPTIONS ?= "-y" |
85 | SDK_7ZIP_OPTIONS ?= "-mx=9 -mm=BZip2" | 85 | SDK_7ZIP_OPTIONS ?= "-mx=9 -mm=BZip2" |
86 | SDK_7ZIP_TYPE ?= "7z" | 86 | SDK_7ZIP_TYPE ?= "7z" |
87 | SDK_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 |
89 | python () { | 90 | python () { |
@@ -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 | ||
103 | SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}" | 111 | SDK_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 |
258 | elif [ @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 | ||
258 | else | 264 | else |
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!" |