Date: Thu, 29 Jul 2004 16:27:04 +0400 (MSD) From: Alexander Novitsky <alecn2002@yandex.ru> To: FreeBSD-gnats-submit@FreeBSD.org Cc: alecn2002@yandex.ru Subject: ports/69758: [PORTS ERROR] Invalid check for installed Linux shared libs in bsd.port.mk script Message-ID: <200407291227.i6TCR4jw048928@server.v42of.icc-vvd.ru> Resent-Message-ID: <200407291230.i6TCUPXk025214@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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,^,@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?200407291227.i6TCR4jw048928>