Skip site navigation (1)Skip section navigation (2)
Date:      Mon,  7 May 2007 17:30:12 +0200 (CEST)
From:      Thierry Thomas <thierry@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/112497: Mk/bsd.port.mk: make ldconfig permanent for non-default prefixes.
Message-ID:  <20070507153012.A13CA1142F@graf.pompo.net>
Resent-Message-ID: <200705071540.l47Fe4or099277@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         112497
>Category:       ports
>Synopsis:       Mk/bsd.port.mk: make ldconfig permanent for non-default prefixes.
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Mon May 07 15:40:04 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Thierry Thomas
>Release:        FreeBSD 6.2-STABLE i386
>Organization:
Kabbale Eros
>Environment:
System: FreeBSD graf.pompo.net 6.2-STABLE FreeBSD 6.2-STABLE #0: Sun Jan 28 10:29:56 CET 2007 thierry@graf.pompo.net:/usr/obj/usr/src/sys/GRAF060511 i386


	
>Description:
	When a port installs shared libraries using a non-default PREFIX
	ldconfig registers these libraries, but this registration does
	not survive after a reboot, because the configuration file has
	not been written.

>How-To-Repeat:
	E.g. install the port net/mpich2 (as a port or as a package).
	At the end of the installation, ldconfig is launched:

	===>   Running ldconfig
	/sbin/ldconfig -m /usr/local/mpich2/lib

	and you can check that the libraries are found by

	ldconfig -r | grep mpich2
	search directories: /lib:/usr/lib:/usr/lib/compat:/usr/X11R6/lib:/usr/local/lib:...:/usr/local/mpich2/lib
	1202:-lfmpich.0 => /usr/local/mpich2/lib/libfmpich.so.0
	1203:-lmpich.0 => /usr/local/mpich2/lib/libmpich.so.0

	But the file /usr/local/libdata/ldconfig/mpich2 does not exists,
	hence /usr/local/mpich2/lib won't be scanned by /etc/rc.d/ldconfig
	and after a reboot `ldconfig -r | grep mpich2' won't return
	anything.

>Fix:
	The following patch defines the default prefix, and registers
	UNIQUENAME under LDCONFIG_DIR if the actual prefix is different:

--- bsd.port.mk.diff begins here ---
--- Mk/bsd.port.mk.orig	Mon Apr  9 21:08:51 2007
+++ Mk/bsd.port.mk	Mon May  7 16:53:06 2007
@@ -1402,11 +1402,14 @@
 .endif
 .if defined(USE_X_PREFIX)
 PREFIX?=		${X11BASE_REL}
+DEF_PREFIX=		${X11BASE_REL}
 .elif defined(USE_LINUX_PREFIX)
 PREFIX?=		${LINUXBASE_REL}
+DEF_PREFIX=		${LINUXBASE_REL}
 NO_MTREE=		yes
 .else
 PREFIX?=		${LOCALBASE_REL}
+DEF_PREFIX=		${LOCALBASE_REL}
 .endif
 
 .if defined(USE_LINUX_PREFIX)
@@ -3862,14 +3865,14 @@
 	${CHROOT} ${DESTDIR} -${LDCONFIG} -m ${USE_LDCONFIG}
 .endif
 .endif
-.if ${USE_LDCONFIG} != "${PREFIX}/lib"
+.if (${USE_LDCONFIG} != "${PREFIX}/lib") || (${PREFIX} != ${DEF_PREFIX})
 	@${ECHO_MSG} "===>   Installing ldconfig configuration file"
 .if defined(NO_LDCONFIG_MTREE)
 	@${MKDIR} ${PREFIX}/${LDCONFIG_DIR}
 .endif
 	@${ECHO_CMD} ${USE_LDCONFIG} | ${TR} ' ' '\n' \
-		> ${PREFIX}/${LDCONFIG_DIR}/${UNIQUENAME}
-	@${ECHO_CMD} "@cwd" >> ${TMPPLIST}
+		> ${DEF_PREFIX}/${LDCONFIG_DIR}/${UNIQUENAME}
+	@${ECHO_CMD} "@cwd ${DEF_PREFIX}" >> ${TMPPLIST}
 	@${ECHO_CMD} ${LDCONFIG_DIR}/${UNIQUENAME} >> ${TMPPLIST}
 .if defined(NO_LDCONFIG_MTREE)
 	@${ECHO_CMD} "@unexec rmdir ${LDCONFIG_DIR} >/dev/null 2>&1 || true" >> ${TMPPLIST}
--- bsd.port.mk.diff ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070507153012.A13CA1142F>