for depends, always run checks on fullpkgname vs pkgspec upfront.

exit if the dependency doesn't match.
then do the actual dependency and the normal tests.

stop looking at full pkgnames list, makes no sense, even configure depends
can use the required ,-subpackage if they want.

This allows stuff such as BUILD_DEPENDS = dir>=5.0:configure
to get out early if the tree is not uptodate, instead of first configuring
then getting out (problem noticed by landry@).

tested by landry@ and jasper@
This commit is contained in:
espie 2011-07-12 10:04:00 +00:00
parent e62a4b54b7
commit 904b7b580f

View File

@ -1,6 +1,6 @@
#-*- mode: Makefile; tab-width: 4; -*- #-*- mode: Makefile; tab-width: 4; -*-
# ex:ts=4 sw=4 filetype=make: # ex:ts=4 sw=4 filetype=make:
# $OpenBSD: bsd.port.mk,v 1.1098 2011/07/12 08:08:01 ajacoutot Exp $ # $OpenBSD: bsd.port.mk,v 1.1099 2011/07/12 10:04:00 espie Exp $
# $FreeBSD: bsd.port.mk,v 1.264 1996/12/25 02:27:44 imp 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 $ # $NetBSD: bsd.port.mk,v 1.62 1998/04/09 12:47:02 hubertf Exp $
# #
@ -1647,12 +1647,12 @@ _parse_spec = \
esac; unset IFS; ${_flavor_fragment} esac; unset IFS; ${_flavor_fragment}
_compute_default = \ _compute_default = \
if ! default=`eval $$toset ${MAKE} _print-packagename`; then \ if ! default=`eval $$toset exec ${MAKE} _print-packagename`; then \
echo 1>&2 "Problem with dependency ${_i}"; \ echo 1>&2 "Problem with dependency ${_i}"; \
exit 1; \ exit 1; \
fi fi
_set_pkg2default= pkg=`eval $$toset ${MAKE} _print-pkgspec` _set_pkg2default= pkg=`eval $$toset exec ${MAKE} _print-pkgspec`
_set_stem2default=stem=`echo $$default|${_version2stem}`; \ _set_stem2default=stem=`echo $$default|${_version2stem}`; \
pkg="$$stem$${pkg\#STEM}" pkg="$$stem$${pkg\#STEM}"
@ -1912,20 +1912,26 @@ ${WRKDIR}/.dep-${_i:C,>=,ge-,g:C,<=,le-,g:C,<,lt-,g:C,>,gt-,g:C,\*,ANY,g:C,[|:/=
exit 1;; \ exit 1;; \
esac; \ esac; \
toset="$$toset _SOLVING_DEP=Yes"; \ toset="$$toset _SOLVING_DEP=Yes"; \
${_compute_default}; \
case "X$$pkg" in \ case "X$$pkg" in \
X) \ X) \
if ! pkg=`eval $$toset ${MAKE} _print-pkgspec`; \ if ! ${_set_pkg2default}; \
then \ then \
${ECHO_MSG} "===> Error in evaluating dependency ${_i}"; \ ${ECHO_MSG} "===> Error in evaluating dependency ${_i}"; \
${REPORT_PROBLEM}; \ ${REPORT_PROBLEM}; \
exit 1; \ exit 1; \
fi;; \ fi;; \
XSTEM*) \ XSTEM*) \
if default=`eval $$toset ${MAKE} _print-packagename`; \ ${_set_stem2default};; \
then \
${_set_stem2default}; \
fi;; \
esac; \ esac; \
what=$$pkg; \
if ! ${PKG_INFO} ${PKGDB_LOCK} -q -r "$$pkg" $$default; \
then \
: $${msg:= $$default does not match}; \
${ECHO_MSG} "===> ${FULLPKGNAME${SUBPACKAGE}}${_MASTER} depends on: $$what -$$msg"; \
${REPORT_PROBLEM}; \
exit 1; \
fi; \
for abort in false false true; do \ for abort in false false true; do \
if $$abort; then \ if $$abort; then \
${ECHO_MSG} "Dependency check failed"; \ ${ECHO_MSG} "Dependency check failed"; \
@ -1933,7 +1939,6 @@ ${WRKDIR}/.dep-${_i:C,>=,ge-,g:C,<=,le-,g:C,<,lt-,g:C,>,gt-,g:C,\*,ANY,g:C,[|:/=
exit 1; \ exit 1; \
fi; \ fi; \
found=false; \ found=false; \
what=$$pkg; \
if $$checkinstall; then \ if $$checkinstall; then \
$$early_exit || ${_force_update_fragment}; \ $$early_exit || ${_force_update_fragment}; \
if ${_PKG_QUERY} "$$pkg" -q; then \ if ${_PKG_QUERY} "$$pkg" -q; then \
@ -1953,16 +1958,7 @@ ${WRKDIR}/.dep-${_i:C,>=,ge-,g:C,<=,le-,g:C,<,lt-,g:C,>,gt-,g:C,\*,ANY,g:C,[|:/=
exit 1; \ exit 1; \
fi; \ fi; \
if $$early_exit; then \ if $$early_exit; then \
list=`eval $$toset exec ${MAKE} show=PKGNAMES`; \
if ${PKG_INFO} ${PKGDB_LOCK} -q -r "$$pkg" $$list; \
then \
break; \ break; \
else \
: $${msg:= not found}; \
${ECHO_MSG} "===> ${FULLPKGNAME${SUBPACKAGE}}${_MASTER} depends on: $$what -$$msg"; \
${REPORT_PROBLEM}; \
exit 1; \
fi; \
fi; \ fi; \
done; \ done; \
} }
@ -2066,7 +2062,9 @@ ${WRKINST}/.saved_libs: ${_FAKE_COOKIE}
port-lib-depends-check: ${WRKINST}/.saved_libs port-lib-depends-check: ${WRKINST}/.saved_libs
. for _S in ${MULTI_PACKAGES} . for _S in ${MULTI_PACKAGES}
@-SUBPACKAGE=${_S} ${MAKE} print-plist-with-depends lib_depends_args=all-lib-depends-args| \ @-SUBPACKAGE=${_S} ${MAKE} print-plist-with-depends \
lib_depends_args=all-lib-depends-args \
wantlib_args=fake-wantlib-args| \
${_CHECK_LIB_DEPENDS} -s ${WRKINST}/.saved_libs ${_CHECK_LIB_DEPENDS} -s ${WRKINST}/.saved_libs
. endfor . endfor