[OE-core] [PATCH 1/2] uboot-sign: Refactor do_deploy prefunc to do_deploy_prepend
When inherited by the u-boot recipe (UBOOT_PN), uboot-sign.bbclass adds a concat_dtb step, which places additional files into ${DEPLOYDIR} before do_deploy. By turning this from a prefunc into a part of the normal do_deploy function, it becomes possible to use do_deploy[cleandirs] = "${DEPLOYDIR}" in the future, without deleting the files produced by concat_dtb. As before, care is taken to not interfere with the kernel's do_deploy definition, since concat_dtb was only needed for u-boot. Signed-off-by: Daniel Klauer --- meta/classes/uboot-sign.bbclass | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/meta/classes/uboot-sign.bbclass b/meta/classes/uboot-sign.bbclass index 982ed46d01..713196df41 100644 --- a/meta/classes/uboot-sign.bbclass +++ b/meta/classes/uboot-sign.bbclass @@ -117,15 +117,16 @@ do_install_append() { fi } +do_deploy_prepend_pn-${UBOOT_PN}() { + if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ]; then + concat_dtb + fi +} + python () { if d.getVar('UBOOT_SIGN_ENABLE') == '1' and d.getVar('PN') == d.getVar('UBOOT_PN') and d.getVar('UBOOT_DTB_BINARY'): kernel_pn = d.getVar('PREFERRED_PROVIDER_virtual/kernel') # Make "bitbake u-boot -cdeploy" deploys the signed u-boot.dtb d.appendVarFlag('do_deploy', 'depends', ' %s:do_deploy' % kernel_pn) - -# kernerl's do_deploy is a litle special, so we can't use -# do_deploy_append, otherwise it would override -# kernel_do_deploy. -d.appendVarFlag('do_deploy', 'prefuncs', ' concat_dtb') } -- 2.20.1 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#140132): https://lists.openembedded.org/g/openembedded-core/message/140132 Mute This Topic: https://lists.openembedded.org/mt/75211795/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
Re: [OE-core] [PATCH 1/2] uboot-sign: Refactor do_deploy prefunc to do_deploy_prepend
On Thu, 2019-08-29 at 11:05 +0200, Daniel Klauer wrote: > > That commit message isn't correct. > > > > It removes cleandirs for the prefunc at the start of the prefunc and > > cleandirs for the main function at the start of that main function. > > Oh ok, so the prefuncs/postfuncs can have their own [cleandirs], that's > interesting. > > How about the following (trying to find a good way to explain it): Yes, that sounds fine. The bit in brackets probably isn't needed. Cheers, Richard > > - > When inherited by the u-boot recipe (UBOOT_PN), uboot-sign.bbclass adds > a concat_dtb step, which places additional files into ${DEPLOYDIR} > before do_deploy. > > The use of prefuncs for this prevents us from adding > do_deploy[cleandirs] = "${DEPLOYDIR}" > because that would remove the files produced by the prefunc. > (Each of prefuncs/task/postfuncs functions has their own cleandirs, and > each function's cleandirs are removed at the start of that function.) > > Thus, it seems good to make concat_dtb a part of do_deploy, such that it > runs after removal of do_deploy's cleandirs. As before, care is taken to > not interfere with the kernel's do_deploy definition, since concat_dtb > was only needed for u-boot. > - > -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH 1/2] uboot-sign: Refactor do_deploy prefunc to do_deploy_prepend
> That commit message isn't correct. > > It removes cleandirs for the prefunc at the start of the prefunc and > cleandirs for the main function at the start of that main function. Oh ok, so the prefuncs/postfuncs can have their own [cleandirs], that's interesting. How about the following (trying to find a good way to explain it): - When inherited by the u-boot recipe (UBOOT_PN), uboot-sign.bbclass adds a concat_dtb step, which places additional files into ${DEPLOYDIR} before do_deploy. The use of prefuncs for this prevents us from adding do_deploy[cleandirs] = "${DEPLOYDIR}" because that would remove the files produced by the prefunc. (Each of prefuncs/task/postfuncs functions has their own cleandirs, and each function's cleandirs are removed at the start of that function.) Thus, it seems good to make concat_dtb a part of do_deploy, such that it runs after removal of do_deploy's cleandirs. As before, care is taken to not interfere with the kernel's do_deploy definition, since concat_dtb was only needed for u-boot. - -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
Re: [OE-core] [PATCH 1/2] uboot-sign: Refactor do_deploy prefunc to do_deploy_prepend
On Wed, 2019-08-28 at 13:41 +0200, Daniel Klauer wrote: > bitbake removes cleandirs once per prefunc and then again for the actual > task. That commit message isn't correct. It removes cleandirs for the prefunc at the start of the prefunc and cleandirs for the main function at the start of that main function. The code is in lib/bb/build.py: for func in (prefuncs or '').split(): exec_func(func, localdata) exec_func(task, localdata) for func in (postfuncs or '').split(): exec_func(func, localdata) with the cleandirs happening in exec_func() for each function. This does mean the cleandirs happens after the prefunc is called but not as described above. > By moving the concat_dtb step here from prefunc to main task we can > add > do_deploy[cleandirs] = "${DEPLOYDIR}" > to deploy.bbclass without losing the files produced by concat_dtb. I think you also need to state here that this is only expected to be run for the uboot recipe and not the kernel. The patch itself is probably ok but I'd ask the commit message be corrected please. Cheers, Richard > It looks like using do_deploy(_append) was the original goal anyways. > > I tested this with poky, putting the following in local.conf: > UBOOT_SIGN_ENABLE = "1" > KERNEL_CLASSES = " kernel-fitimage " > KERNEL_IMAGETYPE = "fitImage" > and then doing > bitbake core-image-minimal > bitbake u-boot > It builds successfully, the kernel and uboot recipes' temp/run.do_deploy > scripts look good (kernel's do_deploy is not broken, and uboot's do_deploy > still calls concat_dtb). > > Signed-off-by: Daniel Klauer > --- > meta/classes/uboot-sign.bbclass | 11 ++- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/meta/classes/uboot-sign.bbclass b/meta/classes/uboot-sign.bbclass > index 982ed46d01..713196df41 100644 > --- a/meta/classes/uboot-sign.bbclass > +++ b/meta/classes/uboot-sign.bbclass > @@ -117,15 +117,16 @@ do_install_append() { > fi > } > > +do_deploy_prepend_pn-${UBOOT_PN}() { > + if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ]; then > + concat_dtb > + fi > +} > + > python () { > if d.getVar('UBOOT_SIGN_ENABLE') == '1' and d.getVar('PN') == > d.getVar('UBOOT_PN') and d.getVar('UBOOT_DTB_BINARY'): > kernel_pn = d.getVar('PREFERRED_PROVIDER_virtual/kernel') > > # Make "bitbake u-boot -cdeploy" deploys the signed u-boot.dtb > d.appendVarFlag('do_deploy', 'depends', ' %s:do_deploy' % kernel_pn) > - > -# kernerl's do_deploy is a litle special, so we can't use > -# do_deploy_append, otherwise it would override > -# kernel_do_deploy. > -d.appendVarFlag('do_deploy', 'prefuncs', ' concat_dtb') > -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
[OE-core] [PATCH 1/2] uboot-sign: Refactor do_deploy prefunc to do_deploy_prepend
bitbake removes cleandirs once per prefunc and then again for the actual task. By moving the concat_dtb step here from prefunc to main task we can add do_deploy[cleandirs] = "${DEPLOYDIR}" to deploy.bbclass without losing the files produced by concat_dtb. It looks like using do_deploy(_append) was the original goal anyways. I tested this with poky, putting the following in local.conf: UBOOT_SIGN_ENABLE = "1" KERNEL_CLASSES = " kernel-fitimage " KERNEL_IMAGETYPE = "fitImage" and then doing bitbake core-image-minimal bitbake u-boot It builds successfully, the kernel and uboot recipes' temp/run.do_deploy scripts look good (kernel's do_deploy is not broken, and uboot's do_deploy still calls concat_dtb). Signed-off-by: Daniel Klauer --- meta/classes/uboot-sign.bbclass | 11 ++- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/meta/classes/uboot-sign.bbclass b/meta/classes/uboot-sign.bbclass index 982ed46d01..713196df41 100644 --- a/meta/classes/uboot-sign.bbclass +++ b/meta/classes/uboot-sign.bbclass @@ -117,15 +117,16 @@ do_install_append() { fi } +do_deploy_prepend_pn-${UBOOT_PN}() { + if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ]; then + concat_dtb + fi +} + python () { if d.getVar('UBOOT_SIGN_ENABLE') == '1' and d.getVar('PN') == d.getVar('UBOOT_PN') and d.getVar('UBOOT_DTB_BINARY'): kernel_pn = d.getVar('PREFERRED_PROVIDER_virtual/kernel') # Make "bitbake u-boot -cdeploy" deploys the signed u-boot.dtb d.appendVarFlag('do_deploy', 'depends', ' %s:do_deploy' % kernel_pn) - -# kernerl's do_deploy is a litle special, so we can't use -# do_deploy_append, otherwise it would override -# kernel_do_deploy. -d.appendVarFlag('do_deploy', 'prefuncs', ' concat_dtb') } -- 2.17.1 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core