summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2004-08-01 22:24:07 +0000
committerpjd <pjd@FreeBSD.org>2004-08-01 22:24:07 +0000
commit237c75e898625c7229b8d6db9c909d719aea8ef3 (patch)
tree0693b34165ff1c9f70d31ae39190d546ba9042af
parentb6d85a7112a38530d6e7f4e50fa29658304e0a68 (diff)
downloadFreeBSD-src-237c75e898625c7229b8d6db9c909d719aea8ef3.zip
FreeBSD-src-237c75e898625c7229b8d6db9c909d719aea8ef3.tar.gz
After changing LIBDIR to SHLIBDIR, because of dependencies problems,
new problem shows up: symblic links (<libname>.so) are created under /usr/lib/ now, instead of under /lib/geom/ where geom(8) looks for them. Introduce a workaround to fix this by teaching geom(8) to open libraries via /lib/geom/<libname>.so.<major_number> instead of /lib/geom/<libname>.so.
-rw-r--r--sbin/geom/Makefile.inc3
-rw-r--r--sbin/geom/class/Makefile.inc6
-rw-r--r--sbin/geom/core/Makefile2
-rw-r--r--sbin/geom/core/geom.c3
4 files changed, 8 insertions, 6 deletions
diff --git a/sbin/geom/Makefile.inc b/sbin/geom/Makefile.inc
index ac8d315..d3914ab 100644
--- a/sbin/geom/Makefile.inc
+++ b/sbin/geom/Makefile.inc
@@ -1,6 +1,7 @@
# $FreeBSD$
WARNS?= 6
-CLASSDIR?=/lib/geom
+CLASS_DIR?=/lib/geom
+CLASS_MAJOR?=1
.include "../Makefile.inc"
diff --git a/sbin/geom/class/Makefile.inc b/sbin/geom/class/Makefile.inc
index 6102b05..aeb0dcd 100644
--- a/sbin/geom/class/Makefile.inc
+++ b/sbin/geom/class/Makefile.inc
@@ -1,8 +1,8 @@
# $FreeBSD$
-SHLIB_MAJOR= 1
-SHLIB_NAME?= geom_${CLASS}.so.${SHLIB_MAJOR}
-SHLIBDIR?= ${CLASSDIR}
+SHLIBDIR?=${CLASS_DIR}
+SHLIB_MAJOR=${CLASS_MAJOR}
+SHLIB_NAME?=geom_${CLASS}.so.${SHLIB_MAJOR}
LINKS= ${BINDIR}/geom ${BINDIR}/g${CLASS}
MAN= g${CLASS}.8
SRCS= geom_${CLASS}.c subr.c
diff --git a/sbin/geom/core/Makefile b/sbin/geom/core/Makefile
index 053dbd0..6ee6c39 100644
--- a/sbin/geom/core/Makefile
+++ b/sbin/geom/core/Makefile
@@ -6,7 +6,7 @@ PROG= geom
MAN= geom.8
SRCS= geom.c subr.c
-CFLAGS+= -DCLASSDIR=\"${CLASSDIR}\"
+CFLAGS+= -DCLASS_DIR=\"${CLASS_DIR}\" -DCLASS_MAJOR=${CLASS_MAJOR}
CFLAGS+= -I${.CURDIR}/../../../sys -I${.CURDIR} -I${.CURDIR}/..
DPADD= ${LIBGEOM} ${LIBSBUF} ${LIBBSDXML} ${LIBUTIL}
diff --git a/sbin/geom/core/geom.c b/sbin/geom/core/geom.c
index 12959a3..dcc6631 100644
--- a/sbin/geom/core/geom.c
+++ b/sbin/geom/core/geom.c
@@ -438,7 +438,8 @@ load_library(void)
uint32_t *lib_version;
void *dlh;
- snprintf(path, sizeof(path), "%s/geom_%s.so", CLASSDIR, class_name);
+ snprintf(path, sizeof(path), "%s/geom_%s.so.%u", CLASS_DIR, class_name,
+ CLASS_MAJOR);
dlh = dlopen(path, RTLD_NOW);
if (dlh == NULL) {
#if 0
OpenPOWER on IntegriCloud