Changeset 312
- Timestamp:
- 01/15/11 20:58:49 (13 years ago)
- Location:
- tools/trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/trunk/MANIFEST
r301 r312 5 5 bin/sophie-rpm 6 6 lib/Sophie/Client.pm 7 lib/Sophie/Client/Transaction.pm -
tools/trunk/bin/sophie-rpm
r309 r312 136 136 $sc->login; 137 137 138 my %rpmid; 138 my $ts = $sc->ts($distrib); 139 139 140 foreach my $rpm (@ARGV) { 140 my $string = `rpm -qp --qf '[%{*:xml}\n]' $rpm`; 141 $string =~ s:<rpmTag name="Changelogname">(.*?)</rpmTag>::sm; 142 $string =~ s:<rpmTag name="Changelogtext">(.*?)</rpmTag>::sm; 143 $string =~ s:<rpmTag name="Changelogtime">(.*?)</rpmTag>::sm; 144 warn "Loading $rpm\n"; 145 146 my $res = $sc->send_request('user.folder.load_rpm', 147 RPC::XML::base64->new($string)); 148 if (ref $res && ! $res->is_fault) { 149 $rpmid{$res->value} = $rpm; 150 } else { 151 die((ref $res ? $res->string : $res) . "\n"); 152 } 141 $ts->add_rpm($rpm) or die "Cannot add $rpm"; 153 142 } 154 143 155 my %pool; 156 { 157 foreach (@{ $sc->send_request('user.folder.list')->value }) { 158 $pool{$_->{id}} = $_->{name} . '-' . $_->{evr}; 159 } 160 } 161 162 my @unresolved; 163 my @dirnotfound; 164 foreach my $rpmid (keys %rpmid) { 165 warn "Analysing $rpmid{$rpmid}\n"; 166 my $analyse = $sc->send_request('analysis.find_requirements', 167 $distrib, 168 $rpmid, 169 [ keys %rpmid ], 170 ); 171 if (ref $analyse && !$analyse->is_fault) { 172 my $result = $analyse->value; 173 if ($verbose) { 174 print "\nPackage requirements\n"; 175 foreach my $dep (keys %{ $result->{bydep} }) { 176 print $dep . ":\n"; 177 foreach (@{ $result->{bydep}{$dep}{pkg} || []}) { 178 print " " . $sc->send_request('rpms.basicinfo', $_)->value->{filename}; 179 print "\n"; 180 } 181 foreach (@{ $result->{bydep}{$dep}{pool} || [] }) { 182 print " * " . $pool{$_} . "\n"; 183 } 184 } 185 } 186 if (@{ $result->{unresolved} || []}) { 187 push(@unresolved, @{ $result->{unresolved} }); 188 print "\nAre unresolved:\n"; 189 print map { " $_\n" } @{ $result->{unresolved} }; 190 } 191 } 192 my $diranalyse = $sc->send_request('analysis.parentdir', 193 $distrib, 194 $rpmid, 195 [ keys %rpmid ], 196 ); 197 if (ref $diranalyse && !$diranalyse->is_fault) { 198 my $result = $diranalyse->value; 199 if ($verbose) { 200 print "\nParent directories:\n"; 201 foreach my $dir (sort keys %{ $result->{bydir} }) { 202 print $dir . ":\n"; 203 if (@{ $result->{bydir}{$dir}{pkg} || []} > 3) { 204 print " " . scalar(@{ $result->{bydir}{$dir}{pkg} || []}) . 205 " results in the distribution...\n"; 206 } else { 207 foreach (@{ $result->{bydir}{$dir}{pkg} || []}) { 208 print " " . $sc->send_request('rpms.basicinfo', $_)->value->{filename}; 209 print "\n"; 210 } 211 } 212 foreach (@{ $result->{bydir}{$dir}{pool} || [] }) { 213 print " * " . $pool{$_} . "\n"; 214 } 215 } 216 } 217 if (@{ $result->{notfound} || []}) { 218 push(@dirnotfound, @{ $result->{notfound} }); 219 print "\nUnowned directories:\n"; 220 print map { " $_\n" } @{ $result->{notfound} }; 221 } 222 } 223 print "\n"; 224 } 225 226 $sc->send_request('user.folder.clear'); 227 228 if (@dirnotfound) { 229 print "Warning, this directory are not owned by any package:\n"; 230 print map { " $_\n" } @dirnotfound; 231 print "\n"; 232 } 233 if (@unresolved) { 234 print "Error, unresolved:\n"; 235 print map { " $_\n" } @unresolved; 236 print "\n"; 237 if ($search) { 238 print "\nSearching depedencies in sophie\n"; 239 foreach my $dep (@unresolved) { 240 my $res = $sc->send_request( 241 'search.rpm.bydep', $searchsp, 'P', split(' ', $dep) 242 ); 243 if (ref $res && !$res->is_fault) { 244 print "$dep: " . $res->value->{total_entries} . " results\n"; 245 foreach (@{ $res->value->{results} }) { 246 print " " . $sc->send_request('rpms.basicinfo', $_)->value->{filename}; 247 print "\n"; 248 } 144 my $res = $ts->run; 145 $ts->summary if (@ARGV > 1); 146 print "\nThis transaction would failed\n" if(!$res); 147 if ($search) { 148 print "\nSearching depedencies in sophie\n"; 149 foreach my $dep (@{ $ts->{unresolved}} ) { 150 my $res = $sc->send_request( 151 'search.rpm.bydep', $searchsp, 'P', split(' ', $dep) 152 ); 153 if (ref $res && !$res->is_fault) { 154 print "$dep: " . $res->value->{total_entries} . " results\n"; 155 foreach (@{ $res->value->{results} }) { 156 print " " . $sc->send_request('rpms.basicinfo', $_)->value->{filename}; 157 print "\n"; 249 158 } 250 159 } 251 160 } 252 exit(1);253 } else {254 print "No Error found\n";255 exit(0);256 161 } 257 162 exit($res ? 0 : 1); 258 163 259 164 =head1 AUTHOR -
tools/trunk/lib/Sophie/Client.pm
r300 r312 6 6 use RPC::XML; 7 7 use base qw(RPC::XML::Client); 8 use Sophie::Client::Transaction; 8 9 $RPC::XML::FORCE_STRING_ENCODING = 1; 9 10 … … 56 57 } 57 58 59 sub ts { 60 my ($self, $distrib) = @_; 61 return Sophie::Client::Transaction->new($self, $distrib); 62 } 58 63 59 64 1;
Note: See TracChangeset
for help on using the changeset viewer.