annotate agent/src/jetbrains/buildServer/symbols/tools/JetSymbolsExe.java @ 74:a5f3d4f24843 8.1.x

fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
author Evgeniy.Koshkin
date Mon, 03 Mar 2014 12:58:24 +0400
parents 76ed2d58c871
children b3f951ab16eb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
1 package jetbrains.buildServer.symbols.tools;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
2
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
3 import com.intellij.execution.configurations.GeneralCommandLine;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
4 import jetbrains.buildServer.ExecResult;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
5 import jetbrains.buildServer.SimpleCommandLineProcessRunner;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
6 import jetbrains.buildServer.agent.BuildProgressLogger;
74
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
7 import jetbrains.buildServer.util.FileUtil;
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
8
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
9 import java.io.File;
74
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
10 import java.io.IOException;
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
11 import java.util.Collection;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
12
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
13 /**
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
14 * @author Evgeniy.Koshkin
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
15 */
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
16 public class JetSymbolsExe {
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
17
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
18 private static final String SYMBOLS_EXE = "JetBrains.CommandLine.Symbols.exe";
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
19 private static final String DUMP_SYMBOL_SIGN_CMD = "dumpSymbolSign";
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
20 private final File myExePath;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
21
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
22 public JetSymbolsExe(File homeDir) {
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
23 myExePath = new File(homeDir, SYMBOLS_EXE);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
24 }
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
25
74
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
26 public void dumpGuidsToFile(Collection<File> files, File output, BuildProgressLogger buildLogger) throws IOException {
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
27 final GeneralCommandLine commandLine = new GeneralCommandLine();
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
28 commandLine.setExePath(myExePath.getPath());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
29 commandLine.addParameter(DUMP_SYMBOL_SIGN_CMD);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
30 commandLine.addParameter(String.format("/o=\"%s\"", output.getPath()));
74
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
31 commandLine.addParameter(String.format("/i=\"%s\"", dumpPathsToFile(files).getPath()));
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
32 buildLogger.message(String.format("Running command %s", commandLine.getCommandLineString()));
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
33 final ExecResult execResult = SimpleCommandLineProcessRunner.runCommand(commandLine, null);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
34 final String stdout = execResult.getStdout();
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
35 if(!stdout.isEmpty()){
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
36 buildLogger.message("Stdout: " + stdout);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
37 }
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
38 if (execResult.getExitCode() == 0) return;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
39 buildLogger.warning(String.format("%s ends with non-zero exit code.", SYMBOLS_EXE));
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
40 buildLogger.warning("Stdout: " + stdout);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
41 buildLogger.warning("Stderr: " + execResult.getStderr());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
42 buildLogger.exception(execResult.getException());
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
43 }
74
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
44
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
45 private File dumpPathsToFile(Collection<File> files) throws IOException {
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
46 final File result = FileUtil.createTempFile(DUMP_SYMBOL_SIGN_CMD, ".input");
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
47 StringBuilder contentBuilder = new StringBuilder();
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
48 for(File file : files){
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
49 contentBuilder.append(file.getPath()).append("\n");
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
50 }
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
51 FileUtil.writeToFile(result, contentBuilder.toString().getBytes());
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
52 return result;
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
53 }
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
54 }