[Buildroot] [PATCH 1/3] package/gnupg2: configure script looks at the wrong stdint.h
Romain Naour
romain.naour at openwide.fr
Mon Sep 22 22:27:59 UTC 2014
Hi all,
Le 20/09/2014 22:07, Romain Naour a écrit :
> The configure test "checking absolute name of <stdint.h>..." return
> the absolute path of a stdint.h file from the toolchain sources.
>
> The contents of this file is completely different and obviously
> does not contain intmax_t definitions.
>
> Use gl_cv_absolute_stdint_h to indicate the correct file that
> is in staging directory.
>
> Fixes:
> http://autobuild.buildroot.net/results/92a/92af55396670685f12ed0ebcddfe2d082ed5aeb7/
>
> Signed-off-by: Romain Naour <romain.naour at openwide.fr>
> ---
> package/gnupg2/gnupg2.mk | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/package/gnupg2/gnupg2.mk b/package/gnupg2/gnupg2.mk
> index 33b5bc0..1e3506a 100644
> --- a/package/gnupg2/gnupg2.mk
> +++ b/package/gnupg2/gnupg2.mk
> @@ -17,7 +17,8 @@ GNUPG2_CONF_OPT = \
> --with-libgcrypt-prefix=$(STAGING_DIR)/usr \
> --with-libassuan-prefix=$(STAGING_DIR)/usr \
> --with-ksba-prefix=$(STAGING_DIR)/usr \
> - --with-pth-prefix=$(STAGING_DIR)/usr
> + --with-pth-prefix=$(STAGING_DIR)/usr \
> + gl_cv_absolute_stdint_h=$(STAGING_DIR)/usr/include/stdint.h
>
> ifneq ($(BR2_PACKAGE_GNUPG2_GPGV2),y)
> define GNUPG2_REMOVE_GPGV2
>
This is a weird bug...
The problem is in the configure script at line 14668:
gl_cv_absolute_stdint_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
sed -n '\#/stdint.h#{s#.*"\(.*/stdint.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
Let's try to analyze the problem:
Here is the content of conftest.c:
cat conftest.c
#include <stdint.h>
The first part "$(eval $ac_cpp conftest.$ac_ext)" is the same as arm-linux-cpp conftest.c
Here is the stdout:
# 1 "conftest.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "conftest.c"
# 150 "conftest.c"
# 1 "/home/naourr/git/buildroot/test/gnupg/host/opt/ext-toolchain/lib/gcc/arm-buildroot-linux-uclibcgnueabi/4.8.3/include/stdint.h" 1 3 4
# 9 "/home/naourr/git/buildroot/test/gnupg/host/opt/ext-toolchain/lib/gcc/arm-buildroot-linux-uclibcgnueabi/4.8.3/include/stdint.h" 3 4
# 1 "/home/naourr/git/buildroot/test/gnupg/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/stdint.h" 1 3 4
# 26 "/home/naourr/git/buildroot/test/gnupg/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/stdint.h" 3 4
# 1 "/home/naourr/git/buildroot/test/gnupg/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/features.h" 1 3 4
# 187 "/home/naourr/git/buildroot/test/gnupg/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/features.h" 3 4
# 1 "/home/naourr/git/buildroot/test/gnupg/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/bits/uClibc_config.h" 1 3 4
[...]
Then, the output of arm-linux-cpp is filtered out with the sed command in order to keep the first line containing "stdint.h"
For now, I don't know why 4.8.3/include/stdint.h is listed by arm-linux-cpp and I don't understand entirely the sed command.
I tried to autoreconf the package to rebuild the configure script but without success.
After my investigation on this problem, I found these links:
http://lists.gnupg.org/pipermail/gnupg-devel/2013-December/028116.html
http://bugs.gnupg.org/gnupg/issue1547
To be continued...
Best regards,
Romain Naour
More information about the buildroot
mailing list