mirror of
https://abf.rosa.ru/djam/rpmtools.git
synced 2025-02-23 19:02:49 +00:00
Improve --merge option - take lists of new files
This commit is contained in:
parent
7fd3753f48
commit
e377fa54f2
2 changed files with 52 additions and 27 deletions
|
@ -1,5 +1,6 @@
|
|||
--- rpmtools-6.1/genhdlist2.orig 2014-09-04 17:08:28.206952531 +0400
|
||||
+++ rpmtools-6.1/genhdlist2 2014-09-04 17:09:17.288544389 +0400
|
||||
diff -Naur rpmtools-6.1.orig/genhdlist2 rpmtools-6.1/genhdlist2
|
||||
--- rpmtools-6.1.orig/genhdlist2 2014-09-15 15:16:01.897360790 +0400
|
||||
+++ rpmtools-6.1/genhdlist2 2014-09-15 15:46:49.418356137 +0400
|
||||
@@ -5,6 +5,7 @@
|
||||
use URPM;
|
||||
use MDV::Packdrakeng;
|
||||
|
@ -43,24 +44,37 @@
|
|||
#- handle old-rpms.lst
|
||||
my $old_rpms_file = "$media_info_dir/old-rpms.lst";
|
||||
my $old_rpms = read_old_rpms_lst($old_rpms_file, $options{nolock});
|
||||
@@ -102,7 +108,6 @@
|
||||
@@ -102,8 +108,21 @@
|
||||
}
|
||||
$options{only_clean_old_rpms} and return;
|
||||
|
||||
-
|
||||
my %rpms_todo = map { /(.*)\.rpm/ => 1 } @rpms;
|
||||
- my %rpms_todo = map { /(.*)\.rpm/ => 1 } @rpms;
|
||||
+ my %rpms_todo;
|
||||
+ if ($options{merge} && -e "$media_info_dir/new-metadata.lst") {
|
||||
+ my $new_metadata_file = "$media_info_dir/new-metadata.lst";
|
||||
+ open(N, "$media_info_dir/new-metadata.lst");
|
||||
+ while(<N>) {
|
||||
+ chomp;
|
||||
+ my $pkg = $_;
|
||||
+ $pkg =~ s/\.rpm$//;
|
||||
+ $rpms_todo{$pkg} = 1;
|
||||
+ }
|
||||
+ close(N);
|
||||
+ }
|
||||
+ else {
|
||||
+ %rpms_todo = map { /(.*)\.rpm/ => 1 } @rpms;
|
||||
+ }
|
||||
|
||||
my $urpm = new URPM;
|
||||
@@ -114,16 +119,66 @@
|
||||
|
||||
@@ -114,16 +133,62 @@
|
||||
}
|
||||
my @xml_media_info = $options{xml_info} ? ('info', 'files', 'changelog') : ();
|
||||
|
||||
- build($urpm, \%rpms_todo, $media_info_dir, $rpms_dir, \@xml_media_info, $options{no_incremental}, $options{no_hdlist}, $xml_info_suffix, $xml_info_filter);
|
||||
+
|
||||
+ #- handle old-metadata.lst - drop packages listed there from metadata
|
||||
+ if ($options{merge} ) {
|
||||
+ my $old_metadata_file = "$media_info_dir/old-metadata.lst";
|
||||
+
|
||||
+ # Unpack all files to be processed
|
||||
+ my @files_to_clean = ("synthesis.hdlist$synthesis_suffix", map { "$_.xml$xml_info_suffix" } @xml_media_info);
|
||||
+ foreach my $name (@xml_media_info) {
|
||||
|
@ -68,20 +82,20 @@
|
|||
+ }
|
||||
+ system("$synthesis_filter -d -S $synthesis_suffix $media_info_dir/synthesis.hdlist$synthesis_suffix") == 0 or die("Failed to unpack synthesis file");
|
||||
+
|
||||
+ print "removing obsolete metadata...\n" if $verbose >= 0;
|
||||
+ filter_out_old_metadata($media_info_dir, $old_metadata_file, "$media_info_dir/synthesis.hdlist");
|
||||
+ my $old_metadata_file = "$media_info_dir/old-metadata.lst";
|
||||
+ if (-e $old_metadata_file) {
|
||||
+ print "removing obsolete metadata...\n" if $verbose >= 0;
|
||||
+ filter_out_old_metadata($media_info_dir, $old_metadata_file, "$media_info_dir/synthesis.hdlist");
|
||||
+
|
||||
+ # Rename the temporary metadata files
|
||||
+ foreach my $name (@xml_media_info) {
|
||||
+ rename "$media_info_dir/$name.xml.tmp", "$media_info_dir/$name.xml" or die "rename $media_info_dir/$name.xml.tmp failed: $!\n";
|
||||
+ # Rename the temporary metadata files
|
||||
+ foreach my $name (@xml_media_info) {
|
||||
+ rename "$media_info_dir/$name.xml.tmp", "$media_info_dir/$name.xml" or die "rename $media_info_dir/$name.xml.tmp failed: $!\n";
|
||||
+ }
|
||||
+ rename "$media_info_dir/synthesis.hdlist.tmp", "$media_info_dir/synthesis.hdlist" or die "rename $media_info_dir/$name.xml.tmp failed: $!\n";
|
||||
+ }
|
||||
+ rename "$media_info_dir/synthesis.hdlist.tmp", "$media_info_dir/synthesis.hdlist" or die "rename $media_info_dir/$name.xml.tmp failed: $!\n";
|
||||
+
|
||||
+# return;
|
||||
+ }
|
||||
+
|
||||
+ my $dump_header = $options{merge} ? 0 : 1;
|
||||
+ build($urpm, \%rpms_todo, $media_info_dir, $rpms_dir, \@xml_media_info, $options{no_incremental}, $options{no_hdlist}, $xml_info_suffix, $xml_info_filter, $dump_header);
|
||||
+ build($urpm, \%rpms_todo, $media_info_dir, $rpms_dir, \@xml_media_info, $options{no_incremental}, $options{no_hdlist}, $xml_info_suffix, $xml_info_filter, $options{merge});
|
||||
build_synthesis($urpm, "$synthesis.tmp", $synthesis_filter);
|
||||
|
||||
if (1) {
|
||||
|
@ -94,15 +108,14 @@
|
|||
+ print "Merging metadata...\n";
|
||||
+ if ($name =~/^synthesis.hdlist/) {
|
||||
+ os.system("$synthesis_filter -dc -S $synthesis_suffix $media_info_dir/$name.tmp >> $media_info_dir/synthesis.hdlist" );
|
||||
+ unlink "$media_info_dir/synthesis.hdlist$synthesis_suffix.tmp";
|
||||
+ }
|
||||
+ else {
|
||||
+ my $clear_name = $name;
|
||||
+ $clear_name =~ s/$xml_info_suffix//;
|
||||
+ os.system("sed -i '/<\\/media_info>/d' $media_info_dir/$clear_name") == 0 or die("Failed to drop leading tag from $clear_name");
|
||||
+ os.system("$xml_info_filter -dc -S $xml_info_suffix $media_info_dir/$name.tmp >> $media_info_dir/$clear_name" ) == 0 or die("Failed to concat $name.tmp with $clear_name");
|
||||
+ unlink "$media_info_dir/$name.tmp";
|
||||
+ }
|
||||
+ unlink "$media_info_dir/$name.tmp";
|
||||
+ }
|
||||
+ else {
|
||||
+ print "replacing $media_info_dir/$name with $name.tmp\n" if $verbose >= 0;
|
||||
|
@ -121,16 +134,19 @@
|
|||
my $existed = remove_versioned_media_info($media_info_dir);
|
||||
if ($options{versioned} && ($options{versioned} ne 'auto' || $existed)) {
|
||||
push @media_info_files, generate_versioned_media_info($media_info_dir, \@media_info_files);
|
||||
@@ -161,7 +216,7 @@
|
||||
@@ -161,9 +226,10 @@
|
||||
}
|
||||
|
||||
sub build {
|
||||
- my ($urpm, $rpms_todo, $media_info_dir, $rpms_dir, $xml_media_info, $b_no_incremental, $b_no_hdlist, $xml_info_suffix, $xml_info_filter) = @_;
|
||||
+ my ($urpm, $rpms_todo, $media_info_dir, $rpms_dir, $xml_media_info, $b_no_incremental, $b_no_hdlist, $xml_info_suffix, $xml_info_filter, $dump_header) = @_;
|
||||
+ my ($urpm, $rpms_todo, $media_info_dir, $rpms_dir, $xml_media_info, $b_no_incremental, $b_no_hdlist, $xml_info_suffix, $xml_info_filter, $b_merge) = @_;
|
||||
|
||||
my $hdlist = "$media_info_dir/hdlist.cz";
|
||||
+ my $dump_header = $b_merge ? 0 : 1;
|
||||
|
||||
@@ -178,7 +233,7 @@
|
||||
my $out_hdlist;
|
||||
if (!$b_no_hdlist) {
|
||||
@@ -178,7 +244,7 @@
|
||||
|
||||
my $out = {
|
||||
hdlist => $out_hdlist,
|
||||
|
@ -139,7 +155,16 @@
|
|||
};
|
||||
|
||||
if (-e $hdlist && !$b_no_incremental) {
|
||||
@@ -246,12 +301,14 @@
|
||||
@@ -186,7 +252,7 @@
|
||||
filter_existing_hdlist($urpm, $rpms_todo, $hdlist, $out);
|
||||
}
|
||||
|
||||
- add_new_rpms_to_hdlist($urpm, $rpms_todo, $out, $rpms_dir);
|
||||
+ add_new_rpms_to_hdlist($urpm, $rpms_todo, $out, $rpms_dir, $b_merge);
|
||||
|
||||
close_xml($out->{$_}) foreach @$xml_media_info;
|
||||
}
|
||||
@@ -246,12 +312,14 @@
|
||||
}
|
||||
|
||||
sub open_xml_filter {
|
||||
|
@ -157,7 +182,7 @@
|
|||
$F;
|
||||
}
|
||||
|
||||
@@ -504,6 +561,59 @@
|
||||
@@ -504,6 +572,59 @@
|
||||
|
||||
@$rpms_list = grep { !$old{$_} } @$rpms_list;
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
Summary: Various RPM command-line tools
|
||||
Name: rpmtools
|
||||
Version: 6.1
|
||||
Release: 11
|
||||
Release: 12
|
||||
Source0: %{name}-%{version}.tar.xz
|
||||
# (tpg) from Mageia
|
||||
# http://svnweb.mageia.org/soft?view=revision&revision=6438
|
||||
Patch0: rpmtools-6.1-use-external-gzip.patch
|
||||
Patch1: genhdlist2-merge-option.patch
|
||||
Patch1: rpmtools-6.1-genhdlist2-merge-option.patch
|
||||
License: GPLv2+
|
||||
Group: System/Configuration/Packaging
|
||||
URL: http://svn.mandriva.com/cgi-bin/viewvc.cgi/soft/rpm/rpmtools/
|
||||
|
|
Loading…
Add table
Reference in a new issue