[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