diff mbox

[2/2] host-dtc: Install libftd and associated header files.

Message ID 20160725195227.21112-2-draeman@bbn.com
State Accepted
Headers show

Commit Message

David Raeman July 25, 2016, 7:52 p.m. UTC
The dtc package currently does not install libfdt for the host install.
It can be useful to have libfdt on the host, such as for building QEMU
with the --enable-fdt configure switch.

Signed-off-by: David Raeman <draeman@bbn.com>
---
 package/dtc/dtc.mk | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni July 25, 2016, 8:01 p.m. UTC | #1
Hello,

On Mon, 25 Jul 2016 15:52:27 -0400, David Raeman wrote:
> The dtc package currently does not install libfdt for the host install.
> It can be useful to have libfdt on the host, such as for building QEMU
> with the --enable-fdt configure switch.
> 
> Signed-off-by: David Raeman <draeman@bbn.com>

We already have the support for --enable-fdt for the host qemu:

ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)
HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-softmmu
HOST_QEMU_OPTS += --enable-system --enable-fdt
HOST_QEMU_DEPENDENCIES += host-dtc
else
HOST_QEMU_OPTS += --disable-system
endif

Do you mean that it doesn't work?

Thanks,

Thomas
David Raeman July 25, 2016, 8:26 p.m. UTC | #2
Hello,

Sorry for the confusion.  I did not mean to imply any problem with the qemu
package provided by buildroot.  I am emulating a Xilinx Zynq target, so I
use a custom package in my br2-external tree that fetches the version of
QEMU that is patched by Xilinx.  It is fetched from
https://github.com/Xilinx/qemu using the new github hook for the SITE macro:

        XLNX_QEMU_SITE = $(call github,Xilinx,qemu,$(XLNX_QEMU_VERSION))

The canonical QEMU repository embeds a ref to dtc's upstream repo in its
source tree using a git submodule.  The QEMU source tree fetched by
buildroot from http://wiki.qemu.org/download/ has that submodule content
populated as a part of the downloaded tarball.  So the qemu package is able
to build using its internal tree of dtc/libfdt, and thus it does not require
finding libfdt within HOST_DIR.

In my case, the Xilinx-patched version downloaded using $(call github ...)
is fetching a tarball from GitHub which does not have the embedded Git
submodule populated.  So the build is instead looking for libfdt within
HOST_DIR and fails if it does not find it.

If there is an aversion to allowing libfdt to be installed as a part of the
host package, I could instead change my br2-external package to download the
Xilinx-patched QEMU using the git:// scheme instead of grabbing the tarball
via $(call github ...).  Then it would grab the Git submodule reference and
I could fetch it by customizing EXTRACT_CMDS.  Either approach is equally
fine with me.

Cheers,
David


-----Original Message-----
From: Thomas Petazzoni [mailto:thomas.petazzoni@free-electrons.com] 
Sent: Monday, July 25, 2016 4:02 PM
To: David Raeman <draeman@bbn.com>
Cc: buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 2/2] host-dtc: Install libftd and associated
header files.

Hello,

On Mon, 25 Jul 2016 15:52:27 -0400, David Raeman wrote:
> The dtc package currently does not install libfdt for the host install.
> It can be useful to have libfdt on the host, such as for building QEMU 
> with the --enable-fdt configure switch.
> 
> Signed-off-by: David Raeman <draeman@bbn.com>

We already have the support for --enable-fdt for the host qemu:

ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)
HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-softmmu HOST_QEMU_OPTS +=
--enable-system --enable-fdt HOST_QEMU_DEPENDENCIES += host-dtc else
HOST_QEMU_OPTS += --disable-system endif

Do you mean that it doesn't work?

Thanks,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering http://free-electrons.com
Yann E. MORIN July 25, 2016, 9:39 p.m. UTC | #3
David, All,

