[Buildroot] [PATCH 1/1] package/bird: needs autoreconf

Arnout Vandecappelle arnout at mind.be
Mon Aug 2 14:15:03 UTC 2021



On 25/07/2021 11:16, Fabrice Fontaine wrote:
> For an unknown reason, autoreconf is needed since bump to version 2.0.8
> in commit f5906644b45269b1a5fe109cb64fad837e4fbff2 to avoid the
> following build failure:
> 
> checking for glob.h... no
> configure: error: glob.h not found.
> 
> This build failure is raised because -g0 and -g are both passed to gcc:
> 
> configure:5207: checking for glob.h
> configure:5230: /data/buildroot-autobuilder/instance-0/output-1/host/bin/mips64el-linux-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os -g0  -pthread -fno-strict-aliasing -fno-strict-overflow -flto -Wall -Wextra -Wstrict-prototypes -Wno-parentheses -Wno-pointer-sign -Wno-missing-field-initializers -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pthread -flto=4 -g conftest.c  >&5
> /data/buildroot-autobuilder/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips64el-buildroot-linux-uclibc/8.4.0/../../../../mips64el-buildroot-linux-uclibc/bin/ld: /tmp/ccDboxph.ltrans0.ltrans.o:(.debug_info+0x2a): undefined reference to `conftest.c.0943dc99'
> /data/buildroot-autobuilder/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mips64el-buildroot-linux-uclibc/8.4.0/../../../../mips64el-buildroot-linux-uclibc/bin/ld: /tmp/ccDboxph.ltrans0.ltrans.o:(.debug_info+0x2f): undefined reference to `conftest.c.0943dc99'
> 
> -g0 is passed by buildroot and -g is passed by bird if
> $ac_test_CFLAGS" != set (since version 2.0.7 and
> https://gitlab.nic.cz/labs/bird/-/commit/cc95b4594ac924b40325a4f1adcae5312179db40)
> 
> For an unknown reason without autoreconf, ac_test_CFLAGS doesn't seem to
> be equal to "set"

 I really don't like "unknown reason", so I investigated a bit more.

 It seems that bird's configure script was generated with a fork of autoconf
that identifies itself as "GNU Autoconf 2.69e". It generates pretty wildly
different code - one of the differences is that it uses

    ac_test_CFLAGS=${CFLAGS+y}

to remember if CFLAGS was saved, while standard autoconf uses

    ac_test_CFLAGS=${CFLAGS+set}

The configure.ac code itself, however, uses

    if test "$ac_test_CFLAGS" != set ; then

to check if CFLAGS was overridden.


 So basically it's a f**up of the distributor that used some weird autoconf version.

 That's enough of an explanation for me, so I updated the commit message with
the above points and applied to master, thanks!

 Regards,
 Arnout



> 
> Fixes:
>  - http://autobuild.buildroot.org/results/1d2acc9f6b8830adc8b62d6b2e55837abae561a9
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> ---
>  package/bird/bird.mk | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/package/bird/bird.mk b/package/bird/bird.mk
> index a8b9b18b50..7d7002d5f2 100644
> --- a/package/bird/bird.mk
> +++ b/package/bird/bird.mk
> @@ -11,6 +11,7 @@ BIRD_LICENSE_FILES = README
>  BIRD_CPE_ID_VENDOR = nic
>  BIRD_SELINUX_MODULES = bird
>  BIRD_DEPENDENCIES = host-flex host-bison
> +BIRD_AUTORECONF = YES
>  
>  ifeq ($(BR2_PACKAGE_BIRD_CLIENT),y)
>  BIRD_CONF_OPTS += --enable-client
> 


More information about the buildroot mailing list