Message ID | 20210209201303.195093-1-giulio.benetti@benettiengineering.com |
---|---|
State | Changes Requested |
Headers | show |
Series | boot/uboot: fix uboot build failure with UBOOT_CUSTOM_DTS_PATH on uboot version >= 2020.x | expand |
Hi All, On 2/9/21 9:13 PM, Giulio Benetti wrote: > Starting from version 2020.x uboot can't build .dts files not listed in > dts/Makefile leading to a build failure when trying to pass a .dts file to > UBOOT_CUSTOM_DTS_PATH. So let's prepend that file(s) to dts/Makefile if > UBOOT_CUSTOM_DTS_PATH is used. > > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> > --- > boot/uboot/uboot.mk | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk > index 2478a2a1e9..a5ad101d68 100644 > --- a/boot/uboot/uboot.mk > +++ b/boot/uboot/uboot.mk > @@ -303,6 +303,11 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY > UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) > > define UBOOT_BUILD_CMDS > + $(if $(UBOOT_CUSTOM_DTS_PATH), > + $(Q)$(SED) \ > + '1s;^;dtb-y += $(subst .dts,.dtb,$(call notdir,$(UBOOT_CUSTOM_DTS_PATH)))\n;' \ > + $(@D)/arch/$(UBOOT_ARCH)/dts/Makefile > + ) > $(if $(UBOOT_CUSTOM_DTS_PATH), > cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ > ) > Any new about this patch? It's essential to build an external u-boot dts after u-boot 2020.x Kind regards
Ping again Giulio > Il giorno 27 mar 2021, alle ore 23:34, Giulio Benetti <giulio.benetti@benettiengineering.com> ha scritto: > > Hi All, > >> On 2/9/21 9:13 PM, Giulio Benetti wrote: >> Starting from version 2020.x uboot can't build .dts files not listed in >> dts/Makefile leading to a build failure when trying to pass a .dts file to >> UBOOT_CUSTOM_DTS_PATH. So let's prepend that file(s) to dts/Makefile if >> UBOOT_CUSTOM_DTS_PATH is used. >> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> >> --- >> boot/uboot/uboot.mk | 5 +++++ >> 1 file changed, 5 insertions(+) >> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk >> index 2478a2a1e9..a5ad101d68 100644 >> --- a/boot/uboot/uboot.mk >> +++ b/boot/uboot/uboot.mk >> @@ -303,6 +303,11 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY >> UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) >> define UBOOT_BUILD_CMDS >> + $(if $(UBOOT_CUSTOM_DTS_PATH), >> + $(Q)$(SED) \ >> + '1s;^;dtb-y += $(subst .dts,.dtb,$(call notdir,$(UBOOT_CUSTOM_DTS_PATH)))\n;' \ >> + $(@D)/arch/$(UBOOT_ARCH)/dts/Makefile >> + ) >> $(if $(UBOOT_CUSTOM_DTS_PATH), >> cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ >> ) > > Any new about this patch? It's essential to build an external u-boot dts after u-boot 2020.x > > Kind regards > -- > Giulio Benetti > Benetti Engineering sas > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
Giulio, All, On 2021-02-09 21:13 +0100, Giulio Benetti spake thusly: > Starting from version 2020.x Do we know exactly what upstream commit made that impossible? Maybe looking at that commit can hint at an upstremable fix? > uboot can't build .dts files not listed in > dts/Makefile leading to a build failure when trying to pass a .dts file to > UBOOT_CUSTOM_DTS_PATH. So let's prepend that file(s) to dts/Makefile if > UBOOT_CUSTOM_DTS_PATH is used. > > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> > --- > boot/uboot/uboot.mk | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk > index 2478a2a1e9..a5ad101d68 100644 > --- a/boot/uboot/uboot.mk > +++ b/boot/uboot/uboot.mk > @@ -303,6 +303,11 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY > UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) > > define UBOOT_BUILD_CMDS > + $(if $(UBOOT_CUSTOM_DTS_PATH), > + $(Q)$(SED) \ > + '1s;^;dtb-y += $(subst .dts,.dtb,$(call notdir,$(UBOOT_CUSTOM_DTS_PATH)))\n;' \ > + $(@D)/arch/$(UBOOT_ARCH)/dts/Makefile How will this behave when one does 'make uboot-rebuild' ? As far as I can see, this is going to endlessly inject the custom dtb, leading to multiple instances of it... Also, it means that the sources we provide as part of legal-info would not contain this line, and thus could be considered non compliant. So, I don't think this is a good solution. If we were to do that, then I think we should; 0. remove the possibility to use out-of-tree custom DTS, and instruct users to provide a patch against uboot, that adds the dts and the corresponding Makefile rule; 1. patch the dts Makefiles to add the possibility to build an arbitrary (set of) dtb from the command line; 2. work with upstream to re-isntate the possibility to specify an arbitrary (set of) dtb to build from the command line. Of course, I think the first option (0) is the dsafest one, because it means the legal-info *will* be complete, as the dts and its rules are then part of the patches saved by legal-info, while options 1 and 2 makes it too easy to forget about providing those dts when gettign in compliance. Of corse, options 0 is also a bit inconvenient for one-off builds. But between a bit of inconvenience, and being non-compliant, I know where my vote goes. Regards, Yann E. MORIN. > + ) > $(if $(UBOOT_CUSTOM_DTS_PATH), > cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ > ) > -- > 2.25.1 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
Giulio, All, (sorry, I sent the previous reply too fast...) On 2021-02-09 21:13 +0100, Giulio Benetti spake thusly: > Starting from version 2020.x uboot can't build .dts files not listed in > dts/Makefile leading to a build failure when trying to pass a .dts file to > UBOOT_CUSTOM_DTS_PATH. So let's prepend that file(s) to dts/Makefile if > UBOOT_CUSTOM_DTS_PATH is used. > > Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> > --- > boot/uboot/uboot.mk | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk > index 2478a2a1e9..a5ad101d68 100644 > --- a/boot/uboot/uboot.mk > +++ b/boot/uboot/uboot.mk > @@ -303,6 +303,11 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY > UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) > > define UBOOT_BUILD_CMDS > + $(if $(UBOOT_CUSTOM_DTS_PATH), > + $(Q)$(SED) \ > + '1s;^;dtb-y += $(subst .dts,.dtb,$(call notdir,$(UBOOT_CUSTOM_DTS_PATH)))\n;' \ > + $(@D)/arch/$(UBOOT_ARCH)/dts/Makefile > + ) > $(if $(UBOOT_CUSTOM_DTS_PATH), Even if this is going to change: why did you duplicate the condition, ather than inject the sed call in the cisting conditional block? Regards, Yann E. MORIN. > cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ > ) > -- > 2.25.1 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk index 2478a2a1e9..a5ad101d68 100644 --- a/boot/uboot/uboot.mk +++ b/boot/uboot/uboot.mk @@ -303,6 +303,11 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) define UBOOT_BUILD_CMDS + $(if $(UBOOT_CUSTOM_DTS_PATH), + $(Q)$(SED) \ + '1s;^;dtb-y += $(subst .dts,.dtb,$(call notdir,$(UBOOT_CUSTOM_DTS_PATH)))\n;' \ + $(@D)/arch/$(UBOOT_ARCH)/dts/Makefile + ) $(if $(UBOOT_CUSTOM_DTS_PATH), cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ )
Starting from version 2020.x uboot can't build .dts files not listed in dts/Makefile leading to a build failure when trying to pass a .dts file to UBOOT_CUSTOM_DTS_PATH. So let's prepend that file(s) to dts/Makefile if UBOOT_CUSTOM_DTS_PATH is used. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> --- boot/uboot/uboot.mk | 5 +++++ 1 file changed, 5 insertions(+)