diff --git a/meta-arm/conf/multiconfig/firmware.conf b/meta-arm/conf/multiconfig/firmware.conf new file mode 100644 index 00000000..95de4d24 --- /dev/null +++ b/meta-arm/conf/multiconfig/firmware.conf @@ -0,0 +1,13 @@ +# Config that can be used to build firmware in a seperate tmp area +# and with a smaller libc enabled by default + +DISTROOVERRIDES = "firmware" + +TMPDIR:append = "_${MACHINE}" +TCLIBC="musl" + +# Ignore the testimage flags to include ssh-server-dropbear +IMAGE_CLASSES:remove = "testimage" +IMAGE_FEATURES:remove = "ssh-server-dropbear" +CORE_IMAGE_EXTRA_INSTALL:remove = "ssh-pregen-hostkeys" +TESTIMAGE_AUTO = "0" diff --git a/meta-arm/recipes-bsp/images/firmware-deploy-image.bb b/meta-arm/recipes-bsp/images/firmware-deploy-image.bb new file mode 100644 index 00000000..76c82738 --- /dev/null +++ b/meta-arm/recipes-bsp/images/firmware-deploy-image.bb @@ -0,0 +1,31 @@ +SUMMARY = "Firmware image deploying multi-config firmware" +DESCRIPTION = "Image for deploying a firmware set on platforms using multi-config" +LICENSE = "MIT" + +inherit deploy nopackages + +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE ?= "invalid" +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install[noexec] = "1" + +# Users of this recipe are expected to provide the list of firmware images +# that need to be deployed by setting this variable. +FIRMWARE_BINARIES ?= "" + +do_deploy() { + firmware_loc="${TMPDIR}_${MACHINE}/deploy/images/${MACHINE}" + for firmware in ${FIRMWARE_BINARIES}; do + echo "cp -av ${firmware_loc}/${firmware} ${DEPLOYDIR}/" + cp -av "${firmware_loc}/${firmware}" ${DEPLOYDIR}/ + if [ -L "${firmware_loc}/${firmware}" ]; then + echo "cp -av ${firmware_loc}/$(readlink ${firmware_loc}/${firmware}) ${DEPLOYDIR}/" + cp -av "${firmware_loc}/$(readlink ${firmware_loc}/${firmware})" ${DEPLOYDIR}/ + fi + done +} + +do_deploy[umask] = "022" + +addtask deploy after do_prepare_recipe_sysroot