The meta-arm tf-a recipe inherits deploy, and explicitly doesn’t inherit nopackages because we want to build packages for license tracking.

Ah I see, I will address this.

> +PROVIDES          += "virtual/${OUTPUTS_NAME}"

Why?

My own convenience, so I do not need to dig into the bb file when scanning for names.

Best practise is to never commit code that uses AUTOREV. You can override it locally, or have an opt-in inc file which does it for everything, but setting a SHA that is known to work means that builds work day-to-day.
 
Noted !
 
These are in the base recipe.
This is in the base recipe.
 
Indeed it is and it builds all the bins/blobs, off to the bin.

Why are you installing native tools into the staging directory?  A native fiptool is already in fiptool-native and that recipe can be extended to also build cert_create if needed.

This was a hastily executed duct and tape. Thanks for pointing this out, I did realise there is a fiptool-native recently :)

This replaces the default do_deploy in the base recipe which deploys more than just that one dtb.

Indeed, at the time I was only interested in what I actually needed. It shall be scrapped.

(same comments mostly apply for the scp recipe)

Will address them as above for V4, thanks !

Pawel

 

On Mon, 16 Jan 2023 at 12:43, Ross Burton <Ross.Burton@arm.com> wrote:
On 13 Jan 2023, at 16:50, Pawel Zalewski <pzalewski@thegoodpenguin.co.uk> wrote:
> +++ b/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.%.bbappend

For a bbappend this is quite invasive.

> +inherit deploy nopackages llvm-morello-native

The meta-arm tf-a recipe inherits deploy, and explicitly doesn’t inherit nopackages because we want to build packages for license tracking.

> +PROVIDES          += "virtual/${OUTPUTS_NAME}"

Why?

> +SRCREV  = "${AUTOREV}"

Best practise is to never commit code that uses AUTOREV. You can override it locally, or have an opt-in inc file which does it for everything, but setting a SHA that is known to work means that builds work day-to-day.

> +B             = "${WORKDIR}/build"
> +S             = "${WORKDIR}/git"

These are in the base recipe.

> +do_install() {
> +
> +    install -d -m 755 ${D}/firmware
> +    for atfbin in ${TFA_INSTALL_TARGET}; do
> +        processed="0"
> +        if [ -f ${BUILD_DIR}/$atfbin.bin ]; then
> +            echo "Install $atfbin.bin"
> +            install -m 0644 ${BUILD_DIR}/$atfbin.bin ${D}/firmware/tf-$atfbin.bin
> +            processed="1"
> +        fi
> +        if [ "$processed" = "0" ]; then
> +            if  ["$atfbin" != "dtbs" ]; then
> +                bberror "Unsupported TFA_INSTALL_TARGET target $atfbin"
> +                exit 1
> +            fi
> +        fi
> +    done

This is in the base recipe.

> +    install -m 0644 "${BUILD_DIR}/fdts/morello-soc.dtb" "${D}/firmware/morello-soc.dtb"
> +    install -m 0644 "${BUILD_DIR}/fdts/morello_fw_config.dtb" "${D}/firmware/morello_fw_config.dtb"
> +    install -m 0644 "${BUILD_DIR}/fdts/morello_tb_fw_config.dtb" "${D}/firmware/morello_tb_fw_config.dtb"
> +    install -m 0644 "${BUILD_DIR}/fdts/morello_nt_fw_config.dtb" "${D}/firmware/morello_nt_fw_config.dtb"
> +    install -m 0644 ${S}/plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem "${D}/firmware/"arm_rotprivk_rsa.pem
> +
> +    export CC=gcc
> +    export LD=ld
> +    make -C ${S}/tools/fiptool OPENSSL_DIR=${STAGING_DIR_NATIVE}/${prefix_native} PLAT=${TFA_PLATFORM}
> +    make -C ${S}/tools/cert_create OPENSSL_DIR=${STAGING_DIR_NATIVE}/${prefix_native} PLAT=${TFA_PLATFORM}
> +
> +    install -m 0744 ${S}/tools/fiptool/fiptool "${D}/firmware/"fiptool
> +    install -m 0744 ${S}/tools/cert_create/cert_create "${D}/firmware/"cert_create

Why are you installing native tools into the staging directory?  A native fiptool is already in fiptool-native and that recipe can be extended to also build cert_create if needed.

> +do_deploy() {
> +    install -d  ${DEPLOYDIR}/${OUTPUTS_NAME}
> +    cp -rf ${D}/firmware/morello-soc.dtb ${DEPLOYDIR}/${OUTPUTS_NAME}/morello-soc.dtb
> +}
> +addtask deploy after do_install before do_build

This replaces the default do_deploy in the base recipe which deploys more than just that one dtb.

(same comments mostly apply for the scp recipe)

Ross