diff --git a/infrastructure/mk/bsd.port.mk b/infrastructure/mk/bsd.port.mk
index 19e836fe425..935c9e1778f 100644
--- a/infrastructure/mk/bsd.port.mk
+++ b/infrastructure/mk/bsd.port.mk
@@ -1,6 +1,6 @@
#-*- mode: Makefile; tab-width: 4; -*-
# ex:ts=4 sw=4 filetype=make:
-# $OpenBSD: bsd.port.mk,v 1.566 2003/07/30 10:40:43 espie Exp $
+# $OpenBSD: bsd.port.mk,v 1.567 2003/07/30 19:31:31 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 $
#
@@ -44,20 +44,7 @@ ERRORS+= "Fatal: Use 'env SUBPACKAGE=${SUBPACKAGE} ${MAKE}' instead."
# DEPENDS_TARGET - The target to execute when a port is calling a
# dependency (default: "install").
#
-# readme - Create a README.html file describing the category or package
-# (somewhat broken due to NEW_DEPENDS)
-
-# Somewhat obsolete targets:
-# list-distfiles- list the distribution and patch files used by a port.
-# Typical use is (from the top level of the ports tree)
-# make ECHO_MSG=: list-distfiles | tee some-file
-# (rely on mirror-maker instead)
-# print-depends - print all dependencies for the given package
-# (for new dependencies, use
-# build-depends-list/run-depends-list instead)
-#
-#
# Default sequence for "all" is: fetch checksum extract patch configure build
#
# Please read the comments in the targets section below, you
@@ -694,8 +681,15 @@ ${WRKPKG}/PLIST${SUBPACKAGE}: ${PLIST} ${WRKPKG}/depends${SUBPACKAGE}
.endif
${WRKPKG}/depends${SUBPACKAGE}:
- @touch $@
- @self=${FULLPKGNAME${SUBPACKAGE}} _depends_result=$@ exec ${MAKE} _solve-package-depends
+ @mkdir -p ${WRKPKG}
+ @>$@
+.if (defined(RUN_DEPENDS) && !empty(RUN_DEPENDS)) || (!defined(NO_SHARED_LIBS) && defined(LIB_DEPENDS) && !empty(LIB_DEPENDS))
+ @: $${_DEPENDS_FILE:=`mktemp /tmp/depends.XXXXXXXXXX`}; \
+ export _DEPENDS_FILE; \
+ echo "|${FULLPKGNAME${SUBPACKAGE}}|" >>$${_DEPENDS_FILE}; \
+ self=${FULLPKGNAME${SUBPACKAGE}} _depends_result=$@ ${MAKE} _recurse-solve-package-depends; \
+ rm -f $${_DEPENDS_FILE}
+.endif
MTREE_FILE?=
MTREE_FILE+=${PORTSDIR}/infrastructure/db/fake.mtree
@@ -713,7 +707,6 @@ ${WRKPKG}/mtree.spec: ${MTREE_FILE}
PKG_TMPDIR?= /var/tmp
PKG_CMD?= /usr/sbin/pkg_create
PKG_DELETE?= /usr/sbin/pkg_delete
-_SORT_DEPENDS?=tsort|tail -r
# Fill out package command, and package dependencies
_PKG_PREREQ= ${WRKPKG}/PLIST${SUBPACKAGE} ${WRKPKG}/DESCR${SUBPACKAGE} ${WRKPKG}/COMMENT${SUBPACKAGE}
@@ -771,9 +764,6 @@ SH?= /bin/sh
# Used to print all the '===>' style prompts - override this to turn them off.
ECHO_MSG?= echo
-# XXX
-_DEPEND_ECHO?= echo
-
# basic master sites configuration
.if exists(${PORTSDIR}/infrastructure/db/network.conf)
@@ -847,7 +837,7 @@ _EVERYTHING+=${PATCHFILES}
ALLFILES+= ${_PATCHFILES}
.endif
-.if make(makesum) || make(addsum) || make(list-distfiles) || defined(__FETCH_ALL)
+.if make(makesum) || make(addsum) || defined(__FETCH_ALL)
. if defined(SUPDISTFILES)
_EVERYTHING+= ${SUPDISTFILES}
ALLFILES+= ${SUPDISTFILES:C/:[0-9]$//}
@@ -1159,8 +1149,13 @@ depends: lib-depends build-depends run-depends regress-depends
# and the rules for the actual dependencies
+_FULL_PACKAGE_NAME?=No
_print-packagename:
+.if ${_FULL_PACKAGE_NAME:L} == "yes"
+ @echo '${PKGPATH}/${FULLPKGNAME${SUBPACKAGE}}'
+.else
@echo ${FULLPKGNAME${SUBPACKAGE}}
+.endif
.for _DEP in build run lib regress
_DEP${_DEP}_COOKIES=
@@ -1202,7 +1197,7 @@ ${WRKDIR}/.${_DEP}${_i:C,[|:./<=>*],-,g}: ${_WRKDIR_COOKIE}
fi;; \
esac; \
${ECHO_MSG} "===> Verifying $$target for $$what in $$dir"; \
- if eval $$toset ${MAKE} ${_DEPEND_THRU} $$target; then \
+ if eval $$toset ${MAKE} $$target; then \
${ECHO_MSG} "===> Returning to build of ${FULLPKGNAME${SUBPACKAGE}}${_MASTER}"; \
else \
exit 1; \
@@ -1271,9 +1266,10 @@ uninstall deinstall fake package lib-depends-check manpages-check:
# going to be tweaked as a result of running lib-depends-check.
#
lib-depends-check: ${_LIBLIST} ${_BUILDLIBLIST}
- @LIB_DEPENDS="`${MAKE} _recurse-lib-depends`" PKG_DBDIR='${PKG_DBDIR}' \
+ @_DEPENDS_FILE=`mktemp /tmp/depends.XXXXXXXXX`; export _DEPENDS_FILE; LIB_DEPENDS="`${MAKE} _recurse-lib-depends-check`" PKG_DBDIR='${PKG_DBDIR}' \
perl ${PORTSDIR}/infrastructure/install/check-libs \
- ${_LIBLIST} ${_BUILDLIBLIST}
+ ${_LIBLIST} ${_BUILDLIBLIST}; \
+ rm -f ${_DEPENDS_FILE}
manpages-check: ${_FAKE_COOKIE}
@cd ${WRKINST}${TRUEPREFIX}/man && \
@@ -1805,22 +1801,6 @@ ${_F}:
. endif
.endfor
-# list the distribution and patch files used by a port. Typical
-# use is make ECHO_MSG=: list-distfiles | tee some-file
-#
-list-distfiles:
- @echo "${FULLPKGNAME}"
- @for file in ${ALLFILES}; do \
- if [ "$$file" != "${EXTRACT_SUFX}" ]; then \
- if [ -z "${DIST_SUBDIR}" ]; then \
- printf "\t$$file\n"; \
- else \
- printf "\t${DIST_SUBDIR}/$$file\n"; \
- fi \
- fi \
- done
- @echo ""
-
# Some support rules for do-package
package-links:
@@ -1842,103 +1822,67 @@ delete-package-links:
@rm -f ${${_l}_PACKAGES}/${FULLPKGNAME${SUBPACKAGE}}${PKG_SUFX}
.endfor
-delete-package:
- @cd ${.CURDIR} && exec ${MAKE} clean=package
-
-# Checkpatch
-#
-# Special target to verify patches
-
-checkpatch:
- @cd ${.CURDIR} && exec ${MAKE} PATCH_CHECK_ONLY=Yes patch
-
-# Reinstall
-#
-# Special target to re-run install
-
-reinstall:
- @cd ${.CURDIR} && exec ${MAKE} clean=install
- @cd ${.CURDIR} && DEPENDS_TARGET=${DEPENDS_TARGET} exec ${MAKE} install
-
-# Force rebuild of a package
-repackage:
- @cd ${.CURDIR} && exec ${MAKE} clean=packages
- @cd ${.CURDIR} && exec ${MAKE} package
-
-# Rebuild
-#
-# Special target to re-run build
-rebuild:
- @rm -f ${_BUILD_COOKIE}
- @cd ${.CURDIR} && exec ${MAKE} build
-
-# Deinstall
-#
-# Special target to remove installation
-
-uninstall deinstall:
- @${ECHO_MSG} "===> Deinstalling for ${FULLPKGNAME${SUBPACKAGE}}"
- @${SUDO} ${PKG_DELETE} -f ${FULLPKGNAME${SUBPACKAGE}}
-
-
-################################################################
-# Some more targets supplied for users' convenience
-################################################################
-
# Cleaning up
+_CLEANDEPENDS?=Yes
+
clean:
-.if ${clean:L:Mdepends}
- @cd ${.CURDIR} && exec ${MAKE} clean-depends
-.endif
+.if ${clean:L:Mdepends} && ${_CLEANDEPENDS:L} == "yes"
+ @unset FLAVOR SUBPACKAGE || true; \
+ ${MAKE} all-dir-depends|tsort -r|while read dir; do \
+ ${_flavor_fragment}; \
+ eval $$toset ${MAKE} _CLEANDEPENDS=No clean; \
+ done
+.else
@${ECHO_MSG} "===> Cleaning for ${FULLPKGNAME${SUBPACKAGE}}"
-.if ${clean:L:Mfake}
+. if ${clean:L:Mfake}
@if cd ${WRKINST} 2>/dev/null; then ${SUDO} rm -rf ${WRKINST}; fi
-.endif
-.if ${clean:L:Mwork}
-. if ${clean:L:Mflavors}
+. endif
+. if ${clean:L:Mwork}
+. if ${clean:L:Mflavors}
@for i in ${.CURDIR}/w-*; do \
if [ -L $$i ]; then ${SUDO} rm -rf `readlink $$i`; fi; \
${SUDO} rm -rf $$i; \
done
-. else
+. else
@if [ -L ${WRKDIR} ]; then rm -rf `readlink ${WRKDIR}`; fi
@rm -rf ${WRKDIR}
+. endif
. endif
-.endif
-.if ${clean:L:Mdist}
+. if ${clean:L:Mdist}
@${ECHO_MSG} "===> Dist cleaning for ${FULLPKGNAME${SUBPACKAGE}}"
@if cd ${FULLDISTDIR} 2>/dev/null; then \
if [ "${_DISTFILES}" -o "${_PATCHFILES}" ]; then \
rm -f ${_DISTFILES} ${_PATCHFILES}; \
fi \
fi
-. if defined(DIST_SUBDIR) && !empty(DIST_SUBDIR)
+. if defined(DIST_SUBDIR) && !empty(DIST_SUBDIR)
-@rmdir ${FULLDISTDIR}
+. endif
. endif
-.endif
-.if ${clean:L:Minstall}
-. if ${clean:L:Msub}
-. for _s in ${MULTI_PACKAGES}
+. if ${clean:L:Minstall}
+. if ${clean:L:Msub}
+. for _s in ${MULTI_PACKAGES}
-${SUDO} ${PKG_DELETE} ${clean:M-f} ${FULLPKGNAME${_s}}
-. endfor
-. else
+. endfor
+. else
-${SUDO} ${PKG_DELETE} ${clean:M-f} ${FULLPKGNAME${SUBPACKAGE}}
+. endif
. endif
-.endif
-.if ${clean:L:Mpackages} || ${clean:L:Mpackage} && ${clean:L:Msub}
+. if ${clean:L:Mpackages} || ${clean:L:Mpackage} && ${clean:L:Msub}
rm -f ${_PACKAGE_COOKIES}
-. if defined(MULTI_PACKAGES)
-. for _s in ${MULTI_PACKAGES}
+. if defined(MULTI_PACKAGES)
+. for _s in ${MULTI_PACKAGES}
@cd ${.CURDIR} && SUBPACKAGE='${_s}' exec ${MAKE} delete-package-links
-. endfor
-. endif
-.elif ${clean:L:Mpackage}
+. endfor
+. endif
+. elif ${clean:L:Mpackage}
@cd ${.CURDIR} && exec ${MAKE} delete-package-links
rm -f ${PKGFILE${SUBPACKAGE}}
-.endif
-.if ${clean:L:Mbulk}
+. endif
+. if ${clean:L:Mbulk}
rm -f ${_BULK_COOKIE}
+. endif
.endif
distclean:
@@ -1962,7 +1906,7 @@ plist update-plist: fake ${_DEPrun_COOKIES}
@DESTDIR=${WRKINST} PREFIX=${WRKINST}${PREFIX} LDCONFIG="${LDCONFIG}" \
MTREE_FILE=${WRKPKG}/mtree.spec \
INSTALL_PRE_COOKIE=${_INSTALL_PRE_COOKIE} \
- DEPS="`${MAKE} package-depends|tsort`" \
+ DEPS="`${MAKE} full-run-depends`" \
PKGREPOSITORY=${PKGREPOSITORY} \
PLIST=${PLIST} \
PFRAG=${PKGDIR}/PFRAG \
@@ -1992,6 +1936,13 @@ _ALLFILES=${ALLFILES:S/^/${DIST_SUBDIR}\//}
_ALLFILES=${ALLFILES}
.endif
+_FMN=${PKGPATH}/${FULLPKGNAME}
+.if defined(MULTI_PACKAGES)
+. for _S in ${MULTI_PACKAGES}
+_FMN+= ${PKGPATH}/${FULLPKGNAME${_S}}
+. endfor
+.endif
+
fetch-makefile:
.if !defined(COMES_WITH)
@echo -n "all"
@@ -2001,18 +1952,18 @@ fetch-makefile:
. if ${PERMIT_DISTFILES_CDROM:L} == "yes"
@echo -n " cdrom"
. endif
- @echo ":: ${PKGPATH}/${FULLPKGNAME}"
- @cd ${.CURDIR} && exec ${MAKE} __FETCH_ALL=Yes __ARCH_OK=Yes NO_IGNORE=Yes _fetch-makefile-helper
+ @echo ":: ${_FMN}"
+# write generic package dependencies
+ @echo ".PHONY: ${_FMN}"
+. if ${RECURSIVE_FETCH_LIST:L} == "yes"
+ @echo "${_FMN}: ${_ALLFILES} "`_FULL_PACKAGE_NAME=Yes ${MAKE} full-all-depends`
+. else
+ @echo "${_FMN}: ${_ALLFILES}"
+. endif
+ @exec ${MAKE} __FETCH_ALL=Yes __ARCH_OK=Yes NO_IGNORE=Yes _fetch-makefile
.endif
-_fetch-makefile-helper:
-# write generic package dependencies
- @name='${PKGPATH}/${FULLPKGNAME}'; \
- echo ".PHONY: $${name}"; \
- case '${RECURSIVE_FETCH_LIST:L}' in yes) \
- echo "$${name}:: "`${MAKE} depends-list package-depends FULL_PACKAGE_NAME=Yes |${_SORT_DEPENDS}`;; \
- esac; \
- echo "$${name}:: ${_ALLFILES}"
+_fetch-makefile:
.if !empty(ALLFILES)
. for _F in ${_ALLFILES}
@echo '${_F}: $$F'
@@ -2052,21 +2003,6 @@ _fetch-makefile-helper:
@echo
-# The README.html target needs full information (this is passed via
-# depends-list and package-depends)
-FULL_PACKAGE_NAME?=No
-
-# Make variables to pass along on recursive builds
-_DEPEND_THRU=FULL_PACKAGE_NAME=${FULL_PACKAGE_NAME}
-
-# XXX
-package-name:
-. if (${FULL_PACKAGE_NAME:L} == "yes")
- @${_DEPEND_ECHO} '${PKGPATH}/${FULLPKGNAME${SUBPACKAGE}}'
-. else
- @${_DEPEND_ECHO} '${FULLPKGNAME${SUBPACKAGE}}'
-. endif
-
# Internal variables, used by dependencies targets
# Only keep pkg:dir spec
.if defined(LIB_DEPENDS)
@@ -2096,26 +2032,6 @@ _BUILD_DEP=
_LIB_DEP2= ${LIB_DEPENDS}
-_clean-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP) || !empty(_RUN_DEP)
- @unset FLAVOR SUBPACKAGE || true; \
- for dir in ${_ALWAYS_DEP} ${_RUN_DEP} ${_BUILD_DEP}; do \
- if fgrep -q "|$$dir|" $${_DEPENDS_FILE}; then :; else \
- echo "|$$dir|" >>$${_DEPENDS_FILE}; \
- ${_flavor_fragment}; \
- eval $$toset ${MAKE} CLEANDEPENDS=No ${_DEPEND_THRU} clean _clean-depends; \
- fi; \
- done
-.endif
-
-clean-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP) || !empty(_RUN_DEP)
- @: $${_DEPENDS_FILE:=`mktemp /tmp/depends.XXXXXXXXXX`}; \
- export _DEPENDS_FILE; \
- ${MAKE} _clean-depends; \
- rm -f $${_DEPENDS_FILE}
-.endif
-
# This target generates an index entry suitable for aggregation into
# a large index. Format is:
#
@@ -2124,8 +2040,13 @@ clean-depends:
# for-arch|package-cdrom|package-ftp|distfiles-cdrom|distfiles-ftp
#
describe:
-.if !defined(PACKAGING) && defined(MULTI_PACKAGES)
+.if defined(MULTI_PACKAGES) && !defined(PACKAGING)
@cd ${.CURDIR} && SUBPACKAGE='${SUBPACKAGE}' FLAVOR='${FLAVOR}' PACKAGING='${SUBPACKAGE}' exec ${MAKE} describe
+. if empty(SUBPACKAGE)
+. for _sub in ${MULTI_PACKAGES}
+ @cd ${.CURDIR} && SUBPACKAGE='${_sub}' FLAVOR='${FLAVOR}' PACKAGING='${_sub}' exec ${MAKE} describe
+. endfor
+. endif
.else
@echo -n "${FULLPKGNAME${SUBPACKAGE}}|${FULLPKGPATH}|"
. if ${PREFIX} == ${LOCALBASE}
@@ -2178,179 +2099,79 @@ describe:
@echo "n"
. endif
. endif
-. if defined(MULTI_PACKAGES) && empty(SUBPACKAGE)
+.endif
+
+README_NAME?= ${TEMPLATES}/README.port
+
+readme readmes:
+.if defined(MULTI_PACKAGES) && !defined(PACKAGING)
+ @cd ${.CURDIR} && SUBPACKAGE='${SUBPACKAGE}' FLAVOR='${FLAVOR}' PACKAGING='${SUBPACKAGE}' exec ${MAKE} readme
+. if empty(SUBPACKAGE)
. for _sub in ${MULTI_PACKAGES}
- @cd ${.CURDIR} && SUBPACKAGE='${_sub}' FLAVOR='${FLAVOR}' PACKAGING='${_sub}' exec ${MAKE} describe
+ @cd ${.CURDIR} && SUBPACKAGE='${_sub}' FLAVOR='${FLAVOR}' PACKAGING='${_sub}' exec ${MAKE} readme
. endfor
. endif
+.else
+ @rm -f ${FULLPKGNAME${SUBPACKAGE}}.html
+ @cd ${.CURDIR} && exec ${MAKE} README_NAME=${README_NAME} ${FULLPKGNAME${SUBPACKAGE}}.html
.endif
-README.html:
+HTMLIFY= sed -e 's/&/\&/g' -e 's/>/\>/g' -e 's/\</g'
+
+${FULLPKGNAME${SUBPACKAGE}}.html:
+ @echo ${_COMMENT} >$@.tmp-comment
@echo ${FULLPKGNAME${SUBPACKAGE}} | ${HTMLIFY} > $@.tmp3
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP)
- @cd ${.CURDIR} && ${MAKE} depends-list FULL_PACKAGE_NAME=Yes | ${_SORT_DEPENDS}>$@.tmp1
-.endif
-.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
- @cd ${.CURDIR} && ${MAKE} package-depends FULL_PACKAGE_NAME=Yes | ${_SORT_DEPENDS} >$@.tmp2
-.endif
.if defined(HOMEPAGE)
@echo 'See ${HOMEPAGE} for details.' >$@.tmp4
.else
@echo "" >$@.tmp4
.endif
-.for I in 1 2
- @if [ -s $@.tmp$I ]; then \
- { cat $@.tmp$I | while read n; do \
+.for _I in build run
+. if !empty(_ALWAYS_DEP) || !empty(_${_I:U}_DEP)
+ @cd ${.CURDIR} && ${MAKE} full-${_I}-depends _FULL_PACKAGE_NAME=Yes| \
+ while read n; do \
j=`dirname $$n|${HTMLIFY}`; k=`basename $$n|${HTMLIFY}`; \
- echo "
$$k"; \
- done; } >$@.tmp$Ia; \
- else \
- echo "(none)" > $@.tmp$Ia; \
- fi
+ echo "$$k"; \
+ done >$@.tmp-${_I}
+. else
+ @echo "none" >$@.tmp${_I}
+. endif
.endfor
@cat ${README_NAME} | \
sed -e 's|%%PORT%%|'"`echo ${PKGPATH} | ${HTMLIFY}`"'|g' \
-e '/%%PKG%%/r$@.tmp3' -e '//d' \
- -e '/%%COMMENT%%/r${PKGDIR}/COMMENT' -e '//d' \
+ -e '/%%COMMENT%%/r$@.tmp-comment' -e '//d' \
-e '/%%DESCR%%/r${PKGDIR}/DESCR' -e '//d' \
-e '/%%HOMEPAGE%%/r$@.tmp4' -e '//d' \
- -e '/%%BUILD_DEPENDS%%/r$@.tmp1a' -e '//d' \
- -e '/%%RUN_DEPENDS%%/r$@.tmp2a' -e '//d' \
+ -e '/%%BUILD_DEPENDS%%/r$@.tmp-build' -e '//d' \
+ -e '/%%RUN_DEPENDS%%/r$@.tmp-run' -e '//d' \
>> $@
@rm -f $@.tmp*
-print-depends-list:
+
+print-build-depends:
.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP)
@echo -n 'This port requires package(s) "'
- @unset FLAVOR SUBPACKAGE || true; \
- echo -n `cd ${.CURDIR} && ${MAKE} ${_DEPEND_THRU} depends-list | ${_SORT_DEPENDS}`
+ @${MAKE} full-build-depends|tr '\012' '\040'|sed -e 's, $$,,'
@echo '" to build.'
.endif
-print-package-depends:
+print-run-depends:
.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
@echo -n 'This port requires package(s) "'
- @unset FLAVOR SUBPACKAGE || true; \
- echo -n `cd ${.CURDIR} && ${MAKE} ${_DEPEND_THRU} package-depends | ${_SORT_DEPENDS}`
+ @${MAKE} full-run-depends|tr '\012' '\040'|sed -e 's, $$,,'
@echo '" to run.'
.endif
-
-recurse-build-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP) || !empty(_RUN_DEP)
- @pname=`cd ${.CURDIR} && ${MAKE} _DEPEND_ECHO='echo -n' package-name ${_DEPEND_THRU}`; \
- unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_BUILD_DEP} ${_RUN_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- ${_flavor_fragment}; \
- if ! eval $$toset ${MAKE} _DEPEND_ECHO=\"echo $$pname\" package-name recurse-build-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
- exit 1; \
- fi; \
- done
-.else
- @pname=`cd ${.CURDIR} && ${MAKE} _DEPEND_ECHO='echo -n' package-name`; echo $$pname $$pname
-.endif
-
-depends-list:
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP)
+.for _i in build all run
+full-${_i}-depends:
@unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_BUILD_DEP} \
- | tr '\040' '\012' | sort -u`; do \
+ ${MAKE} ${_i}-dir-depends|tsort -r|sed -e '$$d'|while read dir; do \
${_flavor_fragment}; \
- if ! eval $$toset ${MAKE} recurse-build-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
- exit 1; \
- fi; \
+ eval $$toset ${MAKE} _print-packagename ; \
done
-.endif
-
-# Build (recursively) a list of package dependencies suitable for tsort
-recurse-package-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
- @pname=`cd ${.CURDIR} && ${MAKE} _DEPEND_ECHO='echo -n' package-name ${_DEPEND_THRU}`; \
- unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_RUN_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- ${_flavor_fragment}; \
- if ! eval $$toset ${MAKE} _DEPEND_ECHO=\"echo $$pname\" package-name recurse-package-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"." ; \
- exit 1; \
- fi; \
- done
-.else
- @pname=`cd ${.CURDIR} && ${MAKE} _DEPEND_ECHO='echo -n' package-name`; echo $$pname $$pname
-.endif
-
-# Print list of all libraries we're allowed to depend upon.
-_recurse-lib-depends:
-.for _i in ${LIB_DEPENDS}
- @unset FLAVOR SUBPACKAGE || true; \
- echo '${_i}' | { \
- IFS=:; read dep pkg dir target; \
- ${_flavor_fragment}; \
- IFS=,; for j in $$dep; do echo $$j; done; \
- eval $$toset ${MAKE} ${_DEPEND_THRU} _recurse-lib-depends; \
- }
.endfor
-.for _i in ${RUN_DEPENDS}
- @unset FLAVOR SUBPACKAGE || true; \
- echo '${_i}' | { \
- IFS=:; read dep pkg dir target; \
- ${_flavor_fragment}; \
- eval $$toset ${MAKE} ${_DEPEND_THRU} _recurse-lib-depends; \
- }
-.endfor
-
-package-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
- @unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_RUN_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- ${_flavor_fragment}; \
- if ! eval $$toset ${MAKE} recurse-package-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"." ; \
- exit 1; \
- fi; \
- done
-.endif
-
-# recursively build a list of dirs to pass to tsort...
-_recurse-dir-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP) || !empty(_RUN_DEP)
- @unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_BUILD_DEP} ${_RUN_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- echo "$$self $$dir"; \
- self2="$$dir"; \
- ${_flavor_fragment}; \
- toset="$$toset self=\"$$self2\""; \
- if ! eval $$toset ${MAKE} _recurse-dir-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
- exit 1; \
- fi; \
- done
-.endif
-
-# recursively build a list of dirs to pass to tsort...
-dir-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP)
- @unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_BUILD_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- echo "${FULLPKGPATH} $$dir"; \
- self2="$$dir"; \
- ${_flavor_fragment}; \
- toset="$$toset self=\"$$self2\""; \
- if ! eval $$toset ${MAKE} _recurse-dir-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
- exit 1; \
- fi; \
- done
-.else
- @echo "${FULLPKGPATH} ${FULLPKGPATH}"
-.endif
.for _i in RUN BUILD LIB
${_i:L}-depends-list:
@@ -2368,112 +2189,182 @@ ${_i:L}-depends-list:
. endif
.endfor
-# recursively build a list of dirs to pass to tsort...
-_package-recurse-dir-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
- @unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_RUN_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- echo "$$self $$dir"; \
- self2="$$dir"; \
- ${_flavor_fragment}; \
- toset="$$toset self=\"$$self2\""; \
- if ! eval $$toset ${MAKE} _package-recurse-dir-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
- exit 1; \
- fi; \
- done
-.endif
+# recursive depend targets
-# recursively build a list of dirs to pass to tsort...
-package-dir-depends:
-.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
- @unset FLAVOR SUBPACKAGE || true; \
- for dir in `echo ${_ALWAYS_DEP} ${_RUN_DEP} \
- | tr '\040' '\012' | sort -u`; do \
- echo "${FULLPKGPATH} $$dir"; \
- self2="$$dir"; \
- ${_flavor_fragment}; \
- toset="$$toset self=\"$$self2\""; \
- if ! eval $$toset ${MAKE} _package-recurse-dir-depends ${_DEPEND_THRU}; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
- exit 1; \
+# Print list of all libraries that we may depend upon.
+_recurse-lib-depends-check:
+.for _i in ${LIB_DEPENDS}
+ @unset FLAVOR SUBPACKAGE || true; \
+ echo '${_i}' | { \
+ IFS=:; read dep pkg dir target; \
+ if fgrep -q "|$$dir|" $${_DEPENDS_FILE}; then :; else \
+ echo "|$$dir|" >>$${_DEPENDS_FILE}; \
+ ${_flavor_fragment}; \
+ IFS=,; for j in $$dep; do echo $$j; done; \
+ eval $$toset ${MAKE} _recurse-lib-depends-check; \
fi; \
- done
-.else
- @echo "${FULLPKGPATH} ${FULLPKGPATH}"
-.endif
+ }
+.endfor
+.for _i in ${RUN_DEPENDS}
+ @unset FLAVOR SUBPACKAGE || true; \
+ echo '${_i}' | { \
+ IFS=:; read dep pkg dir target; \
+ if fgrep -q "|$$dir|" $${_DEPENDS_FILE}; then :; else \
+ echo "|$$dir|" >>$${_DEPENDS_FILE}; \
+ ${_flavor_fragment}; \
+ eval $$toset ${MAKE} _recurse-lib-depends-check; \
+ fi; \
+ }
+.endfor
-_solve-package-depends:
-.if !empty(_RUN_DEP2)
+
+# Write a correct list of dependencies for packages.
+_recurse-solve-package-depends:
+.for _i in ${RUN_DEPENDS}
@unset FLAVOR SUBPACKAGE || true; \
- : $${self:=self}; \
- for spec in `echo '${_RUN_DEP2}' \
- | tr '\040' '\012' | sort -u`; do \
- dir=$${spec#*:}; pkg=$${spec%:*}; \
+ echo '${_i}' |{ \
+ IFS=:; read dep pkg dir target; \
${_flavor_fragment}; \
default=`eval $$toset ${MAKE} _print-packagename`; \
: $${pkg:=$$default}; \
echo "@newdepend $$self:$$pkg:$$default" >>$${_depends_result}; \
- toset="$$toset self=\"$$default\""; \
- if ! eval $$toset ${MAKE} _solve-package-depends; then \
- echo 1>&2 "*** Problem checking deps in \"$$dir\"." ; \
- exit 1; \
- fi; \
- done
-.endif
-.if !defined(NO_SHARED_LIBS) && defined(LIB_DEPENDS) && !empty(LIB_DEPENDS)
+ if fgrep -q "|$$default|" ${_DEPENDS_FILE}; then : ; else \
+ echo "|$$default|" >>${_DEPENDS_FILE}; \
+ toset="$$toset self=\"$$default\""; \
+ if ! eval $$toset ${MAKE} _recurse-solve-package-depends; then \
+ echo 1>&2 "*** Problem checking deps in \"$$dir\"." ; \
+ exit 1; \
+ fi; \
+ fi; }
+.endfor
+.if !defined(NO_SHARED_LIBS)
. for _i in ${LIB_DEPENDS}
@unset FLAVOR SUBPACKAGE || true; \
- : $${self:=self}; \
- echo '${_i}'|{ \
- IFS=:; read dep pkg dir target; \
- ${_flavor_fragment}; \
- libspecs='';comma=''; \
- default=`eval $$toset ${MAKE} _print-packagename`; \
- case "X$$pkg" in X) pkg=`echo $$default|sed -e 's,-[0-9].*,-*,'`;; esac; \
- if pkg dependencies check $$pkg; then \
- listlibs='ls $$shdir 2>/dev/null'; \
- else \
- eval $$toset ${MAKE} ${PKGREPOSITORY}/$$default.tgz; \
- listlibs='pkg_info -L ${PKGREPOSITORY}/$$default.tgz|grep $$shdir|sed -e "s,^$$shdir/,,"'; \
- fi; \
- IFS=,; for d in $$dep; do \
- ${_libresolve_fragment}; \
- case "$$check" in \
- *.a) continue;; \
- Missing\ library|Error:*) \
- echo 1>&2 "Can't resolve libspec $$d"; \
- exit 1;; \
- *) \
- libspecs="$$libspecs$$comma$$shprefix$$check"; \
- comma=',';; \
- esac; \
- done; \
- case "X$$libspecs" in \
- X) ;;\
+ echo '${_i}'|{ \
+ IFS=:; read dep pkg dir target; \
+ ${_flavor_fragment}; \
+ libspecs='';comma=''; \
+ default=`eval $$toset ${MAKE} _print-packagename`; \
+ case "X$$pkg" in X) pkg=`echo $$default|sed -e 's,-[0-9].*,-*,'`;; esac; \
+ if pkg dependencies check $$pkg; then \
+ listlibs='ls $$shdir 2>/dev/null'; \
+ else \
+ eval $$toset ${MAKE} ${PKGREPOSITORY}/$$default.tgz; \
+ listlibs='pkg_info -L ${PKGREPOSITORY}/$$default.tgz|grep $$shdir|sed -e "s,^$$shdir/,,"'; \
+ fi; \
+ IFS=,; for d in $$dep; do \
+ ${_libresolve_fragment}; \
+ case "$$check" in \
+ *.a) continue;; \
+ Missing\ library|Error:*) \
+ echo 1>&2 "Can't resolve libspec $$d"; \
+ exit 1;; \
*) \
- echo "@libdepend $$self:$$libspecs:$$pkg:$$default" >>$${_depends_result}; \
+ libspecs="$$libspecs$$comma$$shprefix$$check"; \
+ comma=',';; \
+ esac; \
+ done; \
+ case "X$$libspecs" in \
+ X) ;;\
+ *) \
+ echo "@libdepend $$self:$$libspecs:$$pkg:$$default" >>$${_depends_result}; \
+ if fgrep -q "|$$default|" ${_DEPENDS_FILE}; then : ; else \
+ echo "lib|$$default|" >>${_DEPENDS_FILE}; \
toset="$$toset self=\"$$default\""; \
- if ! eval $$toset ${MAKE} _solve-package-depends; then \
+ if ! eval $$toset ${MAKE} _recurse-solve-package-depends; then \
echo 1>&2 "*** Problem checking deps in \"$$dir\"." ; \
exit 1; \
- fi;; \
- esac; \
- }
+ fi; \
+ fi;; \
+ esac; \
+ }
. endfor
.endif
-README_NAME?= ${TEMPLATES}/README.port
+# recursively build a list of dirs for package running, ready for tsort
+_recurse-run-dir-depends:
+.for _dir in ${_ALWAYS_DEP} ${_RUN_DEP}
+ @unset FLAVOR SUBPACKAGE || true; \
+ echo "$$self ${_dir}"; \
+ if fgrep -q "|${_dir}|" ${_DEPENDS_FILE}; then : ; else \
+ echo "|${_dir}|" >> ${_DEPENDS_FILE}; \
+ dir=${_dir}; \
+ ${_flavor_fragment}; \
+ toset="$$toset self=\"${_dir}\""; \
+ if ! eval $$toset ${MAKE} _recurse-run-dir-depends; then \
+ echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
+ exit 1; \
+ fi; \
+ fi
+.endfor
-readme readmes:
- @rm -f README.html
- @cd ${.CURDIR} && exec ${MAKE} README_NAME=${README_NAME} README.html
+run-dir-depends:
+.if !empty(_ALWAYS_DEP) || !empty(_RUN_DEP)
+ @: $${_DEPENDS_FILE:=`mktemp /tmp/depends.XXXXXXXXXX`}; \
+ export _DEPENDS_FILE; \
+ echo "|${FULLPKGPATH}|" >>$${_DEPENDS_FILE}; \
+ self=${FULLPKGPATH} ${MAKE} _recurse-run-dir-depends; \
+ rm -f $${_DEPENDS_FILE}
+.else
+ @echo "${FULLPKGPATH} ${FULLPKGPATH}"
+.endif
-HTMLIFY= sed -e 's/&/\&/g' -e 's/>/\>/g' -e 's/\</g'
+# recursively build a list of dirs for package building, ready for tsort
+# second and further stages need _RUN_DEP.
+_recurse-all-dir-depends:
+.for _dir in ${_ALWAYS_DEP} ${_BUILD_DEP} ${_RUN_DEP}
+ @unset FLAVOR SUBPACKAGE || true; \
+ echo "$$self ${_dir}"; \
+ if fgrep -q "|${_dir}|" ${_DEPENDS_FILE}; then : ; else \
+ echo "|${_dir}|" >> ${_DEPENDS_FILE}; \
+ dir=${_dir}; \
+ ${_flavor_fragment}; \
+ toset="$$toset self=\"${_dir}\""; \
+ if ! eval $$toset ${MAKE} _recurse-all-dir-depends; then \
+ echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
+ exit 1; \
+ fi; \
+ fi
+.endfor
-print-depends:
- @cd ${.CURDIR} && exec ${MAKE} FULL_PACKAGE_NAME=Yes print-depends-list print-package-depends
+# first stage does not need _RUN_DEP
+_build-dir-depends:
+.for _dir in ${_ALWAYS_DEP} ${_BUILD_DEP}
+ @unset FLAVOR SUBPACKAGE || true; \
+ echo "$$self ${_dir}"; \
+ if fgrep -q "|${_dir}|" ${_DEPENDS_FILE}; then : ; else \
+ echo "|${_dir}|" >> ${_DEPENDS_FILE}; \
+ dir=${_dir}; \
+ ${_flavor_fragment}; \
+ toset="$$toset self=\"${_dir}\""; \
+ if ! eval $$toset ${MAKE} _recurse-all-dir-depends; then \
+ echo 1>&2 "*** Problem checking deps in \"$$dir\"."; \
+ exit 1; \
+ fi; \
+ fi
+.endfor
+
+build-dir-depends:
+.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP)
+ @: $${_DEPENDS_FILE:=`mktemp /tmp/depends.XXXXXXXXXX`}; \
+ export _DEPENDS_FILE; \
+ echo "|${FULLPKGPATH}|" >>$${_DEPENDS_FILE}; \
+ self=${FULLPKGPATH} ${MAKE} _build-dir-depends; \
+ rm -f $${_DEPENDS_FILE}
+.else
+ @echo "${FULLPKGPATH} ${FULLPKGPATH}"
+.endif
+
+all-dir-depends:
+.if !empty(_ALWAYS_DEP) || !empty(_BUILD_DEP) || !empty(_RUN_DEP)
+ @: $${_DEPENDS_FILE:=`mktemp /tmp/depends.XXXXXXXXXX`}; \
+ export _DEPENDS_FILE; \
+ echo "|${FULLPKGPATH}|" >>$${_DEPENDS_FILE}; \
+ self=${FULLPKGPATH} ${MAKE} _recurse-all-dir-depends; \
+ rm -f $${_DEPENDS_FILE}
+.else
+ @echo "${FULLPKGPATH} ${FULLPKGPATH}"
+.endif
link-categories:
.for _CAT in ${CATEGORIES}
@@ -2508,6 +2399,35 @@ homepage-links:
. include "${PORTSDIR}/infrastructure/mk/old-install.mk"
.endif
+#####################################################
+# convenience targets, not really needed
+#####################################################
+
+checkpatch:
+ @cd ${.CURDIR} && exec ${MAKE} PATCH_CHECK_ONLY=Yes patch
+
+clean-depends:
+ @exec ${MAKE} clean=depends
+
+delete-package:
+ @cd ${.CURDIR} && exec ${MAKE} clean=package
+
+reinstall:
+ @cd ${.CURDIR} && exec ${MAKE} clean=install
+ @cd ${.CURDIR} && DEPENDS_TARGET=${DEPENDS_TARGET} exec ${MAKE} install
+
+repackage:
+ @cd ${.CURDIR} && exec ${MAKE} clean=packages
+ @cd ${.CURDIR} && exec ${MAKE} package
+
+rebuild:
+ @rm -f ${_BUILD_COOKIE}
+ @cd ${.CURDIR} && exec ${MAKE} build
+
+uninstall deinstall:
+ @${ECHO_MSG} "===> Deinstalling for ${FULLPKGNAME${SUBPACKAGE}}"
+ @${SUDO} ${PKG_DELETE} -f ${FULLPKGNAME${SUBPACKAGE}}
+
.if defined(ERRORS)
.BEGIN:
. for _m in ${ERRORS}
@@ -2525,18 +2445,18 @@ homepage-links:
describe distclean do-build do-configure do-extract \
do-fetch do-install do-package do-patch extract list-distfiles \
fetch install lib-depends makesum \
- package package-depends package-links package-name \
+ package package-depends package-links \
package-noinstall patch plist update-plist update-patches post-build \
post-configure post-extract post-fetch post-install post-package \
post-patch pre-build pre-configure \
pre-extract pre-fetch pre-install pre-package pre-patch \
- print-depends-list print-package-depends readme \
- readmes rebuild reinstall \
+ readme readmes rebuild reinstall \
repackage run-depends uninstall fetch-all print-depends \
recurse-build-depends recurse-package-depends \
distpatch do-distpatch post-distpatch show \
- link-categories unlink-categories _package _solve-package-depends \
- dir-depends _recurse-dir-depends package-dir-depends \
- _package-recurse-dir-depends recursebuild-depends-list run-depends-list \
- _recurse-lib-depends lib-depends-check \
- homepage-links manpages-check
+ link-categories unlink-categories _package \
+ lib-depends-check homepage-links manpages-check \
+ _recurse-lib-depends-check _recurse-solve-package-depends \
+ _recurse-run-dir-depends run-dir-depends _recurse-all-dir-depends \
+ _build-dir-depends build-dir-depends all-dir-depends \
+ fetch-makefile _fetch-makefile