summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/dbixs_rev.pl
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2010-05-12 16:54:37 +0000
committerNorbert Preining <preining@logic.at>2010-05-12 16:54:37 +0000
commit661c41a09e39a182865e0b51e34cc995a0dc96e8 (patch)
tree2f79bb1406e22fdcb2587be8ffda6c0c609d7932 /Master/tlpkg/tlperl/lib/dbixs_rev.pl
parentb645030efc22e13c2498a1522083634ab91b2de1 (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-xMaster/tlpkg/tlperl/lib/dbixs_rev.pl51
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");
+}
+