inc_bldnum revision 5385
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan#!/usr/bin/perl -w
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan# Increment the tarball build number in Moz/Evo/APOC spec files.
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan#
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan# Created by Damien Carbery, 25 April 2005.
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganuse strict;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganuse Getopt::Long;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganuse File::Basename;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganuse POSIX; # For strftime.
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan# Display usage information.
0fb4093da08d574d3d1b661d4425dfbac8e02aabJames Phillpottssub Usage
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan{
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan my $ScriptName = basename( $0 );
5ec701c9f8ccc403ee6fd3e41239df7dcd9faddeBruno Lavit
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan print << "END_OF_USAGE_INFO";
9df1de8309feb43d162df756c9290ce3afab802aDirk HoganIncrement the build source tarball number and add %changelog entry.
9df1de8309feb43d162df756c9290ce3afab802aDirk HoganUsage: $ScriptName -buildnum num
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan-buildnum Specify build number to insert into spec files. (Required)
5d4589530d1353fdd627ab216a1cdcbcaf6b705ejenkins-email Specify email address to be listed in %changelog.
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan-help Display this usage information.
9df1de8309feb43d162df756c9290ce3afab802aDirk HoganEND_OF_USAGE_INFO
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan exit 1; # Indicate an error.
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan}
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan# ####################################
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan# Main program.
564945e59b60a40c3b9458177b2ff63e2947686cPeter Major# ####################################
564945e59b60a40c3b9458177b2ff63e2947686cPeter Major
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
954d71f34d584a7bcc51a5df9933427542081d62Dirk Hogan# Display usage if no arguments.
954d71f34d584a7bcc51a5df9933427542081d62Dirk HoganUsage if ( $#ARGV == -1 );
954d71f34d584a7bcc51a5df9933427542081d62Dirk Hogan
954d71f34d584a7bcc51a5df9933427542081d62Dirk Hoganmy $DisplayHelp = 0;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganmy $BuildNum;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganmy $Email = 'dermot.mccluskey@sun.com';
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
addc51736ee961d7b52d048021139920d4364671Neil Madden# ############################
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan# Begin command line parsing.
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan# ############################
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan#Getopt::Long::Configure( 'pass_through' ); # Ignore unknown options.
6057736124e265febf1603affd1ec9be4428d99dDirk HoganGetOptions( 'buildnum=i' => \$BuildNum,
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan 'email=s' => \$Email,
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan 'help' => \$DisplayHelp );
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan
6057736124e265febf1603affd1ec9be4428d99dDirk HoganUsage if ( $DisplayHelp );
6057736124e265febf1603affd1ec9be4428d99dDirk HoganUsage if ( ! defined $BuildNum );
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan# List of spec files to update.
6057736124e265febf1603affd1ec9be4428d99dDirk Hogan#### my @specfiles = qw / apoc.spec evolution.spec gnome-spell.spec gtkhtml.spec hydrogen.spec libgal.spec libsoup.spec mozilla.spec oxygen2.spec /;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hoganmy @specfiles = qw/ libsoup.spec /;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
87e1cbcd02820f55e1816ee4efe9e9127be22a11James Phillpottsforeach my $file ( @specfiles )
87e1cbcd02820f55e1816ee4efe9e9127be22a11James Phillpotts{
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan # Ensure all the specified files are present, quitting if any aren't.
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan my $MissingFiles = 0;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan foreach my $file ( @ARGV )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan if ( ! -r $file )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan print "ERROR: $file is missing or not readable.\n";
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan $MissingFiles++;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan }
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan }
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan exit 1 if ( $MissingFiles );
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan}
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan# Change t_suffix and Release data and add %changelog entry for each file.
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hoganforeach my $file ( @specfiles )
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan{
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan if ( open( IN, '<' . $file ) )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan if ( open( OUT, '>' . $file . ".$$" ) )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan while ( <IN> )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan if ( /^(%define t_suffix \D+)(\d+)(\D+)$/ )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan print OUT $1,$BuildNum,$3;
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan }
56f76965098d6cc3ae531ce0a73bda588abdf1d3Dirk Hogan elsif ( /^(Release:\s+)(\d+)(\D+)$/ )
56f76965098d6cc3ae531ce0a73bda588abdf1d3Dirk Hogan {
56f76965098d6cc3ae531ce0a73bda588abdf1d3Dirk Hogan print OUT $1,(${2}+1),$3;
56f76965098d6cc3ae531ce0a73bda588abdf1d3Dirk Hogan }
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan elsif ( /^%changelog$/ )
9df1de8309feb43d162df756c9290ce3afab802aDirk Hogan {
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";