inc_bldnum revision 5372
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica#!/usr/bin/perl -w
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# Increment the tarball build number in Moz/Evo/APOC spec files.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica#
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# Created by Damien Carbery, 25 April 2005.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricause strict;
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricause Getopt::Long;
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricause File::Basename;
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricause POSIX; # For strftime.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# Display usage information.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricasub Usage
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica{
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica my $ScriptName = basename( $0 );
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica print << "END_OF_USAGE_INFO";
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricaIncrement the build source tarball number and add %changelog entry.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricaUsage: $ScriptName -buildnum num
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica-buildnum Specify build number to insert into spec files. (Required)
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica-email Specify email address to be listed in %changelog.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica-help Display this usage information.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01ricaEND_OF_USAGE_INFO
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica exit 1; # Indicate an error.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica}
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# ####################################
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# Main program.
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# ####################################
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica
f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01rica# Display usage if no arguments.
Usage if ( $#ARGV == -1 );
my $DisplayHelp = 0;
my $BuildNum;
my $Email = 'dermot.mccluskey@sun.com';
# ############################
# Begin command line parsing.
# ############################
#Getopt::Long::Configure( 'pass_through' ); # Ignore unknown options.
GetOptions( 'buildnum=i' => \$BuildNum,
'email=s' => \$Email,
'help' => \$DisplayHelp );
Usage if ( $DisplayHelp );
Usage if ( ! defined $BuildNum );
# List of spec files to update.
my @specfiles = qw / apoc.spec evolution.spec gnome-spell.spec gtkhtml.spec hydrogen.spec libgal.spec libsoup.spec mozilla.spec oxygen2.spec /;
foreach my $file ( @specfiles )
{
# Ensure all the specified files are present, quitting if any aren't.
my $MissingFiles = 0;
foreach my $file ( @ARGV )
{
if ( ! -r $file )
{
print "ERROR: $file is missing or not readable.\n";
$MissingFiles++;
}
}
exit 1 if ( $MissingFiles );
}
# Change t_suffix data and add %changelog entry for each file.
foreach my $file ( @specfiles )
{
if ( open( IN, '<' . $file ) )
{
if ( open( OUT, '>' . $file . ".$$" ) )
{
while ( <IN> )
{
if ( /^(%define t_suffix \D+)(\d+)(\D+)$/ )
{
print OUT $1,$BuildNum,$3;
}
elsif ( /^%changelog$/ )
{
print OUT;
print OUT '* ', strftime("%a %b %e %Y",localtime), " - $Email\n- Bump source tarball to build $BuildNum.\n";
}
else
{
print OUT;
}
}
close( OUT );
}
close( IN );
rename( $file . ".$$", $file );
print "$file - done\n";
}
else
{
print "WARNING: Unable to open $file ($!). Skipping.\n";
}
}
# Update ChangeLog too, putting info at the top of the file.
if ( open( IN, '<' . 'ChangeLog' ) )
{
if ( open( OUT, '>' . 'ChangeLog' . ".$$" ) )
{
print OUT "\t* ", join( ' ', @specfiles[0..4] ), "\n\t", join( ' ', @specfiles[5..$#specfiles] ), ":\n\t* Bump source tarballs to build $BuildNum.\n\n";
# Just pass-through the rest of the lines.
print OUT while ( <IN> );
close( OUT );
}
close( IN );
rename( 'ChangeLog'. ".$$", 'ChangeLog' );
print "ChangeLog - done\n";
}
print "\nUse 'cvs diff' to verify changes.\nTo commit changes:\n cvs commit -m \"Bump source tarballs for Mozilla/Evolution/APOC\"\n";