annotate agent/src/jetbrains/buildServer/symbols/tools/JetSymbolsExe.java @ 117:d2c79f95c2a6 default tip

remove tailing slash in teamcity server url when constructing symbol server url
author Evgeniy.Koshkin@unit-519.Labs.IntelliJ.Net
date Fri, 27 May 2016 15:27:30 +0300
parents b3f951ab16eb
children
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
77
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
26 public int 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);
77
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
30 commandLine.addParameter(String.format("/o=%s", output.getPath()));
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
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 }
77
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
38 final int exitCode = execResult.getExitCode();
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
39 if (exitCode != 0) {
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
40 buildLogger.warning(String.format("%s ends with non-zero exit code.", SYMBOLS_EXE));
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
41 buildLogger.warning("Stdout: " + stdout);
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
42 buildLogger.warning("Stderr: " + execResult.getStderr());
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
43 buildLogger.exception(execResult.getException());
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
44 }
b3f951ab16eb fixed TW-36764
Evgeniy.Koshkin
parents: 74
diff changeset
45 return exitCode;
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
46 }
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
47
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 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
49 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
50 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
51 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
52 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
53 }
a5f3d4f24843 fixed TW-34285 - bundled new version of JetBrains.CommandLine.Symbols.exe; passed list of files via file
Evgeniy.Koshkin
parents: 27
diff changeset
54 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
55 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
56 }
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents:
diff changeset
57 }