com web/rmtools: Fix source unzipping which previously might collide in parallel runs: include/Branch.php
| From: | Anatol Belski | Date: | Fri, 15 Sep 2017 11:26:46 +0000 |
| Subject: | com web/rmtools: Fix source unzipping which previously might collide in parallel runs: include/Branch.php | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-26402@lists.php.net to get a copy of this message | ||
Commit: 5e27760dfdfe7fcdd00b127951f41cea2d453172
Author: Anatol Belski <ab@php.net> Fri, 15 Sep 2017 13:26:46 +0200
Parents: ce11cbf8b1ff5a799ad096ba8d226a383c93dcce
Branches: master
Link: http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=5e27760dfdfe7fcdd00b127951f41cea2d453172
Log:
Fix source unzipping which previously might collide in parallel runs
Changed paths:
M include/Branch.php
Diff:
diff --git a/include/Branch.php b/include/Branch.php
index 2a20638..58e7f63 100644
--- a/include/Branch.php
+++ b/include/Branch.php
@@ -137,13 +137,24 @@ class Branch {
}
}
elseif ($is_zip === true) {
- $cmd = 'unzip -q -o ' . $exportfile . ' -d ' . $build_dir;
+ $extract_dir = $build_dir . DIRECTORY_SEPARATOR . "$build_type-$rev_name-tmp-unzip";
+ if (true !== mkdir($extract_dir)) {
+ throw new \Exception("Could not create temporary exctract dir under
'$extract_dir'.");
+ }
+
+ $cmd = 'unzip -q -o ' . $exportfile . ' -d ' . $extract_dir;
$res = exec_single_log($cmd);
if (!$res) {
throw new \Exception("Unzipping $exportfile failed.");
}
$gitname = $build_dir . '/php-src-' . strtoupper($this->config->getName()) .
'-' . $rev_name;
- rename($gitname, $target);
+ if (true !== rename($gitname, $target)) {
+ throw new \Exception("Failed to rename '$gitname' to '$target'");
+ }
+
+ if (true !== rmdir($extract_dir)) {
+ throw new \Exception("Could not remove temporary exctract dir under
'$extract_dir'.");
+ }
}
$target = realpath($target);