From: Lapo Luchini on
It happened many times to me to ask myself: why I do have port XYZ
installed? surely "something needs it", but what?
"pkg_info -r/-R" are of little help, because every dependency of every
dependency (and other ranks of indirect dependencies too) are simply
registered as direct dependencies, so that pretty much every single
small gnome application depends on EVERY gnome and xorg port.

OK, in a sense it *really* depends on all of them, because one of them
missing would break it, but OTOH I'd like to know which ones are direct
dependencies and which ones are indirect, especially because in that
case my life would be easier wading through the correct Makefiles and
searching for "WITHOUT_*" knobs or other ways to "cut" some dependencies
I really don't want.

True, there are "package tree" ports such as pkg_tree, but for the very
reason that indirect dependencies are registered in exactly the same way
that direct ones are, they provide an output that's not very useful at
all (a very flattened tree).

Is there a way to discriminate direct dependencies fro indirect ones,
except from reading every single Makefile? (and knowing to full extent
what USE_GNOME and similar lines really do take in as deps)

Lapo

_______________________________________________
freebsd-ports(a)freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscribe(a)freebsd.org"
From: Andrew Pantyukhin on
On Fri, Nov 23, 2007 at 10:49:35AM +0100, Lapo Luchini wrote:
> Is there a way to discriminate direct dependencies fro indirect
> ones, except from reading every single Makefile? (and knowing
> to full extent what USE_GNOME and similar lines really do take
> in as deps)

You can cd some/port/&&make depends, but personally, I've also
always thought that the difference between direct and indirect
dependencies should be embedded in the package system.
_______________________________________________
freebsd-ports(a)freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscribe(a)freebsd.org"
From: Stephen Montgomery-Smith on
On Fri, Nov 23, 2007 at 11:25:25PM +0300, Andrew Pantyukhin wrote:
> On Fri, Nov 23, 2007 at 10:49:35AM +0100, Lapo Luchini wrote:
> > Is there a way to discriminate direct dependencies fro indirect
> > ones, except from reading every single Makefile? (and knowing
> > to full extent what USE_GNOME and similar lines really do take
> > in as deps)
>
> You can cd some/port/&&make depends, but personally, I've also
> always thought that the difference between direct and indirect
> dependencies should be embedded in the package system.

Haven't been following this thread, so apologies if I misunderstand or repeat.

If you want only the direct depends, you can do this (under sh or bash)

cd the-port
for a in `make -V _LIB_RUN_DEPENDS`
do (cd `echo $a | sed -E 's/.*://'` && make -V PKGNAME); done
_______________________________________________
freebsd-ports(a)freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscribe(a)freebsd.org"
From: Alex Dupre on
Andrew Pantyukhin wrote:
> You can cd some/port/&&make depends

One way only. It would be more useful to know which installed ports
directly depend on a specific port.

--
Alex Dupre
_______________________________________________
freebsd-ports(a)freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscribe(a)freebsd.org"
From: Andrew Pantyukhin on
On Fri, Nov 23, 2007 at 11:00:32PM +0100, Alex Dupre wrote:
> Andrew Pantyukhin wrote:
> > You can cd some/port/&&make depends
>
> One way only. It would be more useful to know which installed ports
> directly depend on a specific port.

As an obvious working (but not nearly correct) example:

pkg_direct_req <pkg name or regexp>

#!/bin/sh
indirect_reqs=`pkg_info -Rx "$1"|egrep -v '(:|^$)'`
pkg_origin=`pkg_info -ox "$1"|grep -m1 /`
for i in $indirect_reqs;do
req_origin=`pkg_info -o "$i"|grep /`
depdirs=`cd /usr/ports/$req_origin;make -V _DEPEND_DIRS`
if echo $depdirs|grep -qw $pkg_origin;then
echo $i is a direct req
fi
done
_______________________________________________
freebsd-ports(a)freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscribe(a)freebsd.org"