This allows for a user to specify the compression and decompression commands when creating an sdk. An example would be to use pigz to take advantage of multiple cores during compression.
Signed-off-by: Randy Witt <[email protected]> --- meta/classes/populate_sdk_base.bbclass | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass index a12bf11..27c73e4 100644 --- a/meta/classes/populate_sdk_base.bbclass +++ b/meta/classes/populate_sdk_base.bbclass @@ -49,6 +49,27 @@ EXCLUDE_FROM_WORLD = "1" SDK_PACKAGING_FUNC ?= "create_shar" +SDK_COMPRESS_bz2 ?= "bzip2 -z -c" +SDK_DECOMPRESS_bz2 ?= "bzip2 -d -c" + +SDK_COMPRESS_xz ?= "xz -z -c" +SDK_DECOMPRESS_xz ?= "xz -d -c" +SDK_COMPRESSION_DEPS_xz = "xz-native" + +# pigz is set up as an alternative for gzip, hence why gzip is called +# rather than pigz directly. +SDK_COMPRESS_pigz ?= "gzip -c" +SDK_DECOMPRESS_pigz ?= "gzip -d -c" +SDK_COMPRESSION_DEPS_pigz = "pigz-native" +SDK_COMPRESSION_EXTRANATIVEPATH_pigz = "pigz-native" + +SDK_COMPRESSION_TYPE ??= "bz2" +SDK_COMPRESS = "${SDK_COMPRESS_${SDK_COMPRESSION_TYPE}}" +SDK_DECOMPRESS = "${SDK_DECOMPRESS_${SDK_COMPRESSION_TYPE}}" + +SDK_DEPENDS += "${@d.getVar('SDK_COMPRESSION_DEPS_${SDK_COMPRESSION_TYPE}') or ''}" +EXTRANATIVEPATH += "${@d.getVar('SDK_COMPRESSION_EXTRANATIVEPATH_${SDK_COMPRESSION_TYPE}') or ''}" + fakeroot python do_populate_sdk() { from oe.sdk import populate_sdk from oe.manifest import create_manifest, Manifest @@ -107,13 +128,13 @@ fakeroot create_sdk_files() { sed -i -e "s:##DEFAULT_INSTALL_DIR##:$escaped_sdkpath:" ${SDK_OUTPUT}/${SDKPATH}/relocate_sdk.py } -SDKTAROPTS = "--owner=root --group=root -j" +SDKTAROPTS = "--owner=root --group=root" fakeroot tar_sdk() { # Package it up mkdir -p ${SDK_DEPLOY} cd ${SDK_OUTPUT}/${SDKPATH} - tar ${SDKTAROPTS} -c --file=${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 . + tar ${SDKTAROPTS} -c . | ${SDK_COMPRESS} > ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.${SDK_COMPRESSION_TYPE} } fakeroot create_shar() { @@ -236,7 +257,7 @@ fi payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1)) printf "Extracting SDK..." -tail -n +$payload_offset $0| $SUDO_EXEC tar xj -C $target_sdk_dir +tail -n +$payload_offset $0| ${SDK_DECOMPRESS} | $SUDO_EXEC tar x -C $target_sdk_dir echo "done" printf "Setting it up..." @@ -305,10 +326,10 @@ EOF chmod +x ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh # append the SDK tarball - cat ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 >> ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh + cat ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.${SDK_COMPRESSION_TYPE} >> ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh # delete the old tarball, we don't need it anymore - rm ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 + rm ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.${SDK_COMPRESSION_TYPE} } populate_sdk_log_check() { -- 2.0.1 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
