dvander@2251: #!/usr/bin/perl dvander@2251: dvander@2251: use strict; dvander@2251: use Cwd; dvander@2251: dvander@2251: package Build; dvander@2251: dvander@2251: our $SVN = "/usr/bin/svn"; dvander@2251: our $SVN_USER = 'dvander'; dvander@2251: our $SVN_ARGS = ''; dvander@2251: dvander@2292: sub HgRevNum dvander@2292: { dvander@2292: my ($path) = (@_); dvander@2292: my ($cd, $text, $rev); dvander@2292: dvander@2292: $cd = Cwd::cwd(); dvander@2292: chdir($path); dvander@2292: $text = `hg identify -n`; dvander@2292: chdir($cd); dvander@2292: dvander@2292: chomp $text; dvander@2292: if ($text =~ /^(\d+)/) dvander@2292: { dvander@2292: return $1; dvander@2292: } dvander@2292: dvander@2292: return 0; dvander@2292: } dvander@2292: dvander@2292: sub SvnRevNum dvander@2251: { dvander@2251: my ($str)=(@_); dvander@2267: dvander@2267: my $data = Command('svnversion -c ' . $str); dvander@2251: if ($data =~ /(\d+):(\d+)/) dvander@2251: { dvander@2251: return $2; dvander@2251: } elsif ($data =~ /(\d+)/) { dvander@2251: return $1; dvander@2251: } else { dvander@2251: return 0; dvander@2251: } dvander@2251: } dvander@2251: dvander@2267: sub ProductVersion dvander@2267: { dvander@2267: my ($file) = (@_); dvander@2267: my ($version); dvander@2267: open(FILE, $file) or die "Could not open $file: $!\n"; dvander@2267: $version = ; dvander@2267: close(FILE); dvander@2267: chomp $version; dvander@2267: return $version; dvander@2267: } dvander@2267: dvander@2251: sub Delete dvander@2251: { dvander@2251: my ($str)=(@_); dvander@2251: if ($^O =~ /MSWin/) dvander@2251: { dvander@2251: Command("del /S /F /Q \"$str\""); dvander@2251: Command("rmdir /S /Q \"$str\""); dvander@2251: } else { dvander@2251: Command("rm -rf $str"); dvander@2251: } dvander@2251: return !(-e $str); dvander@2251: } dvander@2251: dvander@2251: sub Copy dvander@2251: { dvander@2251: my ($src,$dest)=(@_); dvander@2251: if ($^O =~ /MSWin/) dvander@2251: { dvander@2251: Command("copy \"$src\" \"$dest\" /y"); dvander@2251: } else { dvander@2251: Command("cp \"$src\" \"$dest\""); dvander@2251: } dvander@2251: return (-e $dest); dvander@2251: } dvander@2251: dvander@2251: sub Move dvander@2251: { dvander@2251: my ($src,$dest)=(@_); dvander@2251: if ($^O =~ /MSWin/) dvander@2251: { dvander@2251: Command("move \"$src\" \"$dest\""); dvander@2251: } else { dvander@2251: Command("mv \"$src\" \"$dest\""); dvander@2251: } dvander@2251: return (-e $dest); dvander@2251: } dvander@2251: dvander@2251: sub Command dvander@2251: { dvander@2251: my($cmd)=(@_); dvander@2251: print "$cmd\n"; dvander@2251: return `$cmd`; dvander@2251: } dvander@2251: dvander@2251: sub PathFormat dvander@2251: { dvander@2251: my ($str)=(@_); dvander@2251: if ($^O =~ /MSWin/) dvander@2251: { dvander@2251: $str =~ s#/#\\#g; dvander@2251: } else { dvander@2251: $str =~ s#\\#/#g; dvander@2251: } dvander@2251: return $str; dvander@2251: } dvander@2251: dvander@2251: sub SVN_Remove dvander@2251: { dvander@2251: my ($file)=(@_); dvander@2251: my ($path, $name); dvander@2251: if ($^O =~ /MSWin/) dvander@2251: { dvander@2251: ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/); dvander@2251: } else { dvander@2251: ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/); dvander@2251: } dvander@2251: my $dir = Cwd::cwd(); dvander@2251: chdir($path); dvander@2251: Command($SVN . ' ' . $SVN_ARGS . ' delete ' . $name); dvander@2251: chdir($dir); dvander@2251: } dvander@2251: dvander@2251: sub SVN_Add dvander@2251: { dvander@2251: my ($file)=(@_); dvander@2251: my ($path, $name); dvander@2251: if ($^O =~ /MSWin/) dvander@2251: { dvander@2251: ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/); dvander@2251: } else { dvander@2251: ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/); dvander@2251: } dvander@2251: my $dir = Cwd::cwd(); dvander@2251: chdir($path); dvander@2251: Command($SVN . ' ' . $SVN_ARGS . ' add ' . $name); dvander@2251: chdir($dir); dvander@2251: } dvander@2251: dvander@2292: return 1;