use strict;
use warnings;
+use 5.010;
use Config;
use Fcntl qw(:flock :seek);
use File::Path;
use File::Basename;
use File::Temp;
use File::Spec;
-use FindBin qw'$Bin';
+use FindBin qw'$RealBin';
use IO::Handle;
use POSIX qw(:signal_h strftime);
use Data::Dumper;
exec $1, @ARGV;
}
-die "$0: please use an umask of 022\n"
- if umask > 022;
+if (umask != 022) {
+ umask 022;
+ say "$0: forced umask to 022" if -t;
+}
my %module_hooks;
my $orig_dir = getcwd();
push @INC, $orig_dir;
-umask 022;
-
# make sure we exit nicely on any normal interrupt
# so the cleanup handler gets called.
# that lets us stop the db if it's running and
$aux_path,$trigger_exclude,$trigger_include,$secret,
$keep_errs,$force_every, $make, $optional_steps,
$use_vpath,$tar_log_cmd, $using_msvc, $extra_config,
- $make_jobs, $core_file_glob
+ $make_jobs, $core_file_glob, $global_lock_dir
)
=@EximBuild::conf{
qw(build_root target animal print_success aux_path trigger_exclude
trigger_include secret keep_error_builds force_every make optional_steps
- use_vpath tar_log_cmd using_msvc extra_config make_jobs core_file_glob)
+ use_vpath tar_log_cmd using_msvc extra_config make_jobs core_file_glob global_lock_dir)
};
+# This should be done more generally, for all the scripts
+# including the $buildconf. For now this is duplicated
+# in a similiar war in run_branches.
+$global_lock_dir //= $buildroot // die "$0: need global_lock_dir\n";
+
+die "$0: need read/write permissions on '$global_lock_dir': $!\n"
+ if not -r -w $global_lock_dir;
+
#default is no parallel build
$make_jobs ||= 1;
delete $conf->{secret};
if ($conf->{scm} eq 'git') {
- chomp($conf->{farm}{revision} = `git -C $Bin describe --tags --always --dirty=+`);
+ chomp($conf->{farm}{revision} = `cd $RealBin && git describe --tags --always --dirty=+`);
$conf->{farm}{cwd} = getcwd();
- $conf->{farm}{bindir} = $Bin;
+ $conf->{farm}{bindir} = $RealBin;
}
$Data::Dumper::Sortkeys = 1;