diff mbox series

[qemu] configure/fdt: Use more strict test for libfdt version

Message ID 20181115035659.85245-1-aik@ozlabs.ru
State New
Headers show
Series [qemu] configure/fdt: Use more strict test for libfdt version | expand

Commit Message

Alexey Kardashevskiy Nov. 15, 2018, 3:56 a.m. UTC
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(-)

Comments

Daniel P. Berrangé Nov. 15, 2018, 10:11 a.m. UTC | #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
David Gibson Nov. 15, 2018, 10:33 a.m. UTC | #2
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
Daniel P. Berrangé Nov. 15, 2018, 10:39 a.m. UTC | #3
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
diff mbox series

Patch

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