On Thu, Jun 30, 2011 at 02:29:28PM +0100, Paul Howarth wrote:
On 06/30/2011 02:05 PM, Petr Pisar wrote:
> On Thu, Jun 30, 2011 at 01:44:15PM +0100, Paul Howarth wrote:
>> On 06/30/2011 01:35 PM, Petr Pisar wrote:
>>> On Thu, Jun 30, 2011 at 01:12:13PM +0100, Paul Howarth wrote:
>>>> On 06/28/2011 12:57 PM, Petr Pisar wrote:
>>>>> On Tue, Jun 28, 2011 at 08:58:58AM +0200, Petr Pisar wrote:
>>>>>> On Mon, Jun 27, 2011 at 01:28:58PM -0400, Marcela Maslanova
wrote:
>>>>>>
>>>>>>> If you like imagine how bad it is, see:
>>>>>>>
http://ppisar.fedorapeople.org/perl_rebuild/5.14/notbuilt.svg ;-) It
>>>>>>> doesn't contain current data, but it shows the most
problematic places.
>>>>>>>
>>>>>>
>>>>>> The picture is horrible as it constructs package names from Perl
module
>>>>>> names. I will provide better one soon.
>>>>>>
>>>>> I've uploaded new picture where destinations are real source
package base
>>>>> names.
>>>>>
>>>>> Graph explanation: This picture represents relation `a source
package
>>>>> BuildRequires another source package'. It considers direct
build-time
>>>>> dependencies only and it cuts degenerated leaf substrees (i.e.
recursively
>>>>> removed packages that do buildrequire nothing). Input is set of not
yet
>>>>> rebuilt packages. So the picture is not perfect, it's just a
raw
>>>>> depiction.
>>>>
>>>> Do you have the data behind this graph somewhere? I'm trying to
figure out
>>>> where the circular build dependency between Test::EOL and
>>>> Pod::Coverage::TrustPod is that necessitated turning off
>>>> Pod::Coverage::TrustPod as a buildreq for Test::EOL when bootstrapping,
and
>>>> I can't really see it from the picture.
>>>>
>>> In the same directory as the SVG file, there is file without extension
listing
>>> not yet rebuild source package base names. If you are curious for the
>>> generator, I can publish it too (but I'm quite ashamed of it).
>>
>> Hopefully the raw data will suit my need - when I can get it:
>>
>> $ wget
http://ppisar.fedorapeople.org/perl_rebuild/5.14/notbuilt
>> --2011-06-30 13:43:28--
>>
http://ppisar.fedorapeople.org/perl_rebuild/5.14/notbuilt
>> Resolving ppisar.fedorapeople.org... 85.236.55.7
>> Connecting to ppisar.fedorapeople.org|85.236.55.7|:80... connected.
>> HTTP request sent, awaiting response... 403 Forbidden
>> 2011-06-30 13:43:28 ERROR 403: Forbidden.
>>
> Oops. Permissions fixed.
Hmm, that file is just the list of unbuilt packages; I was looking for
something that included the relationships between the packages so I
could figure out why Test::EOL couldn't use Pod::Coverage::TrustPod when
bootstrapping.
Yeah, I know :) You can get the drawing script from
<
http://ppisar.fedorapeople.org/perl_rebuild/depgraph>. It gets BuildRequires
for each listed source package, translate them to corresponding source package
name and put them into directed graph.
(This is done calling repoquery which is really slow. Therefore I packaged
perl-YUM-RepoQuery few days ago, but had not time to use it.)
(Also it considers direct BuildRequires only. I'm implementing indirect
dependenices into mass rebuild script now, so it could be reused, maybe.)
Then it removes all leafs recursively and finally it uses graphviz do draw the
graph.
I would like to minimaze the graph to cycles only. Cycle finding is not
implemented yet but it should be trivial within O(V×E): just flood a name of
a vertex, and if the wave hit the origin, the vertex is in cycle; and do it
for each vertex.
-- Petr