diff options
author | 2017-02-28 11:20:32 +0000 | |
---|---|---|
committer | 2017-02-28 11:34:45 +0000 | |
commit | 0f119a4db515105217244e4db5d4fed9371ef1a4 (patch) | |
tree | f10539afb89f23b90821a8c3b07ba398ab4fa0a4 /src | |
parent | 5f19fd5f82583205c950dad024ebe014267a03b9 (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.java | 20 | ||||
-rw-r--r-- | src/tools/benchmark/java/com/google/devtools/build/benchmark/Main.java | 4 |
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); |