commit c50d8e22c4fcddc4ed567815b1b0135419c2a53c
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri May 29 20:34:23 2020 +0200
Bug 34320: Set TMPDIR when running scripts
---
doc/rbm_config.asc | 3 ++-
lib/RBM.pm | 5 +++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/doc/rbm_config.asc b/doc/rbm_config.asc
index 1935cd3..43feb9a 100644
--- a/doc/rbm_config.asc
+++ b/doc/rbm_config.asc
@@ -139,7 +139,8 @@ tmp_dir::
rbm_tmp_dir::
A directory created inside +tmp_dir+ using +File::Temp+, that
you can use to store temporary files. This directory is removed
- automatically when rbm exits.
+ automatically when rbm exits. When running scripts, the TMPDIR
+ environment variable is also set to this directory.
output_dir::
The directory where output files (tarballs, spec files or
diff --git a/lib/RBM.pm b/lib/RBM.pm
index 7cc9e24..b9ad1ad 100644
--- a/lib/RBM.pm
+++ b/lib/RBM.pm
@@ -461,8 +461,9 @@ sub run_script {
my ($project, $cmd, $f) = @_;
$f //= \&capture_exec;
my @res;
+ local $ENV{TMPDIR} = project_config($project, 'rbm_tmp_dir');
if ($cmd =~ m/^#/) {
- my (undef, $tmp) = File::Temp::tempfile(DIR => get_tmp_dir($project));
+ my (undef, $tmp) = File::Temp::tempfile(DIR => $ENV{TMPDIR});
path($tmp)->spew_utf8($cmd);
chmod 0700, $tmp;
@res = $f->($tmp);
@@ -1146,7 +1147,7 @@ sub build_run {
foreach my $s (@scripts) {
my $cmd = $scripts_root{$s} ? project_config($project, 'suexec',
{ suexec_cmd => "$srcdir/$s" }) : "$srcdir/$s";
- if (system_log($build_log, $cmd) != 0) {
+ if (run_script($project, $cmd, sub { system_log($build_log, @_) }) != 0) {
$error = "Error running $script_name";
if (project_config($project, 'debug', $options)) {
print STDERR $error, "\nOpening debug shell\n";