Message ID | 20210204170446.15188-1-kory.maincent@bootlin.com |
---|---|
State | Changes Requested |
Headers | show |
Series | boot/uboot: fix uboot build | expand |
Hello Kory, On Thu, 4 Feb 2021 18:04:46 +0100 Kory Maincent <kory.maincent@bootlin.com> wrote: > The make all command run the tools/makefile on the process. > This makefile use "pkg-config" command to support static link. > The issue is the use of pkg-config configured for crosscompiling > to build binaries tools for host architecture. > To fix it, I copied the behavior of QtWebengine by using a pkg-config > executable preconfigured for host. > > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> Thanks for the patch. It would require a better commit title though, as "fix uboot build" is very vague. > diff --git a/boot/uboot/host-pkg-config.in b/boot/uboot/host-pkg-config.in > new file mode 100644 > index 0000000000..86a980648b > --- /dev/null > +++ b/boot/uboot/host-pkg-config.in > @@ -0,0 +1,6 @@ > +#!/bin/sh > +PKG_CONFIG_SYSROOT_DIR="/" \ > +PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ > +PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ > +PKG_CONFIG_LIBDIR="@HOST_DIR@/lib/pkgconfig:@HOST_DIR@/share/pkgconfig" \ > +exec @HOST_DIR@/bin/pkgconf "$@" > diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk > index 2478a2a1e9..0bcc1ac9a9 100644 > --- a/boot/uboot/uboot.mk > +++ b/boot/uboot/uboot.mk > @@ -302,11 +302,19 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY > > UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) > > +define UBOOT_CREATE_HOST_PKG_CONFIG > + mkdir -p $(@D)/host-bin > + sed s%@HOST_DIR@%$(HOST_DIR)%g $(UBOOT_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/pkg-config > + chmod +x $(@D)/host-bin/pkg-config > +endef > +UBOOT_PRE_CONFIGURE_HOOKS = UBOOT_CREATE_HOST_PKG_CONFIG > +UBOOT_ENV = PATH=$(@D)/host-bin:$(BR_PATH) > + > define UBOOT_BUILD_CMDS > $(if $(UBOOT_CUSTOM_DTS_PATH), > cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ > ) > - $(TARGET_CONFIGURE_OPTS) \ > + $(TARGET_CONFIGURE_OPTS) $(UBOOT_ENV) \ After discussing with Yann E. Morin on IRC, could you try this change instead: $(TARGET_CONFIGURE_OPTS) \ PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ PKG_CONFIG_SYSROOT_DIR="/" \ PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" The reasoning is that U-Boot anyway only uses pkg-config for host tools, so we could just as well pass those environment variables when building U-Boot. Could you try this out? Also, do you have a Buildroot .config to reproduce the issue? Perhaps it would be nice to have a test case in our runtime test infrastructure. Thanks! Thomas
Hello Thomas, On Tue, 16 Mar 2021 23:08:52 +0100 Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > Hello Kory, > > On Thu, 4 Feb 2021 18:04:46 +0100 > Kory Maincent <kory.maincent@bootlin.com> wrote: > > > The make all command run the tools/makefile on the process. > > This makefile use "pkg-config" command to support static link. > > The issue is the use of pkg-config configured for crosscompiling > > to build binaries tools for host architecture. > > To fix it, I copied the behavior of QtWebengine by using a pkg-config > > executable preconfigured for host. > > > > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> > > Thanks for the patch. It would require a better commit title though, as > "fix uboot build" is very vague. Ok I will change it for v2. > After discussing with Yann E. Morin on IRC, could you try this change > instead: > > $(TARGET_CONFIGURE_OPTS) \ > PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ > PKG_CONFIG_SYSROOT_DIR="/" \ > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ > PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ > PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" > > The reasoning is that U-Boot anyway only uses pkg-config for host > tools, so we could just as well pass those environment variables when > building U-Boot. > > Could you try this out? This change works well, the build of U-boot ends properly. > > Also, do you have a Buildroot .config to reproduce the issue? Perhaps > it would be nice to have a test case in our runtime test infrastructure. You can find the defconfig that break the U-boot build in attachment. Regards, Köry
On Thu, 25 Mar 2021 17:34:59 +0100 Köry Maincent <kory.maincent@bootlin.com> wrote: > > After discussing with Yann E. Morin on IRC, could you try this change > > instead: > > > > $(TARGET_CONFIGURE_OPTS) \ > > PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ > > PKG_CONFIG_SYSROOT_DIR="/" \ > > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ > > PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ > > PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" > > > > The reasoning is that U-Boot anyway only uses pkg-config for host > > tools, so we could just as well pass those environment variables when > > building U-Boot. > > > > Could you try this out? > > This change works well, the build of U-boot ends properly. Excellent, thanks! > You can find the defconfig that break the U-boot build in attachment. Perhaps it would be good to capture this defconfig as a test in support/testing/, so we can make sure this doesn't regress? Thomas
Köry, All, On 2021-03-25 17:34 +0100, Köry Maincent spake thusly: > On Tue, 16 Mar 2021 23:08:52 +0100 > Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > > On Thu, 4 Feb 2021 18:04:46 +0100 > > Kory Maincent <kory.maincent@bootlin.com> wrote: > > > The make all command run the tools/makefile on the process. > > > This makefile use "pkg-config" command to support static link. > > > The issue is the use of pkg-config configured for crosscompiling > > > to build binaries tools for host architecture. > > > To fix it, I copied the behavior of QtWebengine by using a pkg-config > > > executable preconfigured for host. > > > > > > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> > > Thanks for the patch. It would require a better commit title though, as > > "fix uboot build" is very vague. > Ok I will change it for v2. > > After discussing with Yann E. Morin on IRC, could you try this change > > instead: > > > > $(TARGET_CONFIGURE_OPTS) \ > > PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ > > PKG_CONFIG_SYSROOT_DIR="/" \ > > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ > > PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ > > PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" > > > > The reasoning is that U-Boot anyway only uses pkg-config for host > > tools, so we could just as well pass those environment variables when > > building U-Boot. > > > > Could you try this out? > > This change works well, the build of U-boot ends properly. I don't seem to have seen a v2 of this patch. Do you plan on sending it soonish? ;-) Thanks! Regards, Yann E. MORIN.
Hello Yann, On Mon, 28 Jun 2021 22:26:56 +0200 "Yann E. MORIN" <yann.morin.1998@free.fr> wrote: > Köry, All, > > On 2021-03-25 17:34 +0100, Köry Maincent spake thusly: > > On Tue, 16 Mar 2021 23:08:52 +0100 > > Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > > > On Thu, 4 Feb 2021 18:04:46 +0100 > > > Kory Maincent <kory.maincent@bootlin.com> wrote: > > > > The make all command run the tools/makefile on the process. > > > > This makefile use "pkg-config" command to support static link. > > > > The issue is the use of pkg-config configured for crosscompiling > > > > to build binaries tools for host architecture. > > > > To fix it, I copied the behavior of QtWebengine by using a pkg-config > > > > executable preconfigured for host. > > > > > > > > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> > > > Thanks for the patch. It would require a better commit title though, as > > > "fix uboot build" is very vague. > > Ok I will change it for v2. > > > > After discussing with Yann E. Morin on IRC, could you try this change > > > instead: > > > > > > $(TARGET_CONFIGURE_OPTS) \ > > > PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ > > > PKG_CONFIG_SYSROOT_DIR="/" \ > > > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ > > > PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ > > > PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" > > > > > > The reasoning is that U-Boot anyway only uses pkg-config for host > > > tools, so we could just as well pass those environment variables when > > > building U-Boot. > > > > > > Could you try this out? > > > > This change works well, the build of U-boot ends properly. > > I don't seem to have seen a v2 of this patch. Do you plan on sending it > soonish? ;-) Sorry, I put it aside for a time. I need to finish the test case asked by Thomas, I will try to find time to do it soon. Regards Köry
diff --git a/boot/uboot/host-pkg-config.in b/boot/uboot/host-pkg-config.in new file mode 100644 index 0000000000..86a980648b --- /dev/null +++ b/boot/uboot/host-pkg-config.in @@ -0,0 +1,6 @@ +#!/bin/sh +PKG_CONFIG_SYSROOT_DIR="/" \ +PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ +PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ +PKG_CONFIG_LIBDIR="@HOST_DIR@/lib/pkgconfig:@HOST_DIR@/share/pkgconfig" \ +exec @HOST_DIR@/bin/pkgconf "$@" diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk index 2478a2a1e9..0bcc1ac9a9 100644 --- a/boot/uboot/uboot.mk +++ b/boot/uboot/uboot.mk @@ -302,11 +302,19 @@ endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) +define UBOOT_CREATE_HOST_PKG_CONFIG + mkdir -p $(@D)/host-bin + sed s%@HOST_DIR@%$(HOST_DIR)%g $(UBOOT_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/pkg-config + chmod +x $(@D)/host-bin/pkg-config +endef +UBOOT_PRE_CONFIGURE_HOOKS = UBOOT_CREATE_HOST_PKG_CONFIG +UBOOT_ENV = PATH=$(@D)/host-bin:$(BR_PATH) + define UBOOT_BUILD_CMDS $(if $(UBOOT_CUSTOM_DTS_PATH), cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ ) - $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_OPTS) $(UBOOT_ENV) \ $(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ $(UBOOT_MAKE_TARGET) $(if $(BR2_TARGET_UBOOT_FORMAT_SD),
The make all command run the tools/makefile on the process. This makefile use "pkg-config" command to support static link. The issue is the use of pkg-config configured for crosscompiling to build binaries tools for host architecture. To fix it, I copied the behavior of QtWebengine by using a pkg-config executable preconfigured for host. Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> --- boot/uboot/host-pkg-config.in | 6 ++++++ boot/uboot/uboot.mk | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 boot/uboot/host-pkg-config.in