bootstrap macro

Petr Pisar ppisar at redhat.com
Thu Jun 30 15:32:29 UTC 2011


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 230 bytes
Desc: not available
URL: <http://lists.fedoraproject.org/pipermail/perl-devel/attachments/20110630/f58145c0/attachment.sig>


More information about the perl-devel mailing list