[Midnightbsd-cvs] mports [22261] trunk/Mk/bsd.mport.mk: experiment with changing the dependency graph detection for packages.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sat Feb 18 10:30:51 EST 2017


Revision: 22261
          http://svnweb.midnightbsd.org/mports/?rev=22261
Author:   laffer1
Date:     2017-02-18 10:30:51 -0500 (Sat, 18 Feb 2017)
Log Message:
-----------
experiment with changing the dependency graph detection for packages. This will include the entire list rather than one level which violates the original mport package design but fixes a few outlier issues.

Modified Paths:
--------------
    trunk/Mk/bsd.mport.mk

Modified: trunk/Mk/bsd.mport.mk
===================================================================
--- trunk/Mk/bsd.mport.mk	2017-02-18 15:01:50 UTC (rev 22260)
+++ trunk/Mk/bsd.mport.mk	2017-02-18 15:30:51 UTC (rev 22261)
@@ -3705,7 +3705,7 @@
 # and package names.
 
 package-depends-list:
-.if defined(CHILD_DEPENDS) || defined(LIB_DEPENDS) || defined(RUN_DEPENDS) || defined(DEPENDS)
+.if defined(CHILD_DEPENDS) || defined(LIB_DEPENDS) || defined(RUN_DEPENDS)
 	@${PACKAGE-DEPENDS-LIST}
 .endif
 
@@ -3713,23 +3713,41 @@
 # the mport binary tools only store the the first tier of the depenancy
 # tree in a mports archive.
 PACKAGE-DEPENDS-LIST?= \
-	for depend in `${ECHO_CMD} "${_LIB_RUN_DEPENDS}" | ${SED} -e 'y/ /\n/' | ${SORT} -u`; do \
-		version=`(${ECHO_CMD} $$depend | ${CUT} -f 1 -d ':' | ${GREP} -se '[<>]') || ${TRUE}`; \
+	if [ "${CHILD_DEPENDS}" ]; then \
+		installed=$$(${MPORT_QUERY} -q origin=$${PKGORIGIN} || \
+		${TRUE}); \
+		if [ "$$installed" ]; then \
+			break; \
+		fi; \
+		if [ -z "$$installed" ]; then \
+			installed="${PKGNAME}"; \
+		fi; \
+		for pkgname in $$installed; do \
+			${ECHO_CMD} "$$pkgname ${.CURDIR} ${PKGORIGIN}"; \
+		done; \
+	fi; \
+	checked="${PARENT_CHECKED}"; \
+	for dir in ${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}; do \
 		case "$$dir" in \
 		/*) ;; \
 		*) dir=${PORTSDIR}/$$dir ;; \
 		esac ; \
-		dir=`${ECHO_CMD} $$depend | ${CUT} -f 2 -d ':' | ${XARGS} ${REALPATH}`; \
+		dir=$$(${REALPATH} $$dir); \
 		if [ -d $$dir ]; then \
-			meta=`cd $$dir && ${MAKE} -V PKGBASE -V PKGORIGIN | ${PASTE} - -`; \
-			if [ -z "$$version" ]; then \
-				${ECHO_CMD} "$$dir $$meta" | ${AWK} '{print $$2 " " $$1 " " $$3}'; \
-			else \
-				version=`${ECHO_CMD} $$version | ${SED} -E 's/^.*([<>])/\1/'`; \
-				${ECHO_CMD} "$$dir $$meta $$version" | ${AWK} '{print $$2 " " $$1 " " $$3 " " $$4}'; \
-			fi; \
+			case $$checked in \
+			$$dir|$$dir\ *|*\ $$dir|*\ $$dir\ *) continue;; \
+			esac; \
+			childout=$$(cd $$dir; ${MAKE} CHILD_DEPENDS=yes PARENT_CHECKED="$$checked" package-depends-list); \
+			set -- $$childout; \
+			childdir=""; \
+			while [ $$\# != 0 ]; do \
+				childdir="$$childdir $$2"; \
+				${ECHO_CMD} "$$1 $$2 $$3"; \
+				shift 3; \
+			done; \
+			checked="$$dir $$childdir $$checked"; \
 		else \
-			${ECHO_MSG} "\"$$dir\" non-existent -- dependency list incomplete" >&2; \
+			${ECHO_MSG} "${PKGNAME}: \"$$dir\" non-existent -- dependency list incomplete" >&2; \
 		fi; \
 	done
 



More information about the Midnightbsd-cvs mailing list