]> git.deb.at Git - deb/packages.git/blob - bin/newpkg_info
Clean-up behind Jeroen :)
[deb/packages.git] / bin / newpkg_info
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use lib './lib';
7
8 use Packages::Config qw( $TOPDIR );
9 use Packages::DB;
10 use Packages::Search qw( :all );
11 &Packages::Config::init( './' );
12
13 my $suite = $ARGV[0] or die "No suite given";
14 my $start_time = time;
15
16 sub get_iso_date {
17     my ($age) = @_;
18
19     my ($day, $month, $year) = (gmtime($start_time - ($age*86_400)))[3..5];
20     $month++;
21     $year += 1900;
22     return sprintf( "%04s-%02s-%02s", $year, $month, $day );
23 }
24
25 open CHANGES, '>', "$TOPDIR/files/packages/newpkg_info.new"
26     or die "Couldn't open CHANGES file: $!";
27 for (my $age = 0; $age < 7; $age++) {
28     my (%old, %changes);
29     my $newday = get_iso_date( $age );
30     my $oldday = get_iso_date( $age+1 );
31     open OLD, '<', "$TOPDIR/files/packages/package_names_$suite.$oldday"
32         or die "Couldn't open OLD file $TOPDIR/files/packages/package_names_$suite.$oldday: $!";
33     while (<OLD>) {
34         chomp;
35         $old{$_} = 1;
36     }
37     close OLD;
38     open NEW, '<', "$TOPDIR/files/packages/package_names_$suite.$newday"
39         or die "Couldn't open NEW file $TOPDIR/files/packages/package_names_$suite.$newday: $!";
40     while (<NEW>) {
41         chomp;
42         if ($old{$_}) {
43             # we assume here that the input contains no dupes!
44             delete $old{$_};
45         } else {
46             $changes{$_} = 1;
47         }
48     }
49     close NEW;
50     foreach (keys %old) {
51         $changes{$_} = -1;
52     }
53
54     my %archives = map { $_ => 1 } qw( us security non-US );
55     foreach (sort keys %changes) {
56         my $entry = read_entry_simple( \%packages, $_, \%archives, $suite)
57             or die "Can't find entry for package $_";
58         shift @$entry; # remove virtual pkg info
59         print CHANGES join(" ", $_, $age, @$entry)."\n";
60         print "Wrote entry: ".join(" ", $_, $age, @$entry)."\n";
61     }
62 }
63 closes CHANGES;
64
65 rename("$TOPDIR/files/packages/newpkg_info.new",
66        "$TOPDIR/files/packages/newpkg_info");