Ohoh, fix loop in re-exec
[buildfarm-client.git] / run_build
index e8ec50a62014aabc175d6c6fea2789bef8e9a926..22124159b8a163c41daab51084a75d0b333c60d5 100755 (executable)
--- a/run_build
+++ b/run_build
@@ -32,7 +32,7 @@ See accompanying License file for license details
 
 ###################################################
 
-use vars qw($VERSION); $VERSION = 'REL_0.1';
+our $VERSION = 'REL_0.1';
 
 use strict;
 use warnings;
@@ -43,6 +43,7 @@ use File::Copy;
 use File::Basename;
 use File::Temp;
 use File::Spec;
+use FindBin qw'$Bin';
 use IO::Handle;
 use POSIX qw(:signal_h strftime);
 use Data::Dumper;
@@ -82,6 +83,8 @@ if ($0 =~ /(.*)\.pl$/) {
     exec $1, @ARGV;
 }
 
+die "$0: please use an umask of 022\n"
+    if umask > 022;
 
 my %module_hooks;
 my $orig_dir = getcwd();
@@ -152,6 +155,18 @@ print_help() if ($help);
 # process config file
 #
 require $buildconf;
+#use Data::Dumper;
+#die Dumper \%EximBuild::conf;
+
+# some basic checks
+die "$0: need read/write permissions on '$EximBuild::conf{global_lock_dir}': $!\n"
+    if not -r -w $EximBuild::conf{global_lock_dir};
+
+# Does not seem to be necessary
+#die "$0: permissions on '$EximBuild::conf{build_root}' should be >= 0775\n"
+#    if -d $EximBuild::conf{build_root}
+#      and ((stat $EximBuild::conf{build_root})[2] & 0775) != 0775;
+
 
 # get the config data into some local variables
 my (
@@ -1428,6 +1443,13 @@ sub get_script_config_dump
         orig_env => $orig_env,
     };
     delete $conf->{secret};
+
+    if ($conf->{scm} eq 'git') {
+        chomp($conf->{farm}{revision} = `git -C $Bin describe --tags --always --dirty=+`);
+       $conf->{farm}{cwd} = getcwd();
+       $conf->{farm}{bindir} = $Bin;
+    }
+
     $Data::Dumper::Sortkeys = 1;
     return  Data::Dumper->Dump([$conf],['Script_Config']);
 }