The libfdt installed in the system is preferred to the dtc submodule by
default. The recent libfdt update added a new symbol - fdt_check_full -
and this breaks compile if there is an older libfdt installed in
the system.
This changes the test to force ./configure into using newer libfdt.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index 74e313a..7e16a6c 100755
--- a/configure
+++ b/configure
@@ -3826,7 +3826,7 @@ if test "$fdt" != "no" ; then
cat > $TMPC << EOF
#include <libfdt.h>
#include <libfdt_env.h>
-int main(void) { fdt_first_subnode(0, 0); return 0; }
+int main(void) { fdt_check_full(NULL, 0); return 0; }
EOF
if compile_prog "" "$fdt_libs" ; then
# system DTC is good - use it
--
2.17.1
On Thu, Nov 15, 2018 at 02:56:59PM +1100, Alexey Kardashevskiy wrote:
> The libfdt installed in the system is preferred to the dtc submodule by
> default. The recent libfdt update added a new symbol - fdt_check_full -
> and this breaks compile if there is an older libfdt installed in
> the system.
Unless I'm missing something, QEMU doesn't use the fdt_check_full symbol,
so why would the lack of this symbol cause a compile failure.
It should be fine if the dtc submodule contains a newer libfdt than the
host system. As long as QEMU doesn't actually need any of the APIs in
the newer libfdt we should be able to continue using the older system
version if it is present.
Could you elaborate on what build problems you are having.
> This changes the test to force ./configure into using newer libfdt.
I'm not convinced we want todo that.
>
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> configure | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 74e313a..7e16a6c 100755
> --- a/configure
> +++ b/configure
> @@ -3826,7 +3826,7 @@ if test "$fdt" != "no" ; then
> cat > $TMPC << EOF
> #include <libfdt.h>
> #include <libfdt_env.h>
> -int main(void) { fdt_first_subnode(0, 0); return 0; }
> +int main(void) { fdt_check_full(NULL, 0); return 0; }
> EOF
> if compile_prog "" "$fdt_libs" ; then
> # system DTC is good - use it
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On Thu, Nov 15, 2018 at 10:11:12AM +0000, Daniel P. Berrangé wrote:
> On Thu, Nov 15, 2018 at 02:56:59PM +1100, Alexey Kardashevskiy wrote:
> > The libfdt installed in the system is preferred to the dtc submodule by
> > default. The recent libfdt update added a new symbol - fdt_check_full -
> > and this breaks compile if there is an older libfdt installed in
> > the system.
>
> Unless I'm missing something, QEMU doesn't use the fdt_check_full symbol,
> so why would the lack of this symbol cause a compile failure.
>
> It should be fine if the dtc submodule contains a newer libfdt than the
> host system. As long as QEMU doesn't actually need any of the APIs in
> the newer libfdt we should be able to continue using the older system
> version if it is present.
>
> Could you elaborate on what build problems you are having.
>
> > This changes the test to force ./configure into using newer libfdt.
>
> I'm not convinced we want todo that.
So I think the point here is that Alexey has some other outstanding
patches that will use fdt_check_full(). The commit message needs to
make that clear though. Or else include this patch in that series.
>
> >
> > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> > ---
> > configure | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/configure b/configure
> > index 74e313a..7e16a6c 100755
> > --- a/configure
> > +++ b/configure
> > @@ -3826,7 +3826,7 @@ if test "$fdt" != "no" ; then
> > cat > $TMPC << EOF
> > #include <libfdt.h>
> > #include <libfdt_env.h>
> > -int main(void) { fdt_first_subnode(0, 0); return 0; }
> > +int main(void) { fdt_check_full(NULL, 0); return 0; }
> > EOF
> > if compile_prog "" "$fdt_libs" ; then
> > # system DTC is good - use it
>
> Regards,
> Daniel
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
On Thu, Nov 15, 2018 at 09:33:08PM +1100, David Gibson wrote: > On Thu, Nov 15, 2018 at 10:11:12AM +0000, Daniel P. Berrangé wrote: > > On Thu, Nov 15, 2018 at 02:56:59PM +1100, Alexey Kardashevskiy wrote: > > > The libfdt installed in the system is preferred to the dtc submodule by > > > default. The recent libfdt update added a new symbol - fdt_check_full - > > > and this breaks compile if there is an older libfdt installed in > > > the system. > > > > Unless I'm missing something, QEMU doesn't use the fdt_check_full symbol, > > so why would the lack of this symbol cause a compile failure. > > > > It should be fine if the dtc submodule contains a newer libfdt than the > > host system. As long as QEMU doesn't actually need any of the APIs in > > the newer libfdt we should be able to continue using the older system > > version if it is present. > > > > Could you elaborate on what build problems you are having. > > > > > This changes the test to force ./configure into using newer libfdt. > > > > I'm not convinced we want todo that. > > So I think the point here is that Alexey has some other outstanding > patches that will use fdt_check_full(). The commit message needs to > make that clear though. Or else include this patch in that series. If they're not merged yet, this patch should be squashed into whichever of those patches first introduces the need for fdt_check_full(), so that series remains fully git bisectable. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
© 2016 - 2025 Red Hat, Inc.