1#!/usr/bin/perl 2# If you think this is stupid/overkill, blame dormando 3 4use warnings; 5use strict; 6 7my $version = `git describe`; 8chomp $version; 9# Test the various versions. 10#my $version = 'foob'; 11#my $version = '1.4.2-30-gf966dba'; 12#my $version = '1.4.3-rc1'; 13#my $version = '1.4.3'; 14unless ($version =~ m/^\d+\.\d+\.\d+/) { 15 write_file('version.m4', "m4_define([VERSION_NUMBER], [UNKNOWN])\n"); 16 exit; 17} 18 19$version =~ s/-/_/g; 20write_file('version.m4', "m4_define([VERSION_NUMBER], [$version])\n"); 21my ($VERSION, $FULLVERSION, $RELEASE); 22 23if ($version =~ m/^(\d+\.\d+\.\d+)_rc(\d+)$/) { 24 $VERSION = $1; 25 $FULLVERSION = $version; 26 $RELEASE = '0.1.rc' . $2; 27} elsif ($version =~ m/^(\d+\.\d+\.\d+)_(.+)$/) { 28 $VERSION = $1; 29 $FULLVERSION = $version; 30 $RELEASE = '1.' . $2; 31} elsif ($version =~ m/^(\d+\.\d+\.\d+)$/) { 32 $VERSION = $1; 33 $FULLVERSION = $version; 34 $RELEASE = '1'; 35} 36 37my $spec = read_file('memcached.spec.in'); 38$spec =~ s/\@VERSION\@/$VERSION/gm; 39$spec =~ s/\@FULLVERSION\@/$FULLVERSION/gm; 40$spec =~ s/\@RELEASE\@/$RELEASE/gm; 41 42write_file('memcached.spec', $spec); 43 44sub write_file { 45 my $file = shift; 46 my $data = shift; 47 open(my $fh, "> $file") or die "Can't open $file: $!"; 48 print $fh $data; 49 close($fh); 50} 51 52sub read_file { 53 my $file = shift; 54 local $/ = undef; 55 open(my $fh, "< $file") or die "Can't open $file: $!"; 56 my $data = <$fh>; 57 close($fh); 58 return $data; 59} 60