diff options
author | Norbert Preining <preining@logic.at> | 2010-05-12 16:54:37 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2010-05-12 16:54:37 +0000 |
commit | 661c41a09e39a182865e0b51e34cc995a0dc96e8 (patch) | |
tree | 2f79bb1406e22fdcb2587be8ffda6c0c609d7932 /Master/tlpkg/tlperl/lib/dbixs_rev.pl | |
parent | b645030efc22e13c2498a1522083634ab91b2de1 (diff) |
move tlperl.straw to tlperl
git-svn-id: svn://tug.org/texlive/trunk@18210 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/dbixs_rev.pl')
-rwxr-xr-x | Master/tlpkg/tlperl/lib/dbixs_rev.pl | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/dbixs_rev.pl b/Master/tlpkg/tlperl/lib/dbixs_rev.pl new file mode 100755 index 00000000000..9e83eb10a13 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/dbixs_rev.pl @@ -0,0 +1,51 @@ +#!perl -w +use strict; + +my $dbixs_rev_file = "dbixs_rev.h"; + +my $is_make_dist; +my $svnversion; + +if (is_dbi_svn_dir(".")) { + $svnversion = `svnversion -n`; +} +elsif (is_dbi_svn_dir("..")) { + # presumably we're in a subdirectory because the user is doing a 'make dist' + $svnversion = `svnversion -n ..`; + $is_make_dist = 1; +} +else { + # presumably we're being run by an end-user because their file timestamps + # got messed up + print "Skipping regeneration of $dbixs_rev_file\n"; + utime(time(), time(), $dbixs_rev_file); # update modification time + exit 0; +} + +my @warn; +die "Neither current directory nor parent directory are an svn working copy\n" + unless $svnversion and $svnversion =~ m/^\d+/; +push @warn, "Mixed revision working copy ($svnversion:$1)" + if $svnversion =~ s/:(\d+)//; +push @warn, "Code modified since last checkin" + if $svnversion =~ s/[MS]+$//; +warn "$dbixs_rev_file warning: $_\n" for @warn; +die "$0 failed\n" if $is_make_dist && @warn; + +write_header($dbixs_rev_file, DBIXS_REVISION => $svnversion, \@warn); + +sub write_header { + my ($file, $macro, $version, $comments_ref) = @_; + open my $fh, ">$file" or die "Can't open $file: $!\n"; + unshift @$comments_ref, scalar localtime(time); + print $fh "/* $_ */\n" for @$comments_ref; + print $fh "#define $macro $version\n"; + close $fh or die "Error closing $file: $!\n"; + print "Wrote $macro $version to $file\n"; +} + +sub is_dbi_svn_dir { + my ($dir) = @_; + return (-d "$dir/.svn" && -f "$dir/MANIFEST.SKIP"); +} + |