|
@@ -31,12 +31,26 @@ info() { echo "==> $*"; }
|
|
|
|
|
|
|
|
have_cmd() { command -v "$1" >/dev/null 2>&1; }
|
|
have_cmd() { command -v "$1" >/dev/null 2>&1; }
|
|
|
|
|
|
|
|
|
|
+# True only if the linker can resolve -lNAME (unversioned .so or .a).
|
|
|
|
|
+# Versioned runtime libs like libfoo.so.21 alone are NOT enough.
|
|
|
find_lib() {
|
|
find_lib() {
|
|
|
local name="$1"
|
|
local name="$1"
|
|
|
- ldconfig -p 2>/dev/null | grep -q "lib${name}\\.so" && return 0
|
|
|
|
|
- [[ -f "/usr/local/lib/lib${name}.a" || -f "/usr/local/lib/lib${name}.so" ]] && return 0
|
|
|
|
|
- [[ -f "/usr/lib/x86_64-linux-gnu/lib${name}.a" || -f "/usr/lib/x86_64-linux-gnu/lib${name}.so" ]] && return 0
|
|
|
|
|
- [[ -f "/usr/lib/lib${name}.a" || -f "/usr/lib/lib${name}.so" ]] && return 0
|
|
|
|
|
|
|
+ local dir
|
|
|
|
|
+ for dir in /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib; do
|
|
|
|
|
+ [[ -e "${dir}/lib${name}.so" || -e "${dir}/lib${name}.a" ]] && return 0
|
|
|
|
|
+ done
|
|
|
|
|
+ return 1
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+# Runtime .so is enough for DT_NEEDED deps of shared mysqlcppconn.
|
|
|
|
|
+find_lib_runtime() {
|
|
|
|
|
+ local name="$1"
|
|
|
|
|
+ local dir
|
|
|
|
|
+ for dir in /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib; do
|
|
|
|
|
+ [[ -e "${dir}/lib${name}.so" || -e "${dir}/lib${name}.a" ]] && return 0
|
|
|
|
|
+ compgen -G "${dir}/lib${name}.so.*" >/dev/null && return 0
|
|
|
|
|
+ done
|
|
|
|
|
+ ldconfig -p 2>/dev/null | grep -E -q "lib${name}\\.so(\\.|$)" && return 0
|
|
|
return 1
|
|
return 1
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -115,7 +129,36 @@ cmd_check() {
|
|
|
ok=0
|
|
ok=0
|
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
- for lib in mysqlcppconn mysqlclient sqlite3 leveldb ssl crypto z; do
|
|
|
|
|
|
|
+ # Prefer shared mysqlcppconn.so so -lmysqlclient is not required at link time.
|
|
|
|
|
+ if [[ -e /usr/lib/x86_64-linux-gnu/libmysqlcppconn.so \
|
|
|
|
|
+ || -e /usr/local/lib/libmysqlcppconn.so \
|
|
|
|
|
+ || -e /usr/lib/libmysqlcppconn.so ]]; then
|
|
|
|
|
+ echo " [OK] library: mysqlcppconn (shared)"
|
|
|
|
|
+ if find_lib_runtime mysqlclient; then
|
|
|
|
|
+ echo " [OK] library: mysqlclient (runtime)"
|
|
|
|
|
+ else
|
|
|
|
|
+ echo " [MISS] library: mysqlclient runtime (libmysqlclient.so.*)"
|
|
|
|
|
+ ok=0
|
|
|
|
|
+ fi
|
|
|
|
|
+ if find_lib mysqlclient; then
|
|
|
|
|
+ echo " [OK] library: mysqlclient (linkable, optional)"
|
|
|
|
|
+ else
|
|
|
|
|
+ echo " [WARN] library: mysqlclient not linkable (ok with shared mysqlcppconn; install libmysqlclient-dev if link fails)"
|
|
|
|
|
+ fi
|
|
|
|
|
+ elif find_lib mysqlcppconn; then
|
|
|
|
|
+ echo " [OK] library: mysqlcppconn (static)"
|
|
|
|
|
+ if find_lib mysqlclient; then
|
|
|
|
|
+ echo " [OK] library: mysqlclient"
|
|
|
|
|
+ else
|
|
|
|
|
+ echo " [MISS] library: mysqlclient (required for static mysqlcppconn; try: ./build.sh deps)"
|
|
|
|
|
+ ok=0
|
|
|
|
|
+ fi
|
|
|
|
|
+ else
|
|
|
|
|
+ echo " [MISS] library: mysqlcppconn (try: ./build.sh deps)"
|
|
|
|
|
+ ok=0
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ for lib in sqlite3 leveldb ssl crypto z; do
|
|
|
if find_lib "$lib"; then
|
|
if find_lib "$lib"; then
|
|
|
echo " [OK] library: $lib"
|
|
echo " [OK] library: $lib"
|
|
|
else
|
|
else
|