Changeset 314


Ignore:
Timestamp:
01/16/11 05:46:06 (13 years ago)
Author:
nanardon
Message:
  • add functions
Location:
server/trunk/web/lib/Sophie/Controller
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • server/trunk/web/lib/Sophie/Controller/Analysis.pm

    r311 r314  
    102102} 
    103103 
     104sub find_obsoletes : XMLRPC { 
     105    my ($self, $c, $distspec, $id, $pool) = @_; 
     106    $pool ||= $id; 
     107    my @provides; 
     108    foreach my $dep ($c->model('Base::UsersDeps')->search( 
     109        { 
     110            pid => [ $id ], 
     111            deptype => 'O', 
     112        }, 
     113        { 
     114            select => [ 'rpmsenseflag("flags")', 
     115                qw(depname flags evr deptype) ], 
     116            as => [ qw'sense depname flags evr deptype' ], 
     117        } 
     118        )->all) { 
     119        $dep->get_column('depname') =~ /^rpmlib\(/ and next; 
     120        push(@provides, [ 
     121                $dep->get_column('depname'), 
     122                $dep->get_column('sense'), 
     123                $dep->get_column('evr') ]); 
     124    } 
     125    $c->forward('/analysis/solver/find_obsoletes', 
     126        [ $distspec, \@deplist, $pool ]); 
     127} 
     128 
    104129sub find_conflicts : XMLRPC { 
    105130    my ($self, $c, $distspec, $id, $pool) = @_; 
     
    144169    $c->forward('/analysis/solver/find_conflicts', 
    145170        [ $distspec, \@conflicts, \@provides, $pool ]); 
     171} 
     172 
     173sub find_updates : XMLRPC { 
     174    my ($self, $c, $distspec, $id, $pool) = @_; 
     175    my $pkg = $c->model('Base::UsersRpms')->find( 
     176        { id => $id } 
     177    ); 
     178    $distspec->{src} = $pkg->issrc ? 1 : 0; 
     179 
     180    $c->forward('/analysis/solver/find_updates', 
     181        [ $distspec, [ $pkg->name, '<', $pkg->evr ], $pool ] 
     182    ); 
    146183} 
    147184 
  • server/trunk/web/lib/Sophie/Controller/Analysis/Solver.pm

    r310 r314  
    122122} 
    123123 
     124sub solve_name : Private { 
     125    my ($self, $c, $searchspec, $deplist, $pool) = @_; 
     126    my %need_pkgid; 
     127    my %need_pool; 
     128    my %bydep; 
     129    my @unresolved; 
     130    foreach my $dep (@{$deplist || []}) { 
     131        my ($depname, $sense, $evr) = ref $dep 
     132            ? @$dep 
     133            : split(/\s+/, $dep); 
     134        $sense ||= ''; 
     135        $evr ||= ''; 
     136        my $depdisplay = $depname . ($sense ? " $sense $evr" : ''); 
     137        my $found = 0; 
     138 
     139        my $res = $c->forward('/search/rpm/byname', [ $searchspec, $depname, 
     140                $sense, $evr ]); 
     141        foreach (@{ $res }) { 
     142            $found = 1; 
     143            $need_pkgid{$_} = 1; 
     144            $bydep{$depdisplay}{pkg}{$_} = 1; 
     145        } 
     146 
     147        if (!$found) { 
     148            push(@unresolved, $depdisplay); 
     149        } 
     150    } 
     151    foreach my $d (keys %bydep) { 
     152        foreach my $t (keys %{ $bydep{$d} || {} }) { 
     153            $bydep{$d}{$t} = [ keys %{ $bydep{$d}{$t} } ]; 
     154        } 
     155    } 
     156    $c->stash->{xmlrpc} = { 
     157        unresolved => \@unresolved, 
     158        pkg => [ keys %need_pkgid ], 
     159        pool => [ keys %need_pool ], 
     160        bydep => \%bydep, 
     161    } 
     162} 
     163 
    124164sub find_requirements : Private { 
    125165    my ($self, $c, $searchspec, $deplist, $pool) = @_; 
     
    144184sub is_updated : Private { 
    145185    my ($self, $c, $searchspec, $deplist, $pool) = @_; 
    146     my $pkgid = $c->forward('/search/rpm/byname', [ $searchspec, @{ $deplist } ]); 
    147     $c->stash->{xmlrpc} = { 
    148         pkg => $pkgid, 
    149         pool => [], 
    150     } 
     186    $c->forward('solve_name', [ $searchspec, [ $deplist ] ], $pool); 
     187} 
     188 
     189sub find_obsoletes : Private { 
     190    my ($self, $c, $searchspec, $deplist, $pool) = @_; 
     191    $c->forward('solve_name', [ $searchspec,  $deplist ], $pool); 
    151192} 
    152193 
Note: See TracChangeset for help on using the changeset viewer.