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