havner <[EMAIL PROTECTED]> [10-08-2004 17:31]:
> On Tuesday 10 August 2004 09:30, Marcin Doliński wrote:
> > > Wiekszosc to braki na amd64 i trzeba to dobudowac...
[...]
> I czy nie moge sie tego skryptu doprosic??

> cat main-niepelne | check [sprawdzajacy spece w ~/rpm/SPECS] > 
> lista_NAPRAWDE_niepelnych

> Nie ma tu jakiegos programisty perla czy innego pythona? Naprawde by mi to 
> ulatwilo prace...

W załączniku.  Dane na STDIN lub nazwa pliku jako argument.  Dopasuj
ostatnią linię do swoich potrzeb (sposób wypisywania).  Ignoruje daty.

-- 
Radosław Zieliński <[EMAIL PROTECTED]>
[ GPG key: http://radek.karnet.pl/ ]
#!/usr/bin/perl -wl
use strict;

my $specsdir = "$ENV{HOME}/rpm/SPECS";
my @archs    = qw(i386 i586 i686 athlon alpha ppc sparc amd64);
my @archs86  = qw(i386 i586 i686 athlon);
my %pakiety;

while (<>) {
        my (undef, undef, undef, $nazwa, @arch) = split /\s+/;
        warn "więcej niż jeden wpis dla pakietu $nazwa!\n"
          if exists $pakiety{$nazwa};
        $pakiety{$nazwa} = { map { ; $_ => 1 } @arch };
}

for my $pakiet (keys %pakiety) {
        my $spec = "$specsdir/$pakiet.spec";
        if (-e $spec) {
                open my $F, $spec or die "open $spec: $!";
                my @exarch;
                while (<$F>) {
                        s/\s+$//;
                        if (/^ExclusiveArch:\s+(.+)/) {
                                @exarch = grep length,
                                  map { $_ eq '%{ix86}' ? @archs86 : $_ } split /\s/, 
$1;
                                last;
                        }
                        last unless length;
                }
                sprawdz($pakiet, @exarch ? [EMAIL PROTECTED] : [EMAIL PROTECTED]);
                close $F or die $!;
        }
        else {
                warn "$spec nie istnieje\n";
                next;
        }
}

sub sprawdz {
        my($pakiet, $arch) = @_;
        my @brak = grep !$pakiety{$pakiet}->{$_}, sort @$arch;
        print "$pakiet: @brak" if @brak;
}

Attachment: pgpy1PkAl6vsl.pgp
Description: PGP signature

_______________________________________________
pld-devel-pl mailing list
[EMAIL PROTECTED]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl

Odpowiedź listem elektroniczym