mirror of
https://abf.rosa.ru/djam/urpm-tools.git
synced 2025-02-23 17:32:46 +00:00
URPM-repoclosure 1.4.3: added --update-hdlists option.
This commit is contained in:
parent
303ac24bc4
commit
d780478b03
1 changed files with 60 additions and 22 deletions
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/perl
|
||||
########################################################
|
||||
# URPM Repo Closure Checker 1.4.2 for Linux
|
||||
# URPM Repo Closure Checker 1.4.3 for Linux
|
||||
# A tool for checking closure of a set of RPM packages
|
||||
#
|
||||
# Copyright (C) 2011-2012 ROSA Laboratory
|
||||
|
@ -38,12 +38,12 @@ use File::Copy qw(copy move);
|
|||
use Data::Dumper;
|
||||
use strict;
|
||||
|
||||
my $TOOL_VERSION = "1.4.2";
|
||||
my $TOOL_VERSION = "1.4.3";
|
||||
my $CmdName = get_filename($0);
|
||||
|
||||
my ($Help, $ShowVersion, $RPMlist, $RPMdir, $StaticMode,
|
||||
$DynamicMode, $NoClean, $HDlist, $FileDeps, $ReportDir,
|
||||
$AddRPMs, $RTitle, $DepHDlists);
|
||||
$AddRPMs, $RTitle, $DepHDlists, $UpdateHDlists);
|
||||
|
||||
my $ShortUsage = "URPM Repo Closure Checker $TOOL_VERSION
|
||||
A tool for checking closure of a set of RPM packages
|
||||
|
@ -72,7 +72,8 @@ GetOptions("h|help!" => \$Help,
|
|||
"noclean!" => \$NoClean,
|
||||
"report-dir=s" => \$ReportDir,
|
||||
"title=s" => \$RTitle,
|
||||
"dep-hdlists=s" => \$DepHDlists
|
||||
"dep-hdlists=s" => \$DepHDlists,
|
||||
"update-hdlists=s" => \$UpdateHDlists
|
||||
) or ERR_MESSAGE();
|
||||
|
||||
my %EXIT_CODES = (
|
||||
|
@ -135,6 +136,9 @@ OPTIONS:
|
|||
-dep-hdlists <path>
|
||||
The list of HDlists that will
|
||||
be used to resolve dependencies.
|
||||
|
||||
-update-hdlists <path>
|
||||
The list of HDlists from update repositories.
|
||||
|
||||
EXIT CODES:
|
||||
0 - Suceess. The tool has run without any errors
|
||||
|
@ -657,13 +661,14 @@ sub readDeps($$$)
|
|||
}
|
||||
}
|
||||
|
||||
sub readHDlist($$$$)
|
||||
sub readHDlist($$$$$)
|
||||
{
|
||||
my ($Path, $Dep, $RPMdep, $AddedRPMs) = @_;
|
||||
my ($Path, $Dep, $RPMdep, $Registered, $Kind) = @_;
|
||||
|
||||
my $Content = "";
|
||||
if($Path=~/(http|https|ftp):\/\//)
|
||||
{
|
||||
print "Downloading HDlist ...\n";
|
||||
print "Downloading $Kind HDlist ...\n";
|
||||
my $DownloadTo = $TMP_DIR."/extract/".get_filename($Path);
|
||||
$DownloadTo=~s/\.cz/\.gz/g; # cz == gz
|
||||
my $Dir = get_dirname($DownloadTo);
|
||||
|
@ -716,7 +721,14 @@ sub readHDlist($$$$)
|
|||
}
|
||||
$Content = readFile($Path);
|
||||
}
|
||||
print "Checking HDlist ...\n";
|
||||
print "Reading $Kind HDlist ...\n";
|
||||
|
||||
my $TKind = $Kind;
|
||||
if($TKind eq "Update") {
|
||||
$TKind = "Target";
|
||||
}
|
||||
|
||||
my %PkgName = ();
|
||||
my $Name = "";
|
||||
foreach (reverse(split(/\n/, $Content)))
|
||||
{
|
||||
|
@ -725,19 +737,28 @@ sub readHDlist($$$$)
|
|||
my $Type = shift(@Parts);
|
||||
if($Type eq "info")
|
||||
{
|
||||
if($Kind eq "Update")
|
||||
{
|
||||
if($Name)
|
||||
{ # register previous
|
||||
$Registered->{$TKind}{$PkgName{$Name}} = 1;
|
||||
}
|
||||
}
|
||||
$Name = $Parts[0];
|
||||
next;
|
||||
}
|
||||
if($AddRPMs)
|
||||
if(my $PName = parse_RPMname($Name))
|
||||
{
|
||||
if(my $PName = parse_RPMname($Name))
|
||||
$PkgName{$Name} = $PName;
|
||||
if($Kind eq "Target")
|
||||
{
|
||||
if($AddedRPMs->{$PName})
|
||||
if($Registered->{$TKind}{$PName})
|
||||
{ # already added
|
||||
next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($Type=~/\A(requires|provides|suggests)\Z/)
|
||||
{
|
||||
foreach my $D (@Parts)
|
||||
|
@ -749,6 +770,13 @@ sub readHDlist($$$$)
|
|||
}
|
||||
}
|
||||
}
|
||||
if($Kind eq "Update")
|
||||
{
|
||||
if($Name)
|
||||
{ # register last
|
||||
$Registered->{$TKind}{$PkgName{$Name}} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub staticCheck()
|
||||
|
@ -758,7 +786,7 @@ sub staticCheck()
|
|||
print STDERR "ERROR: --hdlist, --dir or --list option should be specified\n";
|
||||
exit(1);
|
||||
}
|
||||
my (%Dep, %RPMdep, %AddedRPMs) = ();
|
||||
my (%Dep, %RPMdep, %Registered) = ();
|
||||
my (%Dep_D, %RPMdep_D) = ();
|
||||
if($AddRPMs)
|
||||
{
|
||||
|
@ -773,11 +801,23 @@ sub staticCheck()
|
|||
{
|
||||
readDeps($Path, \%Dep, \%RPMdep);
|
||||
if(my $Name = get_RPMname($Path)) {
|
||||
$AddedRPMs{$Name}=1;
|
||||
$Registered{$Name} = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if($UpdateHDlists)
|
||||
{
|
||||
if(not -f $UpdateHDlists)
|
||||
{
|
||||
print STDERR "ERROR: cannot access \'$UpdateHDlists\'\n";
|
||||
exit(1);
|
||||
}
|
||||
foreach my $Url (split(/\s+/, readFile($UpdateHDlists))) {
|
||||
readHDlist($Url, \%Dep, \%RPMdep, \%Registered, "Update");
|
||||
}
|
||||
|
||||
}
|
||||
if($RPMdir or $RPMlist)
|
||||
{
|
||||
print "Checking RPMs ...\n";
|
||||
|
@ -796,21 +836,18 @@ sub staticCheck()
|
|||
}
|
||||
foreach my $Path (@RPMs)
|
||||
{
|
||||
if($AddRPMs)
|
||||
if(my $Name = get_RPMname($Path))
|
||||
{
|
||||
if(my $Name = get_RPMname($Path))
|
||||
{
|
||||
if($AddedRPMs{$Name})
|
||||
{ # already added
|
||||
next;
|
||||
}
|
||||
if($Registered{$Name})
|
||||
{ # already added
|
||||
next;
|
||||
}
|
||||
}
|
||||
readDeps($Path, \%Dep, \%RPMdep);
|
||||
}
|
||||
}
|
||||
elsif($HDlist) {
|
||||
readHDlist($HDlist, \%Dep, \%RPMdep, \%AddedRPMs);
|
||||
readHDlist($HDlist, \%Dep, \%RPMdep, \%Registered, "Target");
|
||||
}
|
||||
|
||||
if($DepHDlists)
|
||||
|
@ -821,7 +858,7 @@ sub staticCheck()
|
|||
exit(1);
|
||||
}
|
||||
foreach my $Url (split(/\s+/, readFile($DepHDlists))) {
|
||||
readHDlist($Url, \%Dep_D, \%RPMdep_D, \%AddedRPMs);
|
||||
readHDlist($Url, \%Dep_D, \%RPMdep_D, \%Registered, "Dep");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1045,6 +1082,7 @@ table.report th {
|
|||
}
|
||||
table.report td {
|
||||
text-align:left;
|
||||
padding-right:15px;
|
||||
}";
|
||||
|
||||
my $Footer = "<hr/><div style='width:99%;font-size:11px;' align='right'><i>Generated on ".(localtime time);
|
||||
|
|
Loading…
Add table
Reference in a new issue