From aaf2524a08bd813e5cac38017ba03a694dd4917a Mon Sep 17 00:00:00 2001 From: Javier Viguera Date: Wed, 1 Feb 2017 20:04:12 +0100 Subject: [PATCH] meta-digi-dey: implement class to generate installer zip package It's not enabled by default. It's controlled by DEY_IMAGE_INSTALLER variable in the project's local.conf. https://jira.digi.com/browse/DEL-3591 Signed-off-by: Javier Viguera --- .../classes/dey-image-installer.bbclass | 52 +++++++++++++++++++ meta-digi-dey/classes/dey-image.bbclass | 6 +++ 2 files changed, 58 insertions(+) create mode 100644 meta-digi-dey/classes/dey-image-installer.bbclass diff --git a/meta-digi-dey/classes/dey-image-installer.bbclass b/meta-digi-dey/classes/dey-image-installer.bbclass new file mode 100644 index 000000000..9c29b4c65 --- /dev/null +++ b/meta-digi-dey/classes/dey-image-installer.bbclass @@ -0,0 +1,52 @@ +# +# Generate DEY installer ZIP package +# +# Copyright 2017, Digi International Inc. +# + +DEPENDS += "zip-native" + +# +# Filesystem types allowed in the installer ZIP +# +FSTYPES_WHITELIST = " \ + boot.ubifs \ + boot.vfat \ + ext4 \ + recovery.ubifs \ + recovery.vfat \ + ubifs \ +" + +generate_installer_zip () { + # Get list of files to pack + INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr" + for ext in ${FSTYPES_WHITELIST}; do + if readlink -e "${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then + INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${ext}" + fi + done + for ubconf in ${UBOOT_CONFIG}; do + if readlink -e "${DEPLOY_DIR_IMAGE}/u-boot-${ubconf}.${UBOOT_SUFFIX}" >/dev/null; then + INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/u-boot-${ubconf}.${UBOOT_SUFFIX}" + fi + done + + # Create README file + cat >README.txt <<_EOF_ +Digi Embedded Yocto kit installer +--------------------------------- + +_EOF_ + md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}/,,g" >> README.txt + + # Pack the files + zip -j ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} README.txt + + # Create the symlink + if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.installer.zip" ]; then + ln -sf ${IMAGE_NAME}.installer.zip ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.installer.zip + fi +} + +IMAGE_POSTPROCESS_COMMAND += "generate_installer_zip; " diff --git a/meta-digi-dey/classes/dey-image.bbclass b/meta-digi-dey/classes/dey-image.bbclass index 78e12f53a..8d19292dd 100644 --- a/meta-digi-dey/classes/dey-image.bbclass +++ b/meta-digi-dey/classes/dey-image.bbclass @@ -26,3 +26,9 @@ EXTRA_USERS_PARAMS += "\ # Create QT5 capable toolchain/SDK if 'dey-qt' image feature is enabled # inherit ${@bb.utils.contains("IMAGE_FEATURES", "dey-qt", "populate_sdk_qt5", "",d)} + +# +# Generate ZIP installer if configured in the project's local.conf +# +DEY_IMAGE_INSTALLER ?= "0" +inherit ${@base_conditional("DEY_IMAGE_INSTALLER", "1", "dey-image-installer", "", d)}