diff mbox series

[v2] boot/uboot: fix uboot building host tools on x86 architecture

Message ID 20210630090247.1035893-1-kory.maincent@bootlin.com
State Accepted
Headers show
Series [v2] boot/uboot: fix uboot building host tools on x86 architecture | expand

Commit Message

Kory Maincent June 30, 2021, 9:02 a.m. UTC
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 add pkg-config environment variable to configure it for host.

Add a test to avoid future regress on the build of U-boot.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
---
 boot/uboot/uboot.mk                           |  5 +++++
 .../package/test_uboot_openssl_pkgconfig.py   | 20 +++++++++++++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 support/testing/tests/package/test_uboot_openssl_pkgconfig.py

Comments

Yann E. MORIN June 30, 2021, 9:07 p.m. UTC | #1
Köry, All,

On 2021-06-30 11:02 +0200, Kory Maincent spake thusly:
> 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 add pkg-config environment variable to configure it for host.
> 
> Add a test to avoid future regress on the build of U-boot.
> 
> Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
> ---
>  boot/uboot/uboot.mk                           |  5 +++++
>  .../package/test_uboot_openssl_pkgconfig.py   | 20 +++++++++++++++++++
>  2 files changed, 25 insertions(+)
>  create mode 100644 support/testing/tests/package/test_uboot_openssl_pkgconfig.py
> 
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index dbe82e65b1..5186e6071e 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -307,6 +307,11 @@ define UBOOT_BUILD_CMDS
>  		cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/
>  	)
>  	$(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" \

Mixed TABs-n-spaces indentation, I've fixed that when applying.

Weird that 'make check-package' did not catch it...

>  		$(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \
>  		$(UBOOT_MAKE_TARGET)
>  	$(if $(BR2_TARGET_UBOOT_FORMAT_SD),
> diff --git a/support/testing/tests/package/test_uboot_openssl_pkgconfig.py b/support/testing/tests/package/test_uboot_openssl_pkgconfig.py
> new file mode 100644
> index 0000000000..557b665b26
> --- /dev/null
> +++ b/support/testing/tests/package/test_uboot_openssl_pkgconfig.py
> @@ -0,0 +1,20 @@
> +import os
> +
> +import infra.basetest
> +
> +
> +class TestUbootOpensslPkgConfig(infra.basetest.BRTest):
> +    config = infra.basetest.MINIMAL_CONFIG + \
> +        """
> +        BR2_x86_64=y
> +        BR2_x86_atom=y
> +        BR2_PACKAGE_OPENSSL=y
> +        BR2_TARGET_UBOOT=y
> +        BR2_TARGET_UBOOT_BOARD_DEFCONFIG="efi-x86_payload64"
> +        BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
> +        BR2_PACKAGE_HOST_PKGCONF=y
> +        """
> +    def test_run(self):
> +        img = os.path.join(self.builddir, "images", "u-boot.bin")
> +        self.assertTrue(os.path.exists(img))
> +

    $ make check-package
    support/testing/tests/package/test_uboot_openssl_pkgconfig.py:17:5: E301 expected 1 blank line, found 0
    support/testing/tests/package/test_uboot_openssl_pkgconfig.py:20:1: W391 blank line at end of file
    1     E301 expected 1 blank line, found 0
    1     W391 blank line at end of file

I've also fixed those, and applied to master, thanks.

Regards,
Yann E. MORIN.

> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Korsgaard July 12, 2021, 8:35 p.m. UTC | #2
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > Köry, All,
 > On 2021-06-30 11:02 +0200, Kory Maincent spake thusly:
 >> 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 add pkg-config environment variable to configure it for host.
 >> 
 >> Add a test to avoid future regress on the build of U-boot.
 >> 
 >> Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
 >> ---
 >> boot/uboot/uboot.mk                           |  5 +++++
 >> .../package/test_uboot_openssl_pkgconfig.py   | 20 +++++++++++++++++++
 >> 2 files changed, 25 insertions(+)
 >> create mode 100644 support/testing/tests/package/test_uboot_openssl_pkgconfig.py
 >> 
 >> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
 >> index dbe82e65b1..5186e6071e 100644
 >> --- a/boot/uboot/uboot.mk
 >> +++ b/boot/uboot/uboot.mk
 >> @@ -307,6 +307,11 @@ define UBOOT_BUILD_CMDS
 >> cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/
 >> )
 >> $(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" \

 > Mixed TABs-n-spaces indentation, I've fixed that when applying.

Hmm, shouldn't we then add host-pkgconf to UBOOT_DEPENDENCIES so things
are not broken when it isn't available?


 >> +class TestUbootOpensslPkgConfig(infra.basetest.BRTest):
 >> +    config = infra.basetest.MINIMAL_CONFIG + \
 >> +        """
 >> +        BR2_x86_64=y
 >> +        BR2_x86_atom=y
 >> +        BR2_PACKAGE_OPENSSL=y
 >> +        BR2_TARGET_UBOOT=y
 >> +        BR2_TARGET_UBOOT_BOARD_DEFCONFIG="efi-x86_payload64"
 >> +        BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
 >> +        BR2_PACKAGE_HOST_PKGCONF=y

And then drop it from here?
Peter Korsgaard Aug. 3, 2021, 8:11 p.m. UTC | #3
>>>>> "Kory" == Kory Maincent <kory.maincent@bootlin.com> writes:

 > 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 add pkg-config environment variable to configure it for host.

 > Add a test to avoid future regress on the build of U-boot.

 > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>

Committed to 2021.02.x and 2021.05.x, thanks.
diff mbox series

Patch

diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index dbe82e65b1..5186e6071e 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -307,6 +307,11 @@  define UBOOT_BUILD_CMDS
 		cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/
 	)
 	$(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" \
 		$(UBOOT_MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \
 		$(UBOOT_MAKE_TARGET)
 	$(if $(BR2_TARGET_UBOOT_FORMAT_SD),
diff --git a/support/testing/tests/package/test_uboot_openssl_pkgconfig.py b/support/testing/tests/package/test_uboot_openssl_pkgconfig.py
new file mode 100644
index 0000000000..557b665b26
--- /dev/null
+++ b/support/testing/tests/package/test_uboot_openssl_pkgconfig.py
@@ -0,0 +1,20 @@ 
+import os
+
+import infra.basetest
+
+
+class TestUbootOpensslPkgConfig(infra.basetest.BRTest):
+    config = infra.basetest.MINIMAL_CONFIG + \
+        """
+        BR2_x86_64=y
+        BR2_x86_atom=y
+        BR2_PACKAGE_OPENSSL=y
+        BR2_TARGET_UBOOT=y
+        BR2_TARGET_UBOOT_BOARD_DEFCONFIG="efi-x86_payload64"
+        BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
+        BR2_PACKAGE_HOST_PKGCONF=y
+        """
+    def test_run(self):
+        img = os.path.join(self.builddir, "images", "u-boot.bin")
+        self.assertTrue(os.path.exists(img))
+