[OE-core] [PATCH] Allow for selectable compression commands for sdk.
Randy Witt
rewitt at declaratino.com
Mon Jun 30 18:29:59 UTC 2014
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 <rewitt at declaratino.com>
---
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
More information about the Openembedded-core
mailing list