Skip to contentSkip to conversation

pseudo: fix link of sqlite3 using pkg-config

PATCH In review Jens Rehsack 2 participants 2 messages Nov 18, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pseudo: fix link of sqlite3 using pkg-config

If sqlite3 is built with FTS5 it uses log() from libm, it sqlite3 is built with READLINE it uses tgetent from a curses lib and readline from libreadline, if it is built using deflate from libz ... , but all that linkage is lost if we manually statically link so explicitely extract extra static linking options from pkg-config and force them into pseudo as well.

This commit obsoletes (so include the implicit revert)
e39fec613d pseudo: fix link with new sqlite3

---
 meta/recipes-devtools/pseudo/files/libm.patch | 33 -------------------
 meta/recipes-devtools/pseudo/pseudo.inc       | 19 +++++++++--
 meta/recipes-devtools/pseudo/pseudo_git.bb    |  1 -
 3 files changed, 16 insertions(+), 37 deletions(-)
 delete mode 100644 meta/recipes-devtools/pseudo/files/libm.patch
meta/recipes-devtools/pseudo/files/libm.patch deleted +0 -33
deleted file mode 100644
index 1a82979313..0000000000
@@ -1,33 +0,0 @@
-If sqlite3 is built with FTS5 enabled then it links to libm.so for log(), but if
-we statically link to libsqlite3.a then this linkage is lost.
-
-Work around this by always linking to libm.so.
-
-Upstream-Status: Submitted
-Signed-off-by: Ross Burton <[email protected]>
-
-From 4633a8750f0966621d258548fba82bc6aa5aa997 Mon Sep 17 00:00:00 2001
-From: Ross Burton <[email protected]>
-Date: Tue, 6 Nov 2018 12:13:17 +0000
-Subject: [PATCH] Makefile: sqlite can need libm
-
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index ad6541b..28b5ecb 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -73,7 +73,7 @@ WRAPOBJS=pseudo_wrappers.o
- 
- # needed for anything that links with pseduo_client.o, pretty much
- CLIENT_LDFLAGS=-ldl -lpthread
--DB_LDFLAGS=@SQLITE_LDARG@ -lpthread
-+DB_LDFLAGS=@SQLITE_LDARG@ -lpthread -lm
- 
- PSEUDO=$(BIN)/pseudo
- PSEUDODB=$(BIN)/pseudodb
--- 
-2.11.0
-
meta/recipes-devtools/pseudo/pseudo.inc +16 -3
index cdc2a5823f..8b05735bb1 100644
@@ -17,7 +17,7 @@ PROVIDES += "virtual/fakeroot"
 
 MAKEOPTS = ""
 
-inherit siteinfo
+inherit siteinfo pkgconfig
 
 do_configure () {
 	:
@@ -30,10 +30,23 @@ PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback --enable-ep
 
 # Compile for the local machine arch...
 do_compile () {
+        SQLITE_LDADD='$(SQLITE)/$(SQLITE_LIB)/libsqlite3.a'
+	for sqlite_link_opt in $(pkg-config sqlite3 --libs --static)
+	do
+	    case "$sqlite_link_opt" in
+	    -lsqlite3)
+		;;
+	    -l*)
+		SQLITE_LDADD="${SQLITE_LDADD} ${sqlite_link_opt}"
+		;;
+	    *)
+		;;
+	    esac
+	done
 	if [ "${SITEINFO_BITS}" = "64" ]; then
-	  ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
+	  ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib${SITEINFO_BITS} --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --with-static-sqlite="$SQLITE_LDADD" --without-rpath
 	else
-	  ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --enable-static-sqlite --without-rpath
+	  ${S}/configure ${PSEUDO_EXTRA_OPTS} --prefix=${prefix} --libdir=${prefix}/lib/pseudo/lib --with-sqlite-lib=${baselib} --with-sqlite=${STAGING_DIR_TARGET}${exec_prefix} --cflags="${CFLAGS}" --bits=${SITEINFO_BITS} --with-static-sqlite="$SQLITE_LDADD" --without-rpath
 	fi
 	oe_runmake ${MAKEOPTS}
 }
meta/recipes-devtools/pseudo/pseudo_git.bb +0 -1
index c9a4ecd2e2..79e0b6bd21 100644
@@ -2,7 +2,6 @@ require pseudo.inc
 
 SRC_URI = "git://git.yoctoproject.org/pseudo \
            file://0001-configure-Prune-PIE-flags.patch \
-           file://libm.patch \
            file://fallback-passwd \
            file://fallback-group \
            file://moreretries.patch \
Signature · 1 line
2.17.1
#1 lore raw

meta/recipes-devtools/pseudo/pseudo.inc PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback --enable-ep · line 34

Quoted 1 line · On Sun, 18 Nov 2018 19:36:46 +0100 Jens Rehsack <[email protected]> wrote:
meta/recipes-devtools/pseudo/pseudo.inc +1 -0
+	for sqlite_link_opt in $(pkg-config sqlite3 --libs --static)

Ugh, but yeah, I think this is probably needed. I'm a bit concerned about libsqlite3 ending up with readline included, that really seems like something that should only be ending up in the sqlite3 binary, not in the library?

None of this affects client side (libpseudo doesn't get linked against sqlite3), so it shouldn't cause problems for other programs. So this looks good to me.

Sorry about the delay in getting to things, I am sorta swamped lately.

-s