d7f2d8403e
gnupg2 uses the libgpg-error library. The libgpg-error library has a long plan to be renamed to "gpgrt" (see [1]). For the transition, it provides two configuration scripts "gpg-error-config" (the old, original one, kept for compatibility) and "gpgrt-config" (which is meant to be the replacement). When both are detected, "gpgrt-config" should be preferred. gnupg2 configure script searches for "gpg-error-config" in the path provided to --with-libgpg-error-prefix=PFX (more specifically, in "PFX/bin"). The logic to find "gpgrt-config" is different: it is searched in paths "$prefix/bin:$PATH". See [2]. On Buildroot, autotools target packages are configured with "--prefix=/usr", which makes the configure script to search in the host "/usr/bin". In some host environment providing such a "/usr/bin/gpgrt-config" script of an older version, host compilation flags are incorrectly added for the target, which leads to compilation failures. The issue can be reproduced in a Buildroot Docker image from [3] in which the libgpg-error-dev package is added. When tested, the libgpg-error-dev package was at version 1.38. In that configuration, gnupg2 configure will output the message: checking for gpgrt-config... /usr/bin/gpgrt-config and the compilation fails with a message: aarch64-buildroot-linux-gnu-gcc: ERROR: unsafe header/library path used in cross-compilation: '-I/usr/include' Note: it was observed that in some other configurations in which the host /usr/bin/gpgrt-config was from libgpg-error version 1.46, the host script was redirecting correctly in the buildroot sysroot. Since gnupg2 searches for "gpgrt-config" with a "AC_PATH_PROG(GPGRT_CONFIG, ...)" macro, this patch fixes this issue by simply forcing the script path in the GPGRT_CONFIG environment variable. See also [4] which discussed the "gpgrt-config" search logic. Fixes: - http://autobuild.buildroot.net/results/423c3ce7317c181e9f2e4a49b76ee9d26167375c/ (and many others) [1] https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=blob;f=README;h=e0b9f16445a96942af0839bcdb9a0b0f8cf31380;hb=885a287a57cf060b4c5b441822c09d23b8dee2bd#l29 [2] https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=m4/gpg-error.m4;h=a975e53d07d1b743f51d8aa1767cd8e0d71b4071;hb=c0556edb80518720b0d884251685fe008c8f0429#l68 [3] https://git.buildroot.org/buildroot/tree/support/docker/Dockerfile?id=b6085c00d0feece6f3ba635e7847ea653bc5fac3 [4] https://dev.gnupg.org/T5365 Reported-by: Bagas Sanjaya <bagasdotme@gmail.com> Tested-by: Bagas Sanjaya <bagasdotme@gmail.com> Signed-off-by: Julien Olivain <ju.o@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
74 lines
2.0 KiB
Makefile
74 lines
2.0 KiB
Makefile
################################################################################
|
|
#
|
|
# gnupg2
|
|
#
|
|
################################################################################
|
|
|
|
GNUPG2_VERSION = 2.4.0
|
|
GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2
|
|
GNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg
|
|
GNUPG2_LICENSE = GPL-3.0+
|
|
GNUPG2_LICENSE_FILES = COPYING
|
|
GNUPG2_CPE_ID_VENDOR = gnupg
|
|
GNUPG2_CPE_ID_PRODUCT = gnupg
|
|
GNUPG2_SELINUX_MODULES = gpg
|
|
GNUPG2_DEPENDENCIES = zlib libgpg-error libgcrypt libassuan libksba libnpth \
|
|
$(if $(BR2_PACKAGE_LIBICONV),libiconv) host-pkgconf
|
|
|
|
GNUPG2_CONF_OPTS = \
|
|
--disable-rpath \
|
|
--with-libgpg-error-prefix=$(STAGING_DIR)/usr \
|
|
--with-libgcrypt-prefix=$(STAGING_DIR)/usr \
|
|
--with-libassuan-prefix=$(STAGING_DIR)/usr \
|
|
--with-ksba-prefix=$(STAGING_DIR)/usr \
|
|
--with-npth-prefix=$(STAGING_DIR)/usr
|
|
|
|
# Force the path to "gpgrt-config" (from the libgpg-error package) to
|
|
# avoid using the one on host, if present.
|
|
GNUPG2_CONF_ENV += GPGRT_CONFIG=$(STAGING_DIR)/usr/bin/gpgrt-config
|
|
|
|
ifneq ($(BR2_PACKAGE_GNUPG2_GPGV),y)
|
|
define GNUPG2_REMOVE_GPGV
|
|
rm -f $(TARGET_DIR)/usr/bin/gpgv
|
|
endef
|
|
GNUPG2_POST_INSTALL_TARGET_HOOKS += GNUPG2_REMOVE_GPGV
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_BZIP2),y)
|
|
GNUPG2_CONF_OPTS += --enable-bzip2 --with-bzip2=$(STAGING_DIR)
|
|
GNUPG2_DEPENDENCIES += bzip2
|
|
else
|
|
GNUPG2_CONF_OPTS += --disable-bzip2
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_GNUTLS),y)
|
|
GNUPG2_CONF_OPTS += --enable-gnutls
|
|
GNUPG2_DEPENDENCIES += gnutls
|
|
else
|
|
GNUPG2_CONF_OPTS += --disable-gnutls
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBUSB),y)
|
|
GNUPG2_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/libusb-1.0"
|
|
GNUPG2_CONF_OPTS += --enable-ccid-driver
|
|
GNUPG2_DEPENDENCIES += libusb
|
|
else
|
|
GNUPG2_CONF_OPTS += --disable-ccid-driver
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_READLINE),y)
|
|
GNUPG2_CONF_OPTS += --with-readline=$(STAGING_DIR)
|
|
GNUPG2_DEPENDENCIES += readline
|
|
else
|
|
GNUPG2_CONF_OPTS += --without-readline
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SQLITE),y)
|
|
GNUPG2_CONF_OPTS += --enable-sqlite
|
|
GNUPG2_DEPENDENCIES += sqlite
|
|
else
|
|
GNUPG2_CONF_OPTS += --disable-sqlite
|
|
endif
|
|
|
|
$(eval $(autotools-package))
|