make run-depends-list-recursive?
Mel Flynn
mel.flynn+fbsd.questions at mailing.thruhere.net
Tue Apr 14 19:02:15 UTC 2009
On Monday 13 April 2009 03:56:15 Tim Judd wrote:
> On Sun, Apr 12, 2009 at 5:10 PM, Chris Whitehouse <cwhiteh at 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
More information about the freebsd-questions
mailing list