Skip to content

Commit

Permalink
Add /usr/share/grml-live/scripts/repodiff.pl (by formorer, thx!)
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Prokop committed Oct 28, 2007
1 parent 57cab25 commit 87c37be
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 2 deletions.
2 changes: 2 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ grml-live (0.0.7) unstable; urgency=low
debootstrap system we can't do anything via grml-live for you
right now. Instead grab http://daily.grml.org/base.tgz
and place that at $NFSROOT/nfsroot/live/filesystem.dir/var/tmp/base.tgz
* Add /usr/share/grml-live/scripts/repodiff.pl (by formorer, thx!)
for comparing two repositories.
* Replaced /etc/grml/fai/files/etc/apt/preferences
with /etc/grml/fai/apt/preferences so grml-live repository
can be used and configured at a single place.
Expand Down
4 changes: 2 additions & 2 deletions debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ install: build
dh_testroot
dh_clean -k
dh_installdirs etc/grml/fai/live-initramfs usr/sbin usr/share/doc/grml-live \
usr/share/grml-live usr/share/grml-live/examples \
usr/share/grml-live/buildd
usr/share/grml-live usr/share/grml-live/buildd

# Add here commands to install the package into debian/grml-live.
cp -a etc debian/grml-live/
cp -a examples debian/grml-live/usr/share/doc/grml-live/
cp -a templates debian/grml-live/usr/share/grml-live/
cp -a scripts debian/grml-live/usr/share/grml-live/
cp -a buildd/*.sh debian/grml-live/usr/share/grml-live/buildd/
install -o root -m 640 buildd/grml-buildd.conf debian/grml-live/etc/grml/grml-buildd.conf
install -o root -m 755 grml-live debian/grml-live/usr/sbin/grml-live
Expand Down
83 changes: 83 additions & 0 deletions scripts/repodiff.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#!/usr/bin/perl
# Filename: repodiff.pl
# Purpose: compare the available packages from two different repositories
# Authors: grml-team (grml.org), (c) Alexander Wirt <formorer@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2 or any later version.
# Latest change: Sun Oct 28 18:00:49 CET 2007 [mika]
################################################################################
# Notice: adjust $c_file[12] according to your needs, by default the script
# compares the i386 pool with the amd64 pool of grml.
################################################################################

use strict;
use LWP::Simple;
use Compress::Zlib ;

use AptPkg::Config '$_config';
use AptPkg::System '$_system';
use AptPkg::Version;

(my $self = $0) =~ s#.*/##;

# initialise the global config object with the default values
$_config->init;

# determine the appropriate system type
$_system = $_config->system;

# fetch a versioning system
my $vs = $_system->versioning;

sub describe
{
return 'earlier than' if $_[0] < 0;
return 'later than' if $_[0] > 0;
'the same as';
}

my $c_file1 = get('http://deb.grml.org/dists/grml-testing/main/binary-i386/Packages.gz');
my $c_file2 = get('http://deb.grml.org/dists/grml-testing/main/binary-amd64/Packages.gz');

my $file1 = Compress::Zlib::memGunzip($c_file1);
my $file2 = Compress::Zlib::memGunzip($c_file2);

my $file1_tree;
my $file2_tree;

my ($package, $version) = "";

foreach my $line (split('\n', $file1)) {
if ($line =~ m/^Package: (.*)/) {
$package = $1;
} elsif ($line =~ m/^Version: (.*)/) {
$file1_tree->{$package} = "$1";
}
}

foreach my $line (split('\n', $file2)) {
if ($line =~ m/^Package: (.*)/) {
$package = $1;
} elsif ($line =~ m/^Version: (.*)/) {
$file2_tree->{$package} = "$1";
}
}


foreach my $key (keys %{$file1_tree}) {
if (defined $file2_tree->{$key}) {
print "package $key version " . $file1_tree->{$key} . " on repo1 is ",
(describe $vs->compare($file1_tree->{$key}, $file2_tree->{$key})),
" " . $file2_tree->{$key} . " on repo2\n";
} else {
print "$key does not exist on repo2\n";
}
}

foreach my $key (keys %{$file2_tree}) {
if (not defined $file1_tree->{$key}) {
print "$key does not exist on repo1\n";
}
}

# EOF

0 comments on commit 87c37be

Please sign in to comment.