# $Id$ package Youri::Check::Input::Build; =head1 NAME Youri::Check::Input::Build - Check build outputs =head1 DESCRIPTION This plugin checks build outputs of packages, and report failures. Additional source plugins handle specific sources. =cut use warnings; use strict; use Carp; use Youri::Utils; use base 'Youri::Check::Input'; sub columns { return qw/ arch bot status /; } sub links { return qw/ status url /; } =head2 new(%args) Creates and returns a new Youri::Check::Input::Build object. Specific parameters: =over =item sources $sources Hash of source plugins definitions =back =cut sub _init { my $self = shift; my %options = ( sources => undef, @_ ); croak "No source defined" unless $options{sources}; croak "sources should be an hashref" unless ref $options{sources} eq 'HASH'; foreach my $id (keys %{$options{sources}}) { print "Creating source $id\n" if $options{verbose}; eval { push( @{$self->{_sources}}, create_instance( 'Youri::Check::Input::Build::Source', id => $id, test => $options{test}, verbose => $options{verbose}, %{$options{sources}->{$id}} ) ); # register monitored archs $self->{_archs}->{$_}->{$id} = 1 foreach @{$options{sources}->{$id}->{archs}}; }; print STDERR "Failed to create source $id: $@\n" if $@; } croak "no sources created" unless @{$self->{_sources}}; } sub run { my ($self, $media, $resultset) = @_; croak "Not a class method" unless ref $self; # this is a source media check only return unless $media->get_type() eq 'source'; my $callback = sub { my ($package) = @_; my $name = $package->get_name(); my $version = $package->get_version(); my $release = $package->get_release(); foreach my $source (@{$self->{_sources}}) { my $id = $source->get_id(); foreach my $arch (keys %{$self->{_archs}}) { next unless $self->{_archs}->{$arch}->{$id}; $resultset->add_result($self->{_id}, $media, $package, { arch => $arch, bot => $id, status => $source->status($name, $version, $release, $arch), url => $source->url($name, $version, $release, $arch), }) if $source->fails( $name, $version, $release, $arch, ); } } }; $media->traverse_headers($callback); } =head1 COPYRIGHT AND LICENSE Copyright (C) 2002-2006, YOURI project This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;