source: devel/pb/lib/ProjectBuilder/Changelog.pm @ 227

Last change on this file since 227 was 227, checked in by Bruno Cornec, 13 years ago

Flat mode now working for collectl

File size: 2.4 KB
Line 
1#!/usr/bin/perl -w
2#
3# Creates changelog for packages from Changelog files in the apps
4#
5# $Id$
6#
7
8use strict;
9use Date::Manip;
10use File::Basename;
11use English;
12use ProjectBuilder::Base qw (pb_conf_get);
13
14sub pb_changelog {
15
16my $dtype = shift;
17my $pkg = shift;
18my $pbtag = shift;
19my $dsuf = shift;
20my $path = shift;
21my $OUTPUT = shift;
22
23my $log = "";
24
25# For date handling
26$ENV{LANG}="C";
27
28return("\n") if ((not (defined $dtype)) || ($dtype eq "") || 
29        (not (defined $pkg)) || ($pkg eq "") || 
30        (not (defined $pbtag)) || ($pbtag eq "") || 
31        (not (defined $dsuf)) || ($dsuf eq "") || 
32        (not (defined $path)) || ($path eq "") || 
33        (not (defined $OUTPUT)) || ($OUTPUT eq ""));
34
35my $chglog = "$ENV{'PBROOT'}/$path/ChangeLog";
36if (! -f $chglog) {
37    #print "No ChangeLog file ($chglog) for $pkg\n";
38    return("\n");
39}
40
41open(INPUT,"$chglog") || die "Unable to open $chglog (read)";
42
43# Skip first 4 lines
44my $tmp = <INPUT>;
45$tmp = <INPUT>;
46$tmp = <INPUT>;
47if ($dtype eq "announce") {
48    print $OUTPUT $tmp;
49}
50$tmp = <INPUT>;
51if ($dtype eq "announce") {
52    print $OUTPUT $tmp;
53}
54
55my $first=1;
56
57# Handle each block separated by newline
58while (<INPUT>) {
59    my ($ver, $date) = split(/ /);
60    my $ver2;
61    $ver =~ s/^v//;
62    chomp($date);
63    $date =~ s/\(([0-9-]+)\)/$1/;
64    #print "**$date**\n";
65    my $ndate = UnixDate($date,"%a", "%b", "%d", "%Y");
66    my $n2date = &UnixDate($date,"%a, %d %b %Y %H:%M:%S %z");
67    #print "**$ndate**\n";
68    my ($packager) = pb_conf_get("packager");
69
70    if (($dtype eq "rpm") || ($dtype eq "fc")) {
71        if ($ver !~ /-/) {
72            if ($first eq 1) {
73                $ver2 = "$ver-$pbtag$dsuf";
74                $first=0;
75            } else {
76                $ver2 = "$ver-1$dsuf";
77            }
78        } else {
79            $ver2 = "$ver$dsuf";
80        }
81        print $OUTPUT "* $ndate $packager->{$ENV{'PBPROJ'}} $ver2\n";
82        print $OUTPUT "- Updated to $ver\n";
83        }
84    if ($dtype eq "deb") {
85        print $OUTPUT "$pkg ($ver) unstable; urgency=low\n";
86        print $OUTPUT "\n";
87        }
88
89    $tmp = <INPUT>; 
90    while ($tmp !~ /^$/) {
91        if ($dtype eq "deb") {
92            $tmp =~ s/^- //;
93            print $OUTPUT "  * $tmp";
94        } elsif ($dtype eq "rpm") {
95            print $OUTPUT "$tmp";
96        } else {
97            print $OUTPUT "$tmp";
98        }
99        last if (eof(INPUT));
100        $tmp = <INPUT>;
101    }
102    print $OUTPUT "\n";
103
104    if ($dtype eq "deb") {
105        # Cf: http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog
106        print $OUTPUT " -- $packager->{$ENV{'PBPROJ'}}  $n2date\n\n\n";
107        }
108
109    last if (eof(INPUT));
110    last if ($dtype eq "announce");
111}
112close(INPUT);
113}
1141;
Note: See TracBrowser for help on using the repository browser.