readline: install a .pc file

Some packages (such as udftools) fail to build against readline in
static linking configurations. To fix this, we install the .pc file
provided by readline.

Unfortunately, this .pc file is by default not correct, so a patch is
added to fix it, and this patch requires to re-autoconf the package
(but not autoreconf since only autoconf is used).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2018.05.x
Thomas Petazzoni 2018-04-22 23:20:04 +02:00 committed by Peter Korsgaard
parent eef4251462
commit a2d07f1be6
2 changed files with 77 additions and 2 deletions

View File

@ -0,0 +1,62 @@
From 7bbf2046fbcf4416ec226ecb3a2b4c6a5c263298 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date: Sun, 22 Apr 2018 23:06:28 +0200
Subject: [PATCH] configure.ac, readline.pc.in: fix Requires.private value
The provided readline.pc.in hardcodes the fact that readline depends
on the tinfo library. However, different termcap implementation are
supported beyond tinfo. This commit improves the configure.ac script
to define a TERMCAP_PKG_CONFIG_LIB variable, which is then used in
readline.pc.in.
This for example allows the generated readline.pc to properly contain
"Requires.private: ncurses" when ncurses is used as the termcap
implementation.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
configure.ac | 8 ++++++++
readline.pc.in | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index fd0cec4..9f85f37 100644
--- a/configure.ac
+++ b/configure.ac
@@ -276,6 +276,13 @@ case "$BUILD_DIR" in
*) ;;
esac
+case "$TERMCAP_LIB" in
+-ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;;
+-lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
+esac
+
AC_SUBST(BUILD_DIR)
AC_SUBST(CFLAGS)
@@ -292,6 +299,7 @@ AC_SUBST(host_os)
AC_SUBST(LIBVERSION)
AC_SUBST(TERMCAP_LIB)
+AC_SUBST(TERMCAP_PKG_CONFIG_LIB)
AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc],
[
diff --git a/readline.pc.in b/readline.pc.in
index fbfca8a..a7f2cf3 100644
--- a/readline.pc.in
+++ b/readline.pc.in
@@ -7,6 +7,6 @@ Name: Readline
Description: Gnu Readline library for command line editing
URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html
Version: @LIBVERSION@
-Requires.private: tinfo
+Requires.private: @TERMCAP_PKG_CONFIG_LIB@
Libs: -L${libdir} -lreadline
Cflags: -I${includedir}/readline
--
2.14.3

View File

@ -7,18 +7,31 @@
READLINE_VERSION = 7.0
READLINE_SITE = $(BR2_GNU_MIRROR)/readline
READLINE_INSTALL_STAGING = YES
READLINE_DEPENDENCIES = ncurses
HOST_READLINE_DEPENDENCIES = host-ncurses
READLINE_DEPENDENCIES = ncurses host-autoconf
HOST_READLINE_DEPENDENCIES = host-ncurses host-autoconf
READLINE_CONF_ENV = bash_cv_func_sigsetjmp=yes \
bash_cv_wcwidth_broken=no
READLINE_LICENSE = GPL-3.0+
READLINE_LICENSE_FILES = COPYING
# readline only uses autoconf, not automake, and therefore the regular
# AUTORECONF = YES doesn't work.
define READLINE_AUTOCONF
cd $(@D); $(HOST_DIR)/bin/autoconf
endef
READLINE_PRE_CONFIGURE_HOOKS += READLINE_AUTOCONF
HOST_READLINE_PRE_CONFIGURE_HOOKS += READLINE_AUTOCONF
define READLINE_PURGE_EXAMPLES
rm -rf $(TARGET_DIR)/usr/share/readline
endef
READLINE_POST_INSTALL_TARGET_HOOKS += READLINE_PURGE_EXAMPLES
define READLINE_INSTALL_PC_FILE
$(INSTALL) -D -m 644 $(@D)/readline.pc $(STAGING_DIR)/usr/lib/pkgconfig/readline.pc
endef
READLINE_POST_INSTALL_STAGING_HOOKS += READLINE_INSTALL_PC_FILE
define READLINE_INSTALL_INPUTRC
$(INSTALL) -D -m 644 package/readline/inputrc $(TARGET_DIR)/etc/inputrc
endef