bug-gnulib
[Top][All Lists]
Advanced

[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

Attachment: dot.sh
Description: Bourne shell script


reply via email to

[Prev in Thread] Current Thread [Next in Thread]