Blame dbixs_rev.pl

Packit Service 2db356
#!/usr/bin/perl -w
Packit Service b125fd
use strict;
Packit Service b125fd
Packit Service b125fd
my $dbixs_rev_file = "dbixs_rev.h";
Packit Service b125fd
Packit Service b125fd
my $is_make_dist;
Packit Service b125fd
my $svnversion;
Packit Service b125fd
Packit Service b125fd
if (is_dbi_svn_dir(".")) {
Packit Service b125fd
    $svnversion = `svnversion -n`;
Packit Service b125fd
}
Packit Service b125fd
elsif (is_dbi_svn_dir("..")) {
Packit Service b125fd
    # presumably we're in a subdirectory because the user is doing a 'make dist'
Packit Service b125fd
    $svnversion = `svnversion -n ..`;
Packit Service b125fd
    $is_make_dist = 1;
Packit Service b125fd
}
Packit Service b125fd
else {
Packit Service b125fd
    # presumably we're being run by an end-user because their file timestamps
Packit Service b125fd
    # got messed up
Packit Service b125fd
    print "Skipping regeneration of $dbixs_rev_file\n";
Packit Service b125fd
    utime(time(), time(), $dbixs_rev_file); # update modification time
Packit Service b125fd
    exit 0;
Packit Service b125fd
}
Packit Service b125fd
Packit Service b125fd
my @warn;
Packit Service b125fd
die "Neither current directory nor parent directory are an svn working copy\n"
Packit Service b125fd
    unless $svnversion and $svnversion =~ m/^\d+/;
Packit Service b125fd
push @warn, "Mixed revision working copy ($svnversion:$1)"
Packit Service b125fd
    if $svnversion =~ s/:(\d+)//;
Packit Service b125fd
push @warn, "Code modified since last checkin"
Packit Service b125fd
    if $svnversion =~ s/[MS]+$//;
Packit Service b125fd
warn "$dbixs_rev_file warning: $_\n" for @warn;
Packit Service b125fd
die "$0 failed\n" if $is_make_dist && @warn;
Packit Service b125fd
Packit Service b125fd
write_header($dbixs_rev_file, DBIXS_REVISION => $svnversion, \@warn);
Packit Service b125fd
Packit Service b125fd
sub write_header {
Packit Service b125fd
    my ($file, $macro, $version, $comments_ref) = @_;
Packit Service b125fd
    open my $fh, ">$file" or die "Can't open $file: $!\n";
Packit Service b125fd
    unshift @$comments_ref, scalar localtime(time);
Packit Service b125fd
    print $fh "/* $_ */\n" for @$comments_ref;
Packit Service b125fd
    print $fh "#define $macro $version\n";
Packit Service b125fd
    close $fh or die "Error closing $file: $!\n";
Packit Service b125fd
    print "Wrote $macro $version to $file\n";
Packit Service b125fd
}
Packit Service b125fd
Packit Service b125fd
sub is_dbi_svn_dir {
Packit Service b125fd
    my ($dir) = @_;
Packit Service b125fd
    return (-d "$dir/.svn" && -f "$dir/MANIFEST.SKIP");
Packit Service b125fd
}
Packit Service b125fd