- tweak "prepare" stage to give more accurate default/dependency result directly

code should still work with older pkg_info, but you need uptodate pkg_info
for best messages, e.g.,:
===> kdelibs-3.5.10p14 depends on: gettext->=0.10.38 -> gettext-0.18.1p0
===> kdelibs-3.5.10p14 depends on: metaauto-* -> metaauto-1.0
===> kdelibs-3.5.10p14 depends on: autoconf-2.61 -> autoconf-2.61p3
===> kdelibs-3.5.10p14 depends on: gmake-* -> gmake-3.82

- adds target: show-prepare-results that yields the list of installed packages
deduced by prepare

- kill undocumented CLEAN_PLIST_OUTPUT
- remove old internals
- ensure IS_INTERACTIVE and REGRESS_IS_INTERACTIVE are always defined
- fix a bug in FETCH_MANUALLY and BATCH interaction
This commit is contained in:
espie 2011-11-25 13:58:13 +00:00
parent 6443712529
commit 03b76c3a13

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.1143 2011/11/24 19:24:54 espie Exp $ # $OpenBSD: bsd.port.mk,v 1.1144 2011/11/25 13:58:13 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 $
# #
@ -690,8 +690,10 @@ REGRESS_FLAGS ?=
ALL_REGRESS_FLAGS = ${MAKE_FLAGS} ${REGRESS_FLAGS} ALL_REGRESS_FLAGS = ${MAKE_FLAGS} ${REGRESS_FLAGS}
REGRESS_LOGFILE ?= ${WRKDIR}/regress.log REGRESS_LOGFILE ?= ${WRKDIR}/regress.log
REGRESS_LOG ?= | tee ${REGRESS_LOGFILE} REGRESS_LOG ?= | tee ${REGRESS_LOGFILE}
IS_INTERACTIVE ?= No
REGRESS_IS_INTERACTIVE ?= No
.if defined(REGRESS_IS_INTERACTIVE) && ${REGRESS_IS_INTERACTIVE:L} == "x11" .if ${REGRESS_IS_INTERACTIVE:L} == "x11"
REGRESS_FLAGS += DISPLAY=${DISPLAY} XAUTHORITY=${XAUTHORITY} REGRESS_FLAGS += DISPLAY=${DISPLAY} XAUTHORITY=${XAUTHORITY}
XAUTHORITY ?= ${HOME}/.Xauthority XAUTHORITY ?= ${HOME}/.Xauthority
.endif .endif
@ -1197,8 +1199,8 @@ CONFIGURE_SHARED ?= --enable-shared
.endif .endif
FETCH_MANUALLY ?= No FETCH_MANUALLY ?= No
.if ${FETCH_MANUALLY:L} != "no"
MISSING_FILES = MISSING_FILES =
.if ${FETCH_MANUALLY:L} != "no"
. for _F in ${CHECKSUMFILES} . for _F in ${CHECKSUMFILES}
. if !exists(${DISTDIR}/${_F}) . if !exists(${DISTDIR}/${_F})
MISSING_FILES += ${_F} MISSING_FILES += ${_F}
@ -1224,18 +1226,18 @@ MISSING_FILES += ${_F}
################################################################ ################################################################
TRY_BROKEN ?= No TRY_BROKEN ?= No
_IGNORE_REGRESS ?= _IGNORE_REGRESS ?=
.if defined(REGRESS_IS_INTERACTIVE) && defined(BATCH) .if ${REGRESS_IS_INTERACTIVE:L} != "no" && defined(BATCH)
_IGNORE_REGRESS += "has interactive tests" _IGNORE_REGRESS += "has interactive tests"
.elif !defined(REGRESS_IS_INTERACTIVE) && defined(INTERACTIVE) .elif ${REGRESS_IS_INTERACTIVE:L} == "no" && defined(INTERACTIVE)
_IGNORE_REGRESS += "does not have interactive tests" _IGNORE_REGRESS += "does not have interactive tests"
.endif .endif
.if defined(IS_INTERACTIVE) && defined(BATCH) .if ${IS_INTERACTIVE:L} != "no" && defined(BATCH)
IGNORE += "is an interactive port" IGNORE += "is an interactive port"
.elif !(defined(IS_INTERACTIVE)||defined(MISSING_FILES)) && defined(INTERACTIVE) .elif !(${IS_INTERACTIVE:L} != "no" || !empty(MISSING_FILES)) && defined(INTERACTIVE)
IGNORE += "is not an interactive port" IGNORE += "is not an interactive port"
.endif .endif
.if defined(MISSING_FILES) && defined(BATCH) .if !empty(MISSING_FILES) && defined(BATCH)
_EXTRA_IGNORE += "is an interactive port: missing files" _EXTRA_IGNORE += "is an interactive port: missing files"
.endif .endif
@ -1263,7 +1265,8 @@ IGNORE += "-- ${FULLPKGNAME${SUBPACKAGE}:C/-[0-9].*//g} comes with OpenBSD as of
.endif .endif
IGNORE_IS_FATAL ?= "No" IGNORE_IS_FATAL ?= "No"
# XXX even if subpackage is invalid, define this # XXX even if subpackage is invalid, define this, so that errors come out
# from ERRORS and not make internals.
IGNORE${SUBPACKAGE} ?= IGNORE${SUBPACKAGE} ?=
.if (!empty(IGNORE${SUBPACKAGE}) || defined(_EXTRA_IGNORE)) && ${IGNORE_IS_FATAL:L} == "yes" .if (!empty(IGNORE${SUBPACKAGE}) || defined(_EXTRA_IGNORE)) && ${IGNORE_IS_FATAL:L} == "yes"
ERRORS += "Fatal: can't build" ERRORS += "Fatal: can't build"
@ -1296,7 +1299,6 @@ lib_depends_args ?= lib-depends-args
PORT_LD_LIBRARY_PATH = ${LOCALBASE}/lib:${X11BASE}/lib:/usr PORT_LD_LIBRARY_PATH = ${LOCALBASE}/lib:${X11BASE}/lib:/usr
_set_ld_library_path = :
DEPBASE = ${LOCALBASE} DEPBASE = ${LOCALBASE}
DEPDIR = DEPDIR =
@ -1616,15 +1618,6 @@ _check_lib_depends = ${_CHECK_LIB_DEPENDS}
_check_lib_depends =: _check_lib_depends =:
.endif .endif
CLEAN_PLIST_OUTPUT?=No
.if ${CLEAN_PLIST_OUTPUT:L} == "yes"
_plist_header=echo "@+++ new plist"
_plist_footer=echo "@--- end plist"
.else
_plist_header=:
_plist_footer=:
.endif
_CHECK_LIB_DEPENDS = PORTSDIR=${PORTSDIR} ${_PERLSCRIPT}/check-lib-depends _CHECK_LIB_DEPENDS = PORTSDIR=${PORTSDIR} ${_PERLSCRIPT}/check-lib-depends
_CHECK_LIB_DEPENDS += -d ${_PKG_REPO} -B ${WRKINST} _CHECK_LIB_DEPENDS += -d ${_PKG_REPO} -B ${WRKINST}
. if ${ELF_TOOLCHAIN:L} == "no" . if ${ELF_TOOLCHAIN:L} == "no"
@ -1873,12 +1866,26 @@ ${WRKDIR}/.dep-${_i:C,>=,ge-,g:C,<=,le-,g:C,<,lt-,g:C,>,gt-,g:C,\*,ANY,g:C,[|:/=
second_pass=true;; \ second_pass=true;; \
esac; \ esac; \
$$try_install && ${_force_update_fragment}; \ $$try_install && ${_force_update_fragment}; \
if ${PKG_INFO} -q -e "$$pkg" -r "$$pkg" $$default; then \ if `${PKG_INFO} -e "$$pkg" -r "$$pkg" $$default >$@t`; then \
${ECHO_MSG} "$$h found"; \ sed -ne '/^inst:/s///p' <$@t| \
{ read v || v=found; \
echo "$$v" >$@; \
${ECHO_MSG} "$$h> $$v"; } ;\
rm $@t; \
break; \ break; \
else \ else \
${ECHO_MSG} "$$h not found"; \ r=$$?; \
${ECHO_MSG} " (or default $$default does not match)"; \ rm $@t; \
case $$r in \
1|3) \
${ECHO_MSG} "$$h not found";; \
esac; \
case $$r in \
2|3) \
${ECHO_MSG} "$$h default $$default does not match"; \
${REPORT_PROBLEM}; \
exit 1;; \
esac; \
fi; \ fi; \
else \ else \
if ! ${PKG_INFO} -q -r "$$pkg" $$default; \ if ! ${PKG_INFO} -q -r "$$pkg" $$default; \
@ -1889,12 +1896,6 @@ ${WRKDIR}/.dep-${_i:C,>=,ge-,g:C,<=,le-,g:C,<,lt-,g:C,>,gt-,g:C,\*,ANY,g:C,[|:/=
fi; \ fi; \
fi; \ fi; \
if $$second_pass; then \ if $$second_pass; then \
if ! ${PKG_INFO} -q -r "$$pkg" $$default; then \
${ECHO_MSG} " - default $$default does not match"; \
fi; \
if ! ${PKG_INFO} -q -e "$$pkg"; then \
${ECHO_MSG} " - not found in installed packages"; \
fi; \
${ECHO_MSG} "Dependency check failed"; \ ${ECHO_MSG} "Dependency check failed"; \
${REPORT_PROBLEM}; \ ${REPORT_PROBLEM}; \
exit 1; \ exit 1; \
@ -1915,6 +1916,9 @@ ${WRKDIR}/.dep-${_i:C,>=,ge-,g:C,<=,le-,g:C,<,lt-,g:C,>,gt-,g:C,\*,ANY,g:C,[|:/=
. endif . endif
.endfor .endfor
show-prepare-results: prepare
@sort -u ${_DEPBUILD_COOKIES} ${_DEPBUILDLIB_COOKIES}
_internal-build-depends: ${_DEPBUILD_COOKIES} _internal-build-depends: ${_DEPBUILD_COOKIES}
_internal-run-depends: ${_DEPRUN_COOKIES} _internal-run-depends: ${_DEPRUN_COOKIES}
_internal-lib-depends: ${_DEPBUILDLIB_COOKIES} _internal-lib-depends: ${_DEPBUILDLIB_COOKIES}
@ -2252,7 +2256,6 @@ ${_EXTRACT_COOKIE}: ${_WRKDIR_COOKIE} ${_SYSTRACE_COOKIE}
do-extract: do-extract:
# What EXTRACT normally does: # What EXTRACT normally does:
@PATH=${PORTPATH}; set -e; cd ${WRKDIR}; \ @PATH=${PORTPATH}; set -e; cd ${WRKDIR}; \
${_set_ld_library_path}; \
for archive in ${EXTRACT_ONLY}; do \ for archive in ${EXTRACT_ONLY}; do \
case $$archive in \ case $$archive in \
${EXTRACT_CASES} \ ${EXTRACT_CASES} \
@ -2452,7 +2455,7 @@ ${_REGRESS_COOKIE}: ${_BUILD_COOKIE}
.if ${NO_REGRESS:L} == "no" .if ${NO_REGRESS:L} == "no"
@${ECHO_MSG} "===> Regression check for ${FULLPKGNAME}${_MASTER}" @${ECHO_MSG} "===> Regression check for ${FULLPKGNAME}${_MASTER}"
# When interactive tests need X11 # When interactive tests need X11
. if defined(REGRESS_IS_INTERACTIVE) && ${REGRESS_IS_INTERACTIVE:L} == "x11" . if ${REGRESS_IS_INTERACTIVE:L} == "x11"
. if !defined(DISPLAY) || !exists(${XAUTHORITY}) . if !defined(DISPLAY) || !exists(${XAUTHORITY})
@echo 1>&2 "The regression tests require a running instance of X." @echo 1>&2 "The regression tests require a running instance of X."
@echo 1>&2 "You will also need to set the environment variable DISPLAY" @echo 1>&2 "You will also need to set the environment variable DISPLAY"
@ -2545,52 +2548,46 @@ ${_FAKE_COOKIE}: ${_BUILD_COOKIE}
@${SUDO} ${_MAKE_COOKIE} $@ @${SUDO} ${_MAKE_COOKIE} $@
print-plist: print-plist:
@${_plist_header}; ${_PKG_CREATE} -n -q ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}; ${_plist_footer} @${_PKG_CREATE} -n -q ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}
print-plist-with-depends: print-plist-with-depends:
@${_plist_header}; \ @if a=`SUBPACKAGE=${SUBPACKAGE} PKGPATH=${PKGPATH} ${MAKE} print-package-args`; \
if a=`SUBPACKAGE=${SUBPACKAGE} PKGPATH=${PKGPATH} ${MAKE} print-package-args`; \
then \ then \
${_PKG_CREATE} -n -q $$a ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}; \ ${_PKG_CREATE} -n -q $$a ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}; \
else \ else \
exit 1; \ exit 1; \
fi ; \ fi
${_plist_footer}
print-plist-libs-with-depends: print-plist-libs-with-depends:
@${_plist_header}; \ @if a=`SUBPACKAGE=${SUBPACKAGE} PKGPATH=${PKGPATH} ${MAKE} print-package-args`; \
if a=`SUBPACKAGE=${SUBPACKAGE} PKGPATH=${PKGPATH} ${MAKE} print-package-args`; \
then \ then \
${_PKG_CREATE} -DLIBS_ONLY -n -q $$a ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}; \ ${_PKG_CREATE} -DLIBS_ONLY -n -q $$a ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}; \
else \ else \
exit 1; \ exit 1; \
fi ; \ fi
${_plist_footer}
print-plist-all: print-plist-all:
.for _S in ${MULTI_PACKAGES} .for _S in ${MULTI_PACKAGES}
@${ECHO_MSG} "===> ${FULLPKGNAME${_S}}" @${ECHO_MSG} "===> ${FULLPKGNAME${_S}}"
@${_plist_header}; ${_PKG_CREATE} -n -q ${PKG_ARGS${_S}} ${_PACKAGE_COOKIE${_S}};${_plist_footer} @${_PKG_CREATE} -n -q ${PKG_ARGS${_S}} ${_PACKAGE_COOKIE${_S}}
.endfor .endfor
print-plist-all-with-depends: print-plist-all-with-depends:
.for _S in ${MULTI_PACKAGES} .for _S in ${MULTI_PACKAGES}
@${ECHO_MSG} "===> ${FULLPKGNAME${_S}}" @${ECHO_MSG} "===> ${FULLPKGNAME${_S}}"
@${_plist_header}; \ @if a=`SUBPACKAGE=${_S} PKGPATH=${PKGPATH} ${MAKE} print-package-args`; \
if a=`SUBPACKAGE=${_S} PKGPATH=${PKGPATH} ${MAKE} print-package-args`; \
then \ then \
${_PKG_CREATE} -n -q $$a ${PKG_ARGS${_S}} ${_PACKAGE_COOKIE${_S}}; \ ${_PKG_CREATE} -n -q $$a ${PKG_ARGS${_S}} ${_PACKAGE_COOKIE${_S}}; \
else \ else \
exit 1; \ exit 1; \
fi; \ fi
${_plist_footer}
.endfor .endfor
print-plist-contents: print-plist-contents:
@${_plist_header}; ${_PKG_CREATE} -n -Q ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}};${_plist_footer} @${_PKG_CREATE} -n -Q ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}
print-plist-libs: print-plist-libs:
@${_plist_header}; ${_PKG_CREATE} -DLIBS_ONLY -n -Q ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}|${_grab_libs_from_plist}; ${_plist_footer} @${_PKG_CREATE} -DLIBS_ONLY -n -Q ${PKG_ARGS${SUBPACKAGE}} ${_PACKAGE_COOKIE${SUBPACKAGE}}|${_grab_libs_from_plist}
_internal-package-only: ${_PACKAGE_COOKIES} _internal-package-only: ${_PACKAGE_COOKIES}
@ -3254,9 +3251,6 @@ clean-depends:
distclean: distclean:
@${_MAKE} clean=dist @${_MAKE} clean=dist
delete-package:
@${_MAKE} clean=package
reinstall: reinstall:
@${_MAKE} clean='install force' @${_MAKE} clean='install force'
@cd ${.CURDIR} && _DEPENDS_TARGET=reinstall PKGPATH=${PKGPATH} exec ${MAKE} install @cd ${.CURDIR} && _DEPENDS_TARGET=reinstall PKGPATH=${PKGPATH} exec ${MAKE} install
@ -3372,7 +3366,7 @@ _all_phony = ${_recursive_depends_targets} \
lock unlock \ lock unlock \
run-depends-args lib-depends-args all-lib-depends-args wantlib-args \ run-depends-args lib-depends-args all-lib-depends-args wantlib-args \
port-wantlib-args fake-wantlib-args no-wantlib-args \ port-wantlib-args fake-wantlib-args no-wantlib-args \
_recurse-show-run-depends show-run-depends _recurse-show-run-depends show-run-depends show-prepare-results
.if defined(_DEBUG_TARGETS) .if defined(_DEBUG_TARGETS)
. for _t in ${_all_phony} . for _t in ${_all_phony}