Changeset 310


Ignore:
Timestamp:
01/15/11 19:36:11 (13 years ago)
Author:
nanardon
Message:
  • add more functions to perform checks
Location:
server/trunk/web/lib/Sophie/Controller
Files:
4 edited

Legend:

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

    r306 r310  
    7171    $c->stash->{xmlrpc} = $c->forward( 
    7272        '/analysis/solver/find_requirements', 
    73         [ $c->session->{analyse_dist}, 
    74             'P', \@deplist, \@folderid ] 
     73        [ $c->session->{analyse_dist}, \@deplist, \@folderid ] 
    7574    ); 
    7675} 
     
    10099 
    101100    $c->forward('/analysis/solver/find_requirements', 
    102         [ $distspec, 'P', \@deplist, $pool ]); 
     101        [ $distspec, \@deplist, $pool ]); 
     102} 
     103 
     104sub find_conflicts : 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 => 'C', 
     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    my @conflicts; 
     126    foreach my $dep ($c->model('Base::UsersDeps')->search( 
     127        { 
     128            pid => [ $id ], 
     129            deptype => 'C', 
     130        }, 
     131        { 
     132            select => [ 'rpmsenseflag("flags")', 
     133                qw(depname flags evr deptype) ], 
     134            as => [ qw'sense depname flags evr deptype' ], 
     135        } 
     136        )->all) { 
     137        $dep->get_column('depname') =~ /^rpmlib\(/ and next; 
     138        push(@conflicts, [ 
     139                $dep->get_column('depname'), 
     140                $dep->get_column('sense'), 
     141                $dep->get_column('evr') ]); 
     142    } 
     143 
     144    $c->forward('/analysis/solver/find_conflicts', 
     145        [ $distspec, \@conflicts, \@provides, $pool ]); 
     146} 
     147 
     148sub is_obsoleted : XMLRPC { 
     149    my ($self, $c, $distspec, $id, $pool) = @_; 
     150     
     151    my $pkg = $c->model('Base::UsersRpms')->find( 
     152        { id => $id } 
     153    ); 
     154 
     155    $c->forward('/analysis/solver/is_obsoleted', 
     156        [ $distspec, [ [ $pkg->name, '=', $pkg->evr ] ], $pool ] 
     157    ); 
     158} 
     159 
     160sub is_updated : XMLRPC { 
     161    my ($self, $c, $distspec, $id, $pool) = @_; 
     162    my $pkg = $c->model('Base::UsersRpms')->find( 
     163        { id => $id } 
     164    ); 
     165 
     166    $c->forward('/analysis/solver/is_updated', 
     167        [ $distspec, [ $pkg->name, '>=', $pkg->evr ], $pool ] 
     168    ); 
     169} 
     170 
     171sub files_conflicts : XMLRPC { 
     172    my ($self, $c, $distspec, $id, $pool) = @_; 
     173    my @files =  
     174        map { { $_->get_columns } }  
     175        grep { $_->dirname } 
     176        $c->model('Base::UsersFiles')->search( 
     177            { pid => $id } 
     178    ); 
     179 
     180    $c->forward('/analysis/solver/files_conflicts', 
     181        [ $distspec, \@files, $pool ] 
     182    ); 
    103183} 
    104184 
  • server/trunk/web/lib/Sophie/Controller/Analysis/Solver.pm

    r306 r310  
    2828} 
    2929 
    30 sub find_requirements : XMLRPC { 
     30sub solve_dependencies : Private { 
    3131    my ($self, $c, $searchspec, $over, $deplist, $pool) = @_; 
    3232 
     
    122122} 
    123123 
    124 sub parentdir : XMLRPC { 
     124sub find_requirements : Private { 
     125    my ($self, $c, $searchspec, $deplist, $pool) = @_; 
     126    $c->forward('solve_dependencies', [ $searchspec, 'P', $deplist, $pool ]); 
     127} 
     128 
     129sub find_conflicts : Private { 
     130    my ($self, $c, $searchspec, $conflicts, $provides, $pool) = @_; 
     131    my $resp = $c->forward('solve_dependencies', [ $searchspec, 'P', $conflicts, $pool ]); 
     132    my $resc = $c->forward('solve_dependencies', [ $searchspec, 'C', $provides,  $pool ]); 
     133    $c->stash->{xmlrpc} = { 
     134        pkg => [ @{ $resp->{pkg} }, @{ $resc->{pkg} } ], 
     135        pool => [ @{ $resp->{pool} }, @{ $resc->{pool} } ], 
     136    } 
     137} 
     138 
     139sub is_obsoleted : Private { 
     140    my ($self, $c, $searchspec, $deplist, $pool) = @_; 
     141    $c->forward('solve_dependencies', [ $searchspec, 'O', $deplist, $pool ]); 
     142} 
     143 
     144sub is_updated : Private { 
     145    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    } 
     151} 
     152 
     153sub files_conflicts : Private { 
     154    my ($self, $c, $searchspec, $files, $pool) = @_; 
     155 
     156    my %fc; 
     157    my %pkgid; 
     158    foreach my $file (@{ $files || []}) { 
     159        my $res = $c->forward('/search/file/byname', 
     160            [ $searchspec,  $file->{dirname} . $file->{basename} ]); 
     161        foreach (@{ $res }) { 
     162            if (($_->{md5} || '') eq ($file->{md5} || '')) { 
     163                next; 
     164            } 
     165            push(@{ $fc{$file->{dirname} . $file->{basename}}}, $_->{pkgid}); 
     166            $pkgid{$_->{pkgid}} = 1; 
     167        } 
     168    } 
     169    $c->stash->{xmlrpc} = { 
     170        pkg => [ keys %pkgid ], 
     171        byfile => \%fc, 
     172    } 
     173} 
     174 
     175sub parentdir : Private { 
    125176    my ($self, $c, $searchspec, $folder, $pool) = @_; 
    126177 
  • server/trunk/web/lib/Sophie/Controller/Rpms.pm

    r278 r310  
    565565 
    566566        $c->stash->{xmlrpc} = $c->forward( 
    567             '/analysis/solver/find_requirements', 
     567            '/analysis/solver/solve_dependencies', 
    568568            [ $dist, 
    569569                'P', \@deplist, [] ] 
  • server/trunk/web/lib/Sophie/Controller/User/Folder.pm

    r286 r310  
    128128                        ? $tags->{Dirnames}{string}[$tags->{Dirindexes}{integer}[$fcount]] 
    129129                        : ''), 
     130                    mode => $tags->{Filemodes}{integer}[$fcount], 
     131                    md5 => ref $tags->{Filedigests}{string}[$fcount]  
     132                        ? undef 
     133                        : $tags->{Filedigests}{string}[$fcount], 
    130134                } 
    131135            ); 
Note: See TracChangeset for help on using the changeset viewer.