On 2016-07-25 16:26 -0400, David Raeman spake thusly:
> Sorry for the confusion.  I did not mean to imply any problem with the qemu
> package provided by buildroot.  I am emulating a Xilinx Zynq target, so I
> use a custom package in my br2-external tree that fetches the version of
> QEMU that is patched by Xilinx.  It is fetched from
> https://github.com/Xilinx/qemu using the new github hook for the SITE macro:
> 
>         XLNX_QEMU_SITE = $(call github,Xilinx,qemu,$(XLNX_QEMU_VERSION))
> 
> The canonical QEMU repository embeds a ref to dtc's upstream repo in its
> source tree using a git submodule.  The QEMU source tree fetched by
> buildroot from http://wiki.qemu.org/download/ has that submodule content
> populated as a part of the downloaded tarball.  So the qemu package is able
> to build using its internal tree of dtc/libfdt, and thus it does not require
> finding libfdt within HOST_DIR.

That's a shame they have a bundled version... Is it possible to tell
qemu to use the system-installed one (i.e. in our host-dir) instead of
its own bundled one?

> In my case, the Xilinx-patched version downloaded using $(call github ...)
> is fetching a tarball from GitHub which does not have the embedded Git
> submodule populated.  So the build is instead looking for libfdt within
> HOST_DIR and fails if it does not find it.
> 
> If there is an aversion to allowing libfdt to be installed as a part of the
> host package,

I think those explanations are enough to warant installation of libfdt
for the host-package. However, it (or a striped-down version of it)
should have been part of the commit log for your patch.

> I could instead change my br2-external package to download the
> Xilinx-patched QEMU using the git:// scheme instead of grabbing the tarball
> via $(call github ...).  Then it would grab the Git submodule reference and
> I could fetch it by customizing EXTRACT_CMDS.  Either approach is equally
> fine with me.

Note that we now have support for git-submodules since f109e7e
(support/download/git: add support for submodules) and documented in the
manual (nightly version):

    http://nightly.buildroot.org/

    LIBFOO_GIT_SUBMODULES, when LIBFOO_SITE_METHOD=git, will create an
    archive with the git submodules in the repository. Note that we try
    not to use such git submodules when they contain bundled libraries,
    in which case we prefer to use those libraries from their own package.

Regards,
Yann E. MORIN.

> Cheers,
> David
> 
> 
> -----Original Message-----
> From: Thomas Petazzoni [mailto:thomas.petazzoni@free-electrons.com] 
> Sent: Monday, July 25, 2016 4:02 PM
> To: David Raeman <draeman@bbn.com>
> Cc: buildroot@buildroot.org
> Subject: Re: [Buildroot] [PATCH 2/2] host-dtc: Install libftd and associated
> header files.
> 
> Hello,
> 
> On Mon, 25 Jul 2016 15:52:27 -0400, David Raeman wrote:
> > The dtc package currently does not install libfdt for the host install.
> > It can be useful to have libfdt on the host, such as for building QEMU 
> > with the --enable-fdt configure switch.
> > 
> > Signed-off-by: David Raeman <draeman@bbn.com>
> 
> We already have the support for --enable-fdt for the host qemu:
> 
> ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y)
> HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-softmmu HOST_QEMU_OPTS +=
> --enable-system --enable-fdt HOST_QEMU_DEPENDENCIES += host-dtc else
> HOST_QEMU_OPTS += --disable-system endif
> 
> Do you mean that it doesn't work?
> 
> Thanks,
> 
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering http://free-electrons.com
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
diff mbox

Patch

diff --git a/package/dtc/dtc.mk b/package/dtc/dtc.mk
index 8fdcdbe..febd592 100644
--- a/package/dtc/dtc.mk
+++ b/package/dtc/dtc.mk
@@ -51,7 +51,9 @@  define HOST_DTC_BUILD_CMDS
 endef
 
 define HOST_DTC_INSTALL_CMDS
-	$(MAKE) -C $(@D) PREFIX=$(HOST_DIR)/usr install-bin
+	$(MAKE) -C $(@D) PREFIX=$(HOST_DIR)/usr install-bin install-lib \
+		install-includes
+
 endef
 
 $(eval $(generic-package))