Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jul 2004 15:34:36 +0400 (MSD)
From:      Alexander Novitsky <alecn2002@yandex.ru>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        alecn2002@yandex.ru
Subject:   ports/69757: [PORTS SYSTEM ERROR] Invalid checking for installed Linux libs in the bsd.port.mk script
Message-ID:  <200407291134.i6TBYadf048179@server.v42of.icc-vvd.ru>
Resent-Message-ID: <200407291230.i6TCUPGf025180@freefall.freebsd.org>

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

>Number:         69757
>Category:       ports
>Synopsis:       [PORTS SYSTEM ERROR] Invalid checking for installed Linux libs in the bsd.port.mk script
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 29 12:30:25 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Alexander Novitsky
>Release:        FreeBSD 5.2-RELEASE i386
>Organization:
Inzhcomcentre VDV
>Environment:
System: FreeBSD server.v42of.icc-vvd.ru 5.2-RELEASE FreeBSD 5.2-RELEASE #2: Mon Jul 12 21:45:44 MSD 2004 root@server.v42of.icc-vvd.ru:/usr/src/sys/i386/compile/ORACLE i386


>Description:
	When I try to install port with USE_LINUX=yes, and this port depends on already installed Linux shared library
	(LIB_DEPENDS=...), the bsd.port.mk script uses FreeBSD' native /sbin/ldconfig instead of /compat/linux/sbin/ldconfig
>How-To-Repeat:
	Try to install some Linux port which depends on already installed Linux library which doesn't have similar native FreeBSD library. 
	The installation of already installed library will start again, and the whole installation process will fail.
>Fix:

	

--- bsd.port.mk.diff begins here ---
--- bsd.port.mk.orig	Thu Jul 29 12:06:51 2004
+++ bsd.port.mk	Thu Jul 29 12:21:49 2004
@@ -838,7 +838,17 @@
 HEAD?=		/usr/bin/head
 ID?=		/usr/bin/id
 IDENT?=		/usr/bin/ident
+.if defined(USE_LINUX)
+LDCONFIG?=	${LINUX_BASE}/sbin/ldconfig
+LDCONFIG_LISTCMD=	-p
+LDCONFIG_REBUILDCMD=	-l
+LDCONFIG_GBLREBUILDCMD=
+.else
 LDCONFIG?=	/sbin/ldconfig
+LDCONFIG_LISTCMD=	-r
+LDCONFIG_REBUILDCMD=	-m
+LDCONFIG_GBLREBUILDCMD=	-R
+.end
 LN?=		/bin/ln
 LS?=		/bin/ls
 MKDIR?=		/bin/mkdir -p
@@ -3365,10 +3375,10 @@
 .if defined(INSTALLS_SHLIB)
 .if !defined(INSTALL_AS_USER)
 	@${ECHO_MSG} "===>   Running ldconfig"
-	${LDCONFIG} -m ${LDCONFIG_RUNLIST}
+	${LDCONFIG} ${LDCONFIG_REBUILDCMD} ${LDCONFIG_RUNLIST}
 .else
 	@${ECHO_MSG} "===>   Running ldconfig (errors are ignored)"
-	-${LDCONFIG} -m ${LDCONFIG_RUNLIST}
+	-${LDCONFIG} ${LDCONFIG_REBUILDCMD} ${LDCONFIG_RUNLIST}
 .endif
 .else
 	@${DO_NADA}
@@ -4142,7 +4152,7 @@
 			dir=$${dir%%:*}; \
 		fi; \
 		${ECHO_MSG} -n "===>   ${PKGNAME} depends on shared library: $$lib"; \
-		if ${LDCONFIG} -r | ${GREP} -vwF -e "${PKGCOMPATDIR}" | ${GREP} -qwE -e "-l$$pattern"; then \
+		if ${LDCONFIG} ${LDCONFIG_LISTCMD} | ${GREP} -vwF -e "${PKGCOMPATDIR}" | ${GREP} -qwE -e "-l$$pattern"; then \
 			${ECHO_MSG} " - found"; \
 			if [ ${_DEPEND_ALWAYS} = 1 ]; then \
 				${ECHO_MSG} "       (but building it anyway)"; \
@@ -4171,7 +4181,7 @@
 					(cd $$dir; ${MAKE} -DINSTALLS_DEPENDS $$target $$depends_args) ; \
 				fi ; \
 				${ECHO_MSG} "===>   Returning to build of ${PKGNAME}"; \
-				if ! ${LDCONFIG} -r | ${GREP} -vwF -e "${PKGCOMPATDIR}" | ${GREP} -qwE -e "-l$$pattern"; then \
+				if ! ${LDCONFIG} ${LDCONFIG_LISTCMD} | ${GREP} -vwF -e "${PKGCOMPATDIR}" | ${GREP} -qwE -e "-l$$pattern"; then \
 					${ECHO_MSG} "Error: shared library \"$$lib\" does not exist"; \
 					${FALSE}; \
 				fi; \
@@ -4603,11 +4613,11 @@
 	@${ECHO_CMD} ${dir} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} | ${SED} -e 's,^,@dirrm ,' >> ${TMPPLIST}
 .endfor
 .if defined(INSTALLS_SHLIB) && !defined(INSTALL_AS_USER)
-	@${ECHO_CMD} "@exec ${LDCONFIG} -m ${LDCONFIG_PLIST}" >> ${TMPPLIST}
-	@${ECHO_CMD} "@unexec ${LDCONFIG} -R" >> ${TMPPLIST}
+	@${ECHO_CMD} "@exec ${LDCONFIG} ${LDCONFIG_LISTCMD} ${LDCONFIG_PLIST}" >> ${TMPPLIST}
+	@${ECHO_CMD} "@unexec ${LDCONFIG} ${LDCONFIG_GBLREBUILDCMD}" >> ${TMPPLIST}
 .elif defined(INSTALLS_SHLIB)
-	@${ECHO_CMD} "@exec ${LDCONFIG} -m ${LDCONFIG_PLIST} || ${TRUE}" >> ${TMPPLIST}
-	@${ECHO_CMD} "@unexec ${LDCONFIG} -R || ${TRUE}" >> ${TMPPLIST}
+	@${ECHO_CMD} "@exec ${LDCONFIG} ${LDCONFIG_LISTCMD} ${LDCONFIG_PLIST} || ${TRUE}" >> ${TMPPLIST}
+	@${ECHO_CMD} "@unexec ${LDCONFIG} ${LDCONFIG_GBLREBUILDCMD} || ${TRUE}" >> ${TMPPLIST}
 .endif
 .if !defined(NO_FILTER_SHLIBS)
 .if (${PORTOBJFORMAT} == "aout")
--- 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?200407291134.i6TBYadf048179>