aboutsummaryrefslogtreecommitdiffstats
path: root/genfilelist
diff options
context:
space:
mode:
Diffstat (limited to 'genfilelist')
-rwxr-xr-xgenfilelist112
1 files changed, 0 insertions, 112 deletions
diff --git a/genfilelist b/genfilelist
deleted file mode 100755
index 53bd543..0000000
--- a/genfilelist
+++ /dev/null
@@ -1,112 +0,0 @@
-#!/usr/bin/perl
-
-#- Generate filelist with obseletes packages.
-#- Copyright (C) 2000 MandrakeSoft (fpons@mandrakesoft.com)
-#-
-#- This program is free software; you can redistribute it and/or modify
-#- it under the terms of the GNU General Public License as published by
-#- the Free Software Foundation; either version 2, or (at your option)
-#- any later version.
-#-
-#- This program is distributed in the hope that it will be useful,
-#- but WITHOUT ANY WARRANTY; without even the implied warranty of
-#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#- GNU General Public License for more details.
-#-
-#- You should have received a copy of the GNU General Public License
-#- along with this program; if not, write to the Free Software
-#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-#- usage is:
-#- genfilelist <rpms_dir>
-
-
-#+use strict qw(subs vars refs);
-
-sub packfilelist {
- my %countdir = ();
- my @commonparts;
-
- #- search for common parts of name.
- foreach (@_) {
- my $filename = $_;
- foreach (4..length($filename)) {
- ++$countdir{substr($filename, 0, $_)};
- }
- }
-
- my @costlysort = (sort { $countdir{$b} <=> $countdir{$a} || ($countdir{$b} == $countdir{$a} && length($b) <=> length($a)) }
- grep { $countdir{$_} > 2 }
- keys %countdir);
-
- #- pass 1: recompute counter.
- foreach (grep { length($_) > 4 } @costlysort) {
- my $filepart = $_;
- foreach (4..length($filepart)-1) {
- my $subpart = substr($filepart, 0, $_);
- if (length($subpart) * $countdir{$subpart} < length($filepart) * $countdir{$filepart}) {
- $countdir{$subpart} -= $countdir{$filepart} if $countdir{$filepart} > 0;
- } else {
- $countdir{$filepart} -= $countdir{$subpart} if $countdir{$subpart} > 0;
- }
- }
- }
-
- #- pass 2: filter out overstring.
- foreach (grep { length($_) > 4 && $countdir{$_} > 2 } reverse @costlysort) {
- my $filepart = $_;
- foreach (4..length($filepart)-1) {
- delete $countdir{substr($filepart, 0, $_)};
- }
- }
-
- #- pass 3: get result.
- foreach (grep { $countdir{$_} > 2 } @costlysort) {
- push @commonparts, $_ if @commonparts < 10;
- }
-
- @commonparts;
-}
-
-#- main program.
-sub main {
- my ($rpms_dir) = @_;
- my (@filelist, @obsoletes) = ();
-
- local *RPM_QA;
- open RPM_QA, "rpm -qp --queryformat \"#\%{NAME}\\n\" --obsoletes -l $rpms_dir/*.rpm |";
- foreach (<RPM_QA>) {
- if (/^\#/) {
- #- work on previous obsoletes and filelist.
- genfilelist(\@filelist, \@obsoletes);
-
- (@filelist, @obsoletes) = ();
-
- print $_;
- } else {
- chomp;
- m|^/| ? push(@filelist, $_) : push(@obsoletes, $_);
- }
- }
- genfilelist(\@filelist, \@obsoletes);
-}
-
-sub genfilelist {
- my ($filelist, $obsoletes) = @_;
- my @commonparts = packfilelist(@$filelist);
-
- foreach (@$obsoletes) { print "*$_\n" }
- foreach (@commonparts) { print "=$_\n" } #- commonparts are printed in from 0 to n-1.
- foreach my $filename (@$filelist) {
- map {
- if (substr($filename, 0, length($commonparts[$_])) eq $commonparts[$_]) {
- print $_ . substr($filename, length($commonparts[$_])) . "\n"; next;
- }
- } (0..$#commonparts);
- print " $filename\n";
- }
-}
-
-foreach (@ARGV) {
- main($_);
-}