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

Last change on this file since 227 was 227, checked in by Bruno Cornec, 17 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.