aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Yue Gan <yueg@google.com>2017-02-28 11:20:32 +0000
committerGravatar Yue Gan <yueg@google.com>2017-02-28 11:34:45 +0000
commit0f119a4db515105217244e4db5d4fed9371ef1a4 (patch)
treef10539afb89f23b90821a8c3b07ba398ab4fa0a4 /src
parent5f19fd5f82583205c950dad024ebe014267a03b9 (diff)
Always update bazel repo: try pull first, and recreate if failed.
-- PiperOrigin-RevId: 148751928 MOS_MIGRATED_REVID=148751928
Diffstat (limited to 'src')
-rw-r--r--src/tools/benchmark/java/com/google/devtools/build/benchmark/BazelBuilder.java20
-rw-r--r--src/tools/benchmark/java/com/google/devtools/build/benchmark/Main.java4
2 files changed, 20 insertions, 4 deletions
diff --git a/src/tools/benchmark/java/com/google/devtools/build/benchmark/BazelBuilder.java b/src/tools/benchmark/java/com/google/devtools/build/benchmark/BazelBuilder.java
index 6d49b7b6bb..974ae17cba 100644
--- a/src/tools/benchmark/java/com/google/devtools/build/benchmark/BazelBuilder.java
+++ b/src/tools/benchmark/java/com/google/devtools/build/benchmark/BazelBuilder.java
@@ -20,6 +20,9 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.shell.Command;
import com.google.devtools.build.lib.shell.CommandException;
import com.google.devtools.build.lib.shell.CommandResult;
+import com.google.devtools.build.lib.vfs.FileSystem;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
+import com.google.devtools.build.lib.vfs.JavaIoFileSystem;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -34,6 +37,7 @@ import java.util.regex.Pattern;
class BazelBuilder implements Builder {
private static final Logger logger = Logger.getLogger(BazelBuilder.class.getName());
+ private static final FileSystem fileSystem = new JavaIoFileSystem();
private static final String BAZEL_BINARY_PATH = "bazel-bin/src/bazel";
private static final Pattern ELAPSED_TIME_PATTERN = Pattern.compile("(?<=Elapsed time: )[0-9.]+");
@@ -151,13 +155,15 @@ class BazelBuilder implements Builder {
}
void prepareFromGitRepo(String gitRepo) throws IOException, CommandException {
- if (builderDir.toFile().exists() && !builderDir.toFile().isDirectory()) {
+ // Try to pull git repo first, delete directory if failed.
+ if (builderDir.toFile().isDirectory()) {
try {
- Files.delete(builderDir);
- } catch (IOException e) {
- throw new IOException(builderDir + " is a file and cannot be deleted", e);
+ pullGitRepo();
+ } catch (CommandException e) {
+ FileSystemUtils.deleteTree(fileSystem.getPath(builderDir.toString()));
}
}
+
if (Files.notExists(builderDir)) {
try {
Files.createDirectories(builderDir);
@@ -172,6 +178,12 @@ class BazelBuilder implements Builder {
// Assume the directory is what we need if not empty
}
+ private void pullGitRepo() throws CommandException {
+ String[] gitCloneCommand = {"git", "pull"};
+ Command cmd = new Command(gitCloneCommand, null, builderDir.toFile());
+ cmd.execute();
+ }
+
private ImmutableList<String> getListOfOutputFromCommand(String... command)
throws CommandException{
Command cmd = new Command(command, null, builderDir.toFile());
diff --git a/src/tools/benchmark/java/com/google/devtools/build/benchmark/Main.java b/src/tools/benchmark/java/com/google/devtools/build/benchmark/Main.java
index c0b9bea98c..463bb5f419 100644
--- a/src/tools/benchmark/java/com/google/devtools/build/benchmark/Main.java
+++ b/src/tools/benchmark/java/com/google/devtools/build/benchmark/Main.java
@@ -46,6 +46,10 @@ public class Main {
// Prepare paths
File workspace = new File(opt.workspace);
+ if (workspace.isFile()) {
+ logger.log(Level.SEVERE, "Workspace directory is an existing file: " + opt.workspace);
+ System.exit(1);
+ }
if (!workspace.exists() && !workspace.mkdirs()) {
logger.log(Level.SEVERE, "Failed to create workspace directory: " + opt.workspace);
System.exit(1);