From ef81441b43565dafe53ee7bf974b433cf02774d6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Thu, 7 Aug 2008 18:44:33 +0000 Subject: [PATCH] Search all possible library names (unlike SLC4, SL4 has not libmysqlclient.so link). --- org.glite.lbjp-common.db/Makefile | 4 ++-- org.glite.lbjp-common.db/src/db.c | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/org.glite.lbjp-common.db/Makefile b/org.glite.lbjp-common.db/Makefile index 9fc52bd..eb83e15 100644 --- a/org.glite.lbjp-common.db/Makefile +++ b/org.glite.lbjp-common.db/Makefile @@ -32,10 +32,10 @@ ifeq (${host_cpu},x86_64) archlib:=lib64 endif ifeq ($(shell test -f ${mysql_prefix}/${archlib}/libmysqlclient.so && echo ok),ok) - MYSQL_LIBPATH := ${mysql_prefix}/${archlib}/libmysqlclient.so + MYSQL_LIBPATH := "$(wildcard ${mysql_prefix}/${archlib}/libmysqlclient.so*) $(notdir $(wildcard ${mysql_prefix}/${archlib}/libmysqlclient.so*))" endif ifeq ($(shell test -f ${mysql_prefix}/${archlib}/mysql/libmysqlclient.so && echo ok),ok) - MYSQL_LIBPATH := ${mysql_prefix}/${archlib}/mysql/libmysqlclient.so + MYSQL_LIBPATH := "$(wildcard ${mysql_prefix}/${archlib}/mysql/libmysqlclient.so*) $(notdir $(wildcard ${mysql_prefix}/${archlib}/mysql/libmysqlclient.so*))" endif MYSQL_CPPFLAGS:=-I${mysql_prefix}/include -I${mysql_prefix}/include/mysql -DMYSQL_LIBPATH=\"${MYSQL_LIBPATH}\" MYSQL_LIBS=-lz diff --git a/org.glite.lbjp-common.db/src/db.c b/org.glite.lbjp-common.db/src/db.c index 033b9f9..c944245 100644 --- a/org.glite.lbjp-common.db/src/db.c +++ b/org.glite.lbjp-common.db/src/db.c @@ -185,6 +185,7 @@ int glite_lbu_DBError(glite_lbu_DBContext ctx, char **text, char **desc) { int glite_lbu_InitDBContext(glite_lbu_DBContext *ctx) { int err = 0; unsigned int ver_u; + char *p, *libnames, *libname; *ctx = calloc(1, sizeof **ctx); if (!*ctx) return ENOMEM; @@ -192,9 +193,14 @@ int glite_lbu_InitDBContext(glite_lbu_DBContext *ctx) { /* dynamic load the mysql library */ pthread_mutex_lock(&db_handle.lock); if (!db_handle.lib) { - if ((!MYSQL_LIBPATH[0] || (db_handle.lib = dlopen(MYSQL_LIBPATH, RTLD_LAZY | RTLD_LOCAL)) == NULL) && - (db_handle.lib = dlopen("libmysqlclient.so", RTLD_LAZY | RTLD_LOCAL)) == NULL) - return ERR(*ctx, ENOENT, "can't load '%s' or 'libmysqlclient.so' (%s)", MYSQL_LIBPATH, dlerror()); + libnames = strdup(MYSQL_LIBPATH " libmysqlclient.so"); + libname = strtok_r(libnames, " ", &p); + while (libname) { + libname = strtok_r(NULL, " ", &p); + if ((db_handle.lib = dlopen(libname, RTLD_LAZY | RTLD_LOCAL)) != NULL) break; + } + free(libnames); + if (!db_handle.lib) return ERR(*ctx, ENOENT, "can't load libmysqlclient library (%s), tried: ", dlerror(), MYSQL_LIBPATH " libmysqlclient.so"); do { LOAD(mysql_init, "mysql_init"); LOAD(mysql_get_client_version, "mysql_get_client_version"); -- 1.8.2.3