Changeset 314
- Timestamp:
- 01/16/11 05:46:06 (13 years ago)
- Location:
- server/trunk/web/lib/Sophie/Controller
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
server/trunk/web/lib/Sophie/Controller/Analysis.pm
r311 r314 102 102 } 103 103 104 sub 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 104 129 sub find_conflicts : XMLRPC { 105 130 my ($self, $c, $distspec, $id, $pool) = @_; … … 144 169 $c->forward('/analysis/solver/find_conflicts', 145 170 [ $distspec, \@conflicts, \@provides, $pool ]); 171 } 172 173 sub 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 ); 146 183 } 147 184 -
server/trunk/web/lib/Sophie/Controller/Analysis/Solver.pm
r310 r314 122 122 } 123 123 124 sub 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 124 164 sub find_requirements : Private { 125 165 my ($self, $c, $searchspec, $deplist, $pool) = @_; … … 144 184 sub is_updated : Private { 145 185 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 189 sub find_obsoletes : Private { 190 my ($self, $c, $searchspec, $deplist, $pool) = @_; 191 $c->forward('solve_name', [ $searchspec, $deplist ], $pool); 151 192 } 152 193
Note: See TracChangeset
for help on using the changeset viewer.