Replace the lib dependency check with a more mechanical check, that
no longer relies on ldconfig, but rather on the path stored inside LIB_DEPENDS. Introduce a lib_resolve_fragment that can be used to resolve the libraries from a given list (e.g., listlibs). To be used in the next patch. Note that this check is currently more or less equivalent to the old check, apart from the fact that: - libs can't trust packages, - lib-depends always resort to non-shared libraries, even on shared architectures, if the shared check doesn't work.
This commit is contained in:
parent
fb319b058a
commit
ea79980b4c
@ -1,6 +1,6 @@
|
||||
#-*- mode: Fundamental; tab-width: 4; -*-
|
||||
# ex:ts=4 sw=4 filetype=make:
|
||||
FULL_REVISION=$$OpenBSD: bsd.port.mk,v 1.494 2001/11/12 14:19:17 espie Exp $$
|
||||
FULL_REVISION=$$OpenBSD: bsd.port.mk,v 1.495 2001/11/12 14:24:06 espie Exp $$
|
||||
# $FreeBSD: bsd.port.mk,v 1.264 1996/12/25 02:27:44 imp Exp $
|
||||
# $NetBSD: bsd.port.mk,v 1.62 1998/04/09 12:47:02 hubertf Exp $
|
||||
#
|
||||
@ -1237,32 +1237,38 @@ _build_depends_fragment=${_fetch_depends_fragment}
|
||||
_run_depends_fragment=${_fetch_depends_fragment}
|
||||
_regress_depends_fragment=${_fetch_depends_fragment}
|
||||
|
||||
.if ${TRUST_PACKAGES:L} == "yes"
|
||||
_lib_depends_fragment=${_fetch_depends_fragment}
|
||||
.else
|
||||
. if defined(NO_SHARED_LIBS)
|
||||
_lib_depends_fragment = \
|
||||
what=$$dep; \
|
||||
IFS=,; bad=false; for d in $$dep; do \
|
||||
d=$${d\#\#*/}; \
|
||||
lib=`echo $$d | sed -e 's|\([^\\]\)[\\\.].*|\1|'`; \
|
||||
tmp=`mktemp /tmp/bpmXXXXXXXXXX`; \
|
||||
if ${LD} -r -o $$tmp ${EXTRA_LIBDIRS:S/^/-L/} -L${LOCALBASE}/lib -L${X11BASE}/lib -l$$lib; then :; else\
|
||||
bad=true; msg="$$msg $$lib missing..."; \
|
||||
fi; \
|
||||
done; $$bad || found=true
|
||||
. else
|
||||
_lib_depends_fragment = \
|
||||
what=$$dep; \
|
||||
IFS=,; bad=false; for d in $$dep; do \
|
||||
d=$${d\#\#*/}; \
|
||||
.if !defined(NO_SHARED_LIBS)
|
||||
_sharedlib_resolve_fragment = \
|
||||
lib=`echo $$d | sed -e 's|\.$$||' -e 's|\([^\\]\)\.|\1\\\\.|g'`; \
|
||||
check=`${LDCONFIG} -r | awk "/:-l$$lib[ .]/"'{ print $$3 }'`; \
|
||||
case "X$$check" in "X") bad=true; msg="$$msg $$lib missing...";; esac; \
|
||||
done; $$bad || found=true
|
||||
. endif
|
||||
check=`eval $$listlibs |grep '^lib.*\.so\.*'| \
|
||||
sed -e 's,^lib,,' -e 's,$$,.,' -e 's,\.so\.,.,' | \
|
||||
grep "^$$lib\."|sed -e 's,\.$$,,'` || true
|
||||
.else
|
||||
_sharedlib_resolve_fragment = :
|
||||
.endif
|
||||
|
||||
_libresolve_fragment = \
|
||||
case "$$d" in \
|
||||
*/*) shprefix="$${d%/*}/"; shdir="${LOCALBASE}/$${d%/*}"; \
|
||||
d=$${d\#\#*/};; \
|
||||
*) shprefix="" shdir="${LOCALBASE}/lib";; \
|
||||
esac; \
|
||||
${_sharedlib_resolve_fragment}; \
|
||||
case "X$$check" in "X") \
|
||||
lib=`echo $$d | sed -e 's|\([^\\]\)[\\\.].*|\1|'`; \
|
||||
check=`eval $$listlibs | grep "^lib$$lib\.a$$"` || true;; \
|
||||
esac
|
||||
|
||||
|
||||
_lib_depends_fragment = \
|
||||
what=$$dep; \
|
||||
IFS=,; bad=false; for d in $$dep; do \
|
||||
listlibs='ls $$shdir 2>/dev/null'; \
|
||||
${_libresolve_fragment}; \
|
||||
case "X$$check" in "X") bad=true; msg="$$msg $$d missing...";; esac; \
|
||||
done; $$bad || found=true
|
||||
|
||||
|
||||
_misc_depends_fragment = :
|
||||
|
||||
depends: lib-depends misc-depends fetch-depends build-depends run-depends\
|
||||
|
Loading…
x
Reference in New Issue
Block a user