X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fkeep-latest;h=788dcc5eb4185cc35d87c1e4e726ea721fcaf272;hb=fe779daa9a08b6e39b3e8ad6ae2a3f4b8e8179b1;hp=eabcc10129f508f3d9bb7dff8cc35b7b98309bdf;hpb=08c7734af06cb4e2f4eb4117accf1e586d2a7dc0;p=wannabuild.git diff --git a/bin/keep-latest b/bin/keep-latest index eabcc10..788dcc5 100755 --- a/bin/keep-latest +++ b/bin/keep-latest @@ -3,41 +3,53 @@ use strict; use warnings; +use lib '/org/wanna-build/bin'; use WannaBuild; # for version compare if (!@ARGV) { - print STDERR "Usage: $0 Packages1 Packages2 ..\n"; + print STDERR "Usage: $0 arch Packages1 Packages2 ..\n"; print STDERR "\n"; print STDERR "This perl scripts reads the Packages files given on the command line and\n"; - print STDERR "outputs a Packages file which contians each package exactly once, using the\n"; - print STDERR "one with the highest version number.\n"; + print STDERR "outputs a Packages file which contians each package at most\n"; + print STDERR "once, using the one with the highest version number.\n"; print STDERR ""; - print STDERR "Since it only looks at Package: and Version:, it works with Sources files\n"; - print STDERR "as well\n"; + print STDERR "Since it only looks at Package:, Version: and Architecture:, it works with\n"; + print STDERR "Sources files as well\n"; + print STDERR "\n"; + print STDERR "It throws out any package not arch \"all\" or the given architecture.\n"; + print STDERR "Pass \"source\" to keep all entries.\n"; + exit 1; } my %version; my %data; +my $arch = shift @ARGV; + local($/) = ""; # read in paragraph mode while (<>) { - my( $version, $name ); + my( $version, $name, $architecture ); + $architecture="none"; # better to keep an entry too much than to delete an entry /^Package:\s*(\S+)$/mi and $name = $1; /^Version:\s*(\S+)$/mi and $version = $1; + /^Architecture:\s*(\S+)$/mi and $architecture = $1; if (!defined $name or !defined $version) { warn "Stanza without Package or Version\n"; next; } + if ($arch ne "source" && defined $architecture && $architecture ne "all" && $architecture ne $arch) { + next; + } + my $key = $name; - if ((!exists $version{$name}) or version_less($version{name},$version)) { - $version{$name} = $version; - $data{$name} = $_; + if ((!exists $version{$key}) or version_less($version{$key},$version)) { + $version{$key} = $version; + $data{$key} = $_; } } - foreach (values %data) { - s/\n*$/\n\n/;# always one empty line to separate stanzas + chomp; $_ .= "\n\n"; print; }