Changeset 127
- Timestamp:
- 12/16/10 07:42:22 (13 years ago)
- Location:
- server/trunk/web
- Files:
-
- 3 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
server/trunk/web/lib/Sophie/Controller/Analysis.pm
r125 r127 2 2 use Moose; 3 3 use namespace::autoclean; 4 use XML::Simple;5 use MIME::Base64;6 4 7 5 BEGIN {extends 'Catalyst::Controller'; } … … 30 28 } 31 29 32 sub load_rpm : XMLRPCLocal {33 my ($self, $c, $string) = @_;34 35 my $ref = XMLin($string, ForceArray => 1);36 my $tags = $ref->{rpmTag} or return;37 38 39 my $User = $c->user40 ? $c->model('Base')->resultset('Users')->find( { mail => $c->user->mail } )41 : undef;42 $c->session;43 $c->store_session_data('session:' . $c->sessionid, $c->session);44 45 my $pkgid = unpack('H*',MIME::Base64::decode($tags->{Sigmd5}{base64}[0]));46 47 my $newrpm = $c->model('Base::UsersRpms')->create(48 {49 name => $tags->{Name}{string}[0],50 evr => sprintf('%s%s-%s',51 defined($tags->{Epoch}{integer}[0]) ?52 $tags->{Epoch}{integer}[0] . ':' : '',53 $tags->{Version}{string}[0],54 $tags->{Release}{string}[0],55 ),56 user_fkey => $User,57 sessions_fkey => 'session:' . $c->sessionid,58 pkgid => $pkgid,59 }60 );61 {62 my @populate;63 foreach my $fcount (0 .. $#{$tags->{Basenames}{string}}) {64 push(@populate,65 {66 pid => $newrpm->id,67 basename => $tags->{Basenames}{string}[$fcount],68 dirname => $tags->{Dirnames}{string}[69 $tags->{Dirindexes}{integer}[$fcount]70 ],71 }72 );73 }74 $c->model('Base::UsersFiles')->populate(\@populate) if(@populate);75 }76 {77 my @populate;78 foreach my $dtype (qw(Provide Require Conflict Obsolete Suggest Enhanced)) {79 my $initial = substr($dtype, 0, 1);80 $tags->{"${dtype}name"} or next;81 foreach my $fcount (0 .. $#{$tags->{"${dtype}name"}{string}}) {82 push(@populate,83 {84 pid => $newrpm->id,85 deptype => $initial,86 depname => $tags->{"${dtype}name"}{string}[$fcount],87 evr => ref $tags->{"${dtype}version"}{string}[$fcount]88 ? ''89 : $tags->{"${dtype}version"}{string}[$fcount],90 flags => $tags->{"${dtype}flags"}{integer}[$fcount] || 0,91 }92 );93 }94 }95 $c->model('Base::UsersDeps')->populate(\@populate) if(@populate);96 }97 $c->model('Base')->storage->dbh->commit;98 99 $c->stash->{xmlrpc} = $newrpm->id;100 }101 102 30 sub find_requirements : XMLRPC { 103 31 my ($self, $c, $string) = @_; 104 32 105 my $id = $c->forward(' load_rpm', [ $string ]);33 my $id = $c->forward('/user/folder/load_rpm', [ $string ]); 106 34 107 35 my @deplist; … … 124 52 } 125 53 126 $c->forward('/analysis/solver/find_requirements', [ {}, 'P', \@deplist ]);54 $c->forward('/analysis/solver/find_requirements', [ {}, 'P', \@deplist, $id ]); 127 55 } 128 56 -
server/trunk/web/lib/Sophie/Controller/Analysis/Solver.pm
r125 r127 29 29 30 30 sub find_requirements : XMLRPC { 31 my ($self, $c, $searchspec, $over, $deplist ) = @_;31 my ($self, $c, $searchspec, $over, $deplist, $pool) = @_; 32 32 33 33 $searchspec->{nopager} = 1; 34 34 my %need_pkgid; 35 my %need_pool; 35 36 my @unresolved; 36 37 foreach my $dep (@{ $deplist || []}) { … … 42 43 43 44 $depname =~ /^rpmlib\(/ and next; 44 my $res = $c->forward('/search/bydep', [ $searchspec, $over, 45 $depname, 46 $sense, 47 $evr ]); 48 if (@{$res->{results}}) { 49 foreach (@{$res->{results}}) { 50 $need_pkgid{$_} = 1; 45 my $found = 0; 46 if ($depname =~ /^\//) { 47 my $res = $c->forward('/search/byfile', [ $searchspec, $depname, ]); 48 if (@{$res->{results}}) { 49 $found = 1; 50 foreach (@{$res->{results}}) { 51 $need_pkgid{$_} = 1; 52 } 53 } 54 if ($pool) { 55 $res = $c->forward('/user/folder/byfile', [ $pool, $depname, ]); 56 if (@{$res}) { 57 $found = 1; 58 foreach (@{$res}) { 59 $need_pool{$_} = 1; 60 } 61 } 51 62 } 52 63 } else { 64 my $res = $c->forward('/search/bydep', [ $searchspec, $over, 65 $depname, 66 $sense, 67 $evr ]); 68 if (@{$res->{results}}) { 69 $found = 1; 70 foreach (@{$res->{results}}) { 71 $need_pkgid{$_} = 1; 72 } 73 } 74 if ($pool) { 75 $res = $c->forward('/user/folder/bydep', [ $pool, $over, 76 $depname, 77 $sense, 78 $evr ] 79 ); 80 if (@{$res}) { 81 $found = 1; 82 foreach (@{$res}) { 83 $need_pool{$_} = 1; 84 } 85 } 86 } 87 } 88 if (!$found) { 53 89 push(@unresolved, 54 90 $depname . ( … … 64 100 unresolved => \@unresolved, 65 101 pkg => [ keys %need_pkgid ], 102 pool => [ keys %need_pool ], 66 103 }; 67 104 }
Note: See TracChangeset
for help on using the changeset viewer.