133 lines
4.6 KiB
Plaintext
133 lines
4.6 KiB
Plaintext
#
|
|
# Generate DEY installer ZIP package
|
|
#
|
|
# Copyright 2017-2024, 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 \
|
|
squashfs \
|
|
"
|
|
|
|
FSTYPES_WHITELIST:ccmp1 = " \
|
|
boot.ubifs \
|
|
recovery.ubifs \
|
|
ubifs \
|
|
squashfs \
|
|
"
|
|
|
|
HAS_USB_DRIVER = "false"
|
|
HAS_USB_DRIVER:ccimx8m = "true"
|
|
HAS_USB_DRIVER:ccimx9 = "true"
|
|
HAS_USB_DRIVER:ccmp1 = "true"
|
|
HAS_USB_DRIVER:ccmp2 = "true"
|
|
|
|
BOOTLOADER_SIGNED_STRING ?= "-signed"
|
|
BOOTLOADER_ENCRYPTED_STRING ?= "-encrypted"
|
|
BOOTLOADER_SIGNED_USB_STRING ?= "-usb-signed"
|
|
|
|
curate_bootloader_artifacts() {
|
|
for artifact in ${BOOTABLE_ARTIFACTS}; do
|
|
# NXP platforms may have a ##SIGNED## placeholder to replace
|
|
if [ "${DEY_SOC_VENDOR}" = "NXP" ] && echo "${artifact}" | grep -q -e "##SIGNED##"; then
|
|
if [ "${TRUSTFENCE_SIGN}" = "1" ]; then
|
|
if [ "${DIGI_SOM}" = "ccimx6ul" ]; then
|
|
if [ "${TRUSTFENCE_ENCRYPT}" = "1" ]; then
|
|
# Encrypted bootloader
|
|
curated_artifact=$(echo "${artifact}" | sed "s,##SIGNED##,${BOOTLOADER_ENCRYPTED_STRING},")
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${curated_artifact}"
|
|
else
|
|
# Signed, non-encrypted bootloader
|
|
curated_artifact=$(echo "${artifact}" | sed "s,##SIGNED##,${BOOTLOADER_SIGNED_STRING},")
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${curated_artifact}"
|
|
fi
|
|
# Signed, non-encrypted bootloader for USB recovery
|
|
curated_artifact=$(echo "${artifact}" | sed "s,##SIGNED##,${BOOTLOADER_SIGNED_USB_STRING},")
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${curated_artifact}"
|
|
else
|
|
if [ "${TRUSTFENCE_ENCRYPT}" = "1" ]; then
|
|
# Encrypted bootloader
|
|
curated_artifact=$(echo "${artifact}" | sed "s,##SIGNED##,${BOOTLOADER_ENCRYPTED_STRING},")
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${curated_artifact}"
|
|
fi
|
|
# Signed, non-encrypted bootloader for USB recovery
|
|
curated_artifact=$(echo "${artifact}" | sed "s,##SIGNED##,${BOOTLOADER_SIGNED_STRING},")
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${curated_artifact}"
|
|
fi
|
|
else
|
|
# Non-signed bootloader
|
|
curated_artifact=$(echo "${artifact}" | sed 's,##SIGNED##,,')
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${curated_artifact}"
|
|
fi
|
|
else
|
|
CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS} ${artifact}"
|
|
fi
|
|
done
|
|
export CURATED_BOOTABLE_ARTIFACTS="${CURATED_BOOTABLE_ARTIFACTS}"
|
|
}
|
|
|
|
generate_installer_zip () {
|
|
# Get list of files to pack
|
|
INSTALLER_FILELIST="${DEPLOY_DIR_IMAGE}/install_linux_fw_sd.scr \
|
|
${DEPLOY_DIR_IMAGE}/install_linux_fw_usb.scr"
|
|
# Get UUU installation script
|
|
if readlink -e "${DEPLOY_DIR_IMAGE}/install_linux_fw_uuu.sh"; then
|
|
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/install_linux_fw_uuu.sh"
|
|
fi
|
|
# Get USB driver installation script
|
|
if ${HAS_USB_DRIVER}; then
|
|
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${META_DIGI_SCRIPTS}/install_usb_driver.sh"
|
|
fi
|
|
|
|
# Decompress the ext4.gz image, if any
|
|
if readlink -e "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.ext4.gz" >/dev/null; then
|
|
gzip -d -k -f ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.ext4.gz
|
|
fi
|
|
for ext in ${FSTYPES_WHITELIST}; do
|
|
if readlink -e "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}" >/dev/null; then
|
|
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${ext}"
|
|
fi
|
|
done
|
|
|
|
# Add bootable artifacts to installer
|
|
curate_bootloader_artifacts
|
|
for artifact in ${CURATED_BOOTABLE_ARTIFACTS}; do
|
|
if readlink -e "${DEPLOY_DIR_IMAGE}/${artifact}" >/dev/null; then
|
|
INSTALLER_FILELIST="${INSTALLER_FILELIST} ${DEPLOY_DIR_IMAGE}/${artifact}"
|
|
fi
|
|
done
|
|
|
|
# Create README file
|
|
cat >${IMGDEPLOYDIR}/README.txt <<_EOF_
|
|
${DISTRO_NAME} ${DISTRO_VERSION} kit installer
|
|
----------------------------------------
|
|
|
|
_EOF_
|
|
md5sum ${INSTALLER_FILELIST} | sed -e "s,${DEPLOY_DIR_IMAGE}.*/,,g;s,${IMGDEPLOYDIR}/,,g;s,${META_DIGI_SCRIPTS}/,,g" >> ${IMGDEPLOYDIR}/README.txt
|
|
|
|
# Pack the files and remove the temporary readme file
|
|
zip -j ${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip ${INSTALLER_FILELIST} ${IMGDEPLOYDIR}/README.txt
|
|
rm -f ${IMGDEPLOYDIR}/README.txt
|
|
|
|
# Delete the decompressed ext4 image, if any
|
|
if readlink -e "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.ext4" >/dev/null; then
|
|
rm -f ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.ext4
|
|
fi
|
|
|
|
# Create the symlink
|
|
if [ -n "${IMAGE_LINK_NAME}" ] && [ -e "${IMGDEPLOYDIR}/${IMAGE_NAME}.installer.zip" ]; then
|
|
ln -sf ${IMAGE_NAME}.installer.zip ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.installer.zip
|
|
fi
|
|
}
|
|
|
|
IMAGE_POSTPROCESS_COMMAND += "generate_installer_zip "
|