[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