On Monday 13 April 2009 03:56:15 Tim Judd wrote: > On Sun, Apr 12, 2009 at 5:10 PM, Chris Whitehouse <cwhi...@onetel.com>wrote: > > Hi > > > > Is there a make target which will give a list of _all_ dependencies > > recursively not just next level up? Or a port? I tried > > ports-mgmt/pkg_tree but it only seems to work with installed ports. > > > > I don't care if I get duplicates as long as every dependency is listed at > > least once. > > > > Thanks > > > > Chris > > make all-depends-list
Two things: 1) It surpresses config target and if a port has OPTIONS set, then you may get surprised once you've configured the port and ticked/unticked an option 2) It includes EXTRACT_DEPENDS, PATCH_DEPENDS and BUILD_DEPENDS, which typically don't end up in run dependencies. Looking at the subject this may not be what you need. make -C /usr/ports/category/portname -V LIB_DEPENDS -V RUN_DEPENDS will list the dependencies that will be registered in /var/db/pkg. Recurse through the list, take the second field split by : and run the above for each origin. Something like the script below, which calls the config target if not configured, remembers already visited dependencies and then prints the runtime dependency list. -- Mel #!/bin/sh VISITED= if test $# -eq 0; then startdir=`pwd` else startdir=$1 fi config_port() { local ldeps rdeps curdir curdir=$1 make -C ${curdir} config-conditional ldeps=`make -C ${curdir} -V LIB_DEPENDS` rdeps=`make -C ${curdir} -V RUN_DEPENDS` for dep in ${ldeps} ${rdeps}; do dir=${dep#*:} # For 3-part deps where 3rd field is target, ex: # dovecot:${PORTSDIR}/mail/dovecot:build dir=${dir%%:*} case ${VISITED} in *" ${dir} "*|*" ${dir}") ;; *) VISITED="${VISITED} ${dir}" config_port ${dir} esac done } config_port $startdir for dir in ${VISITED}; do echo $dir done _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"