ports/69758: [PORTS ERROR] Invalid check for installed Linux shared libs in bsd.port.mk script

Alexander Novitsky alecn2002 at yandex.ru
Thu Jul 29 12:30:26 UTC 2004


>Number:         69758
>Category:       ports
>Synopsis:       [PORTS ERROR] Invalid check for installed Linux shared libs in bsd.port.mk script
>Confidential:   no
>Severity:       serious
>Priority:       medium
>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 VVD
>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 at server.v42of.icc-vvd.ru:/usr/src/sys/i386/compile/ORACLE i386

>Description:
	When try to install port of some Linux software (USE_LINUX=yes) which relays (via LIB_DEPENDS=...) on other 
	already installed Linux port with shared library, bsd.port.mk script uses native FreeBSD' /sbin/ldconfig to 
	check if library installed instead of /compat/linux/sbin/ldconfig

>How-To-Repeat:
	Try to install Linux software port which relays on other already installed Linux shared library which doesn't have
	correspondent native FreeBSD library with the same name.
	bsd.port.mk will not see presence of dependant Linux library and will start it's installation again, 
	and the whole installation 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,^, at 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:



More information about the freebsd-ports-bugs mailing list