annotate agent/src/jetbrains/buildServer/symbols/PdbFilePatcher.java @ 29:6ac3c2491e1a

removed copyright
author Evgeniy.Koshkin
date Thu, 08 Aug 2013 19:08:42 +0400
parents 76ed2d58c871
children 4c516ddbddf1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
1 package jetbrains.buildServer.symbols;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
2
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
3 import jetbrains.buildServer.agent.BuildProgressLogger;
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
4 import jetbrains.buildServer.symbols.tools.PdbStrExe;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
5 import jetbrains.buildServer.symbols.tools.PdbStrExeCommands;
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
6 import jetbrains.buildServer.symbols.tools.SrcToolExe;
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
7 import jetbrains.buildServer.util.FileUtil;
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
8 import org.apache.log4j.Logger;
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
9
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
10 import java.io.File;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
11 import java.util.Collection;
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
13 /**
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
14 * @author Evgeniy.Koshkin
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
15 */
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
16 public class PdbFilePatcher {
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
17
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
18 private static final Logger LOG = Logger.getLogger(PdbFilePatcher.class);
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
19 private static final File TOOLS_HOME_DIR = new File("c:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x64\\srcsrv\\");
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
20
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
21 private final PdbStrExe myPdbStrExe = new PdbStrExe(TOOLS_HOME_DIR);
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
22 private final SrcToolExe mySrcToolExe = new SrcToolExe(TOOLS_HOME_DIR);
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
23
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
24 private final File myHomeDir;
25
f4e0050e2a2f resolve server url from config parameter
Evgeniy.Koshkin
parents: 19
diff changeset
25 private SrcSrvStreamBuilder mySrcSrvStreamBuilder;
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
26
25
f4e0050e2a2f resolve server url from config parameter
Evgeniy.Koshkin
parents: 19
diff changeset
27 public PdbFilePatcher(final File homeDir, final SrcSrvStreamBuilder srcSrvStreamBuilder) {
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
28 myHomeDir = homeDir;
25
f4e0050e2a2f resolve server url from config parameter
Evgeniy.Koshkin
parents: 19
diff changeset
29 mySrcSrvStreamBuilder = srcSrvStreamBuilder;
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
30 }
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
31
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
32 public void patch(File symbolsFile, BuildProgressLogger buildLogger) throws Exception {
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
33 final Collection<File> sourceFiles = mySrcToolExe.getReferencedSourceFiles(symbolsFile);
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
34 if(sourceFiles.isEmpty()){
19
c038e1a8c8a5 fixed srcsrv stream content template - srctool now says that files are indexed
Evgeniy.Koshkin
parents: 18
diff changeset
35 final String message = "No source information found in pdb file " + symbolsFile.getCanonicalPath();
18
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
36 buildLogger.warning(message);
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
37 LOG.debug(message);
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
38 return;
d1c5ce19d0f7 added warning in case source info was not found in pdb
Evgeniy.Koshkin
parents: 15
diff changeset
39 }
15
37172df1b16e check written 'srcsrv' stream content
Evgeniy.Koshkin
parents: 12
diff changeset
40 final File tmpFile = FileUtil.createTempFile(myHomeDir, "pdb-", ".patch", false);
25
f4e0050e2a2f resolve server url from config parameter
Evgeniy.Koshkin
parents: 19
diff changeset
41 mySrcSrvStreamBuilder.dumpStreamToFile(tmpFile, sourceFiles);
27
76ed2d58c871 - reused home path between all srcsrv-related utilities
Evgeniy.Koshkin
parents: 25
diff changeset
42 myPdbStrExe.doCommand(PdbStrExeCommands.WRITE, symbolsFile, tmpFile, PdbStrExe.SRCSRV_STREAM_NAME);
12
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
43 }
662a0be55de7 - source indexing works!
Evgeniy.Koshkin
parents:
diff changeset
44 }