summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhubertf <hubertf>1998-10-03 16:24:35 +0000
committerhubertf <hubertf>1998-10-03 16:24:35 +0000
commit542c48c8a57f277695bdf4ed825dd183ee73872c (patch)
tree9c94a92cb15bb5c102c10e9ebc438e70dbe569a0
parent1a4bf0bac04151087c28587412d01ab1ad49bfc7 (diff)
downloadpkgsrc-542c48c8a57f277695bdf4ed825dd183ee73872c.tar.gz
Teach our tools about dependencies containing wildcards.
-rw-r--r--mk/bsd.pkg.mk73
1 files changed, 59 insertions, 14 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk
index 8b6848471a6..d992b978c55 100644
--- a/mk/bsd.pkg.mk
+++ b/mk/bsd.pkg.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.170 1998/10/03 14:44:14 tv Exp $
+# $NetBSD: bsd.pkg.mk,v 1.171 1998/10/03 16:24:35 hubertf Exp $
#
# This file is in the public domain.
#
@@ -375,9 +375,10 @@ REQ_FILE= ${PKGDIR}/REQ
MESSAGE_FILE= ${PKGDIR}/MESSAGE
.endif
+PKG_INFO?= /usr/sbin/pkg_info
PKG_CREATE?= /usr/sbin/pkg_create
.if !defined(PKG_ARGS)
-PKG_ARGS= -v -c ${COMMENT} -d ${DESCR} -f ${PLIST} -p ${PREFIX} -P "`${MAKE} package-depends|sort -u`"
+PKG_ARGS= -v -c ${COMMENT} -d ${DESCR} -f ${PLIST} -p ${PREFIX} -P "`${MAKE} package-depends PACKAGE_DEPENDS_WITH_PATTERNS=true|sort -u`"
.if defined(CONFLICTS)
# Only use -C if the pkg_create command supports it.
__PKG_CREATE_C__!= ${PKG_CREATE} -C 2>&1 | /usr/bin/egrep 'illegal option' ; echo
@@ -1523,17 +1524,37 @@ package-path:
.endif
# Show (recursively) all the packages this package depends on.
-
+# if PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible)
+PACKAGE_DEPENDS_WITH_PATTERNS?=false
.if !target(package-depends)
package-depends:
- @for dir in `${ECHO} ${DEPENDS} ${RUN_DEPENDS} | ${TR} '\040' '\012' | ${SED} -e 's/^[^:]*://' -e 's/:.*//' | sort -u`; do \
+ @for dir in ${DEPENDS} ; do \
+ OFS=$$IFS ; IFS=: ; \
+ set $$dir ; \
+ IFS=$$OFS ; pkg=$$1 ; dir=$$2 ; \
if [ -d $$dir ]; then \
- (cd $$dir ; ${MAKE} package-name package-depends PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}); \
+ if ${PACKAGE_DEPENDS_WITH_PATTERNS} ; then \
+ ${ECHO} "$$pkg" ; \
+ else \
+ (cd $$dir ; ${MAKE} package-name PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}); \
+ fi ; \
+ (cd $$dir ; ${MAKE} package-depends PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}); \
else \
${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \
fi; \
done
-.endif
+ @for dir in ${RUN_DEPENDS}; do \
+ OFS=$$IFS ; IFS=: ; \
+ set $$dir ; \
+ IFS=$$OFS ; pkg=$$1 ; dir=$$2 ; \
+ if [ -d $$dir ]; then \
+ (cd $$dir ; ${MAKE} package-name PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}); \
+ (cd $$dir ; ${MAKE} package-depends PACKAGE_NAME_TYPE=${PACKAGE_NAME_TYPE}); \
+ else \
+ ${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \
+ fi; \
+ done
+.endif # target(package-depends)
# Build a package but don't check the package cookie
@@ -1889,14 +1910,21 @@ fake-pkg: ${PLIST} ${DESCR}
${CP} ${MESSAGE_FILE} ${PKG_DBDIR}/${PKGNAME}/+DISPLAY; \
fi; \
fi; \
- for dep in `${MAKE} package-depends ECHO_MSG=${TRUE} | sort -u`; do \
- if [ -d ${PKG_DBDIR}/$$dep ]; then \
- if ! ${GREP} ^${PKGNAME}$$ ${PKG_DBDIR}/$$dep/+REQUIRED_BY \
- >/dev/null 2>&1; then \
- ${ECHO} ${PKGNAME} >> ${PKG_DBDIR}/$$dep/+REQUIRED_BY; \
- fi; \
- fi; \
- done; \
+ for dep in `${MAKE} package-depends PACKAGE_DEPENDS_WITH_PATTERNS=true ECHO_MSG=${TRUE} | sort -u`; do \
+ realdep=`${PKG_INFO} -e "$$dep" || true` ; \
+ echo "a sanity check should be put in here to prevent some dumb user having the pkg installed/registered twice somehow - HF" >/dev/null ; \
+ if [ -z "$$realdep" ]; then \
+ echo "$$dep not installed - NOT registered" ; \
+ else \
+ if [ -d ${PKG_DBDIR}/$$realdep ]; then \
+ if ! ${GREP} ^${PKGNAME}$$ ${PKG_DBDIR}/$$realdep/+REQUIRED_BY \
+ >/dev/null 2>&1; then \
+ ${ECHO} ${PKGNAME} >> ${PKG_DBDIR}/$$realdep/+REQUIRED_BY; \
+ echo "${PKGNAME} registered in ${PKG_DBDIR}/$$realdep/+REQUIRED_BY" ; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
fi
.endif
@@ -1955,3 +1983,20 @@ ${DESCR}: ${DESCR_SRC}
@(${ECHO} ; ${ECHO} "Homepage:" ; \
${ECHO} '${HOMEPAGE}') >> ${DESCR}
.endif
+
+
+
+
+
+
+
+
+
+
+#
+##
+###
+#### .include "../../mk/bsd.hf-pkg.mk"
+###
+##
+#