[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: hunting dependencies
From: |
Matt Rice |
Subject: |
Re: hunting dependencies |
Date: |
Wed, 23 Mar 2011 03:24:54 -0700 |
On Wed, Mar 23, 2011 at 3:02 AM, Matt Rice <address@hidden> wrote:
> On Tue, Mar 22, 2011 at 3:41 PM, Bruno Haible <address@hidden> wrote:
>> Simon Josefsson wrote:
>>> I didn't know why a
>>> certain module was pulled in, and it wasn't immediately clear from the
>>> modules I requested. A different way to resolve this problem could be
>>> with a 'gnulib-tool --why strdup' command that could print:
>>>
>>> uniconv/u8-strconv-from-locale
>>> uniconv/u8-strconv-from-enc
>>> uniconv/u8-conv-from-enc
>>> striconveha
>>> strdup
>>>
>>> with the first line being something I manually requested.
>>>
>>> Just an idea, it might be too much work to implement this logic in shell
>>> script. There is complexity because there may be multiple paths too,
>>> although I think naming only one would be sufficient.
>>
>> I think, on the contrary, it would be essential to show all paths,
>> otherwise the user does work to cut a dependency and then afterwards notices
>> that there are other paths to the particular dependency that are much
>> harder to cut.
>>
>> All this is in the area of graph display, where the graph is a Directed
>> Acyclic Graph and 'gnulib-tool --extract-dependencies' provides the links
>> between nodes. I won't have time to plunge into this; volunteers welcome.
>
> the attached shell script seems to work,
> though it WILL create a ton of .dot files in your gnulib directory!!!
>
> the interesting ones are fullgraph-$module.dot.
> gnulib.dot is just too big of a graph to do much anything with
>
> its possible i'm missing some modules due to the use of basename $module,
> might need to escape those instead.
>
> anyhow, the outputted files should be suitable for running with dotty
> or dot from graphviz.
>
of course i didn't think about false positives caused by grep, which
you can see by
dotty unlink.dot these showed up as separated graphs. such as
unlinkdir graph showing up in fullgraph-unlink.dot.
--- old-dot.sh 2011-03-23 03:22:33.566478887 -0700
+++ ./dot.sh 2011-03-23 03:17:17.357394354 -0700
@@ -25,6 +25,6 @@
for module in `./gnulib-tool --list`; do
dotfile=fullgraph-`basename $module`.dot
echo digraph $module "{" | cat >$dotfile
- grep $module gnulib.dot | grep -v "subgraph" | cat >>$dotfile
+ grep \"$module\" gnulib.dot | cat >>$dotfile
echo "}" | cat >>$dotfile
done
dot.sh
Description: Bourne shell script