diff --git a/genhdlist2-merge-option.patch b/rpmtools-6.1-genhdlist2-merge-option.patch similarity index 79% rename from genhdlist2-merge-option.patch rename to rpmtools-6.1-genhdlist2-merge-option.patch index a0a312f..7ead1c7 100644 --- a/genhdlist2-merge-option.patch +++ b/rpmtools-6.1-genhdlist2-merge-option.patch @@ -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() { ++ 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; } diff --git a/rpmtools.spec b/rpmtools.spec index 66c3da2..fba99cc 100644 --- a/rpmtools.spec +++ b/rpmtools.spec @@ -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/