1
0
mirror of https://github.com/alliedmodders/metamod-source.git synced 2024-11-28 10:24:20 +01:00

Merge pull request #15 from alliedmodders/symbol-upload

Add support for Throttle symbol uploading.
This commit is contained in:
Nicholas Hastings 2016-01-31 12:23:13 -05:00
commit 58c8100361
4 changed files with 85 additions and 0 deletions

View File

@ -429,3 +429,5 @@ if builder.backend == 'amb2':
builder.RunBuildScripts(BuildScripts, { 'MMS': MMS })
if builder.options.breakpad_dump:
builder.RunScript('support/buildbot/BreakpadSymbols', { 'MMS': MMS })

View File

@ -25,4 +25,6 @@ run.options.add_option('-s', '--sdks', default='all', dest='sdks',
'comma-delimited list of engine names (default: %default)')
run.options.add_option('--enable-tests', default=False, dest='enable_tests', action='store_true',
help='Build tests.')
run.options.add_option('--breakpad-dump', action='store_true', dest='breakpad_dump',
default=False, help='Dump and upload breakpad symbols')
run.Configure()

View File

@ -0,0 +1,43 @@
# vim: set ts=2 sw=2 tw=99 noet ft=python:
import os, sys
builder.SetBuildFolder('symbols')
UPLOAD_SCRIPT = os.path.join(builder.sourcePath, 'support', 'buildbot', 'upload_symbols.py')
cxx_tasks = MMS.binaries
for cxx_task in cxx_tasks:
if builder.target_platform in ['windows']:
debug_entry = cxx_task.debug
else:
debug_entry = cxx_task.binary
debug_file = os.path.join(builder.buildPath, debug_entry.path)
if builder.target_platform == 'linux':
argv = ['dump_syms', debug_file, os.path.dirname(debug_file)]
elif builder.target_platform == 'mac':
argv = ['dump_syms', debug_file]
elif builder.target_platform == 'windows':
argv = ['dump_syms.exe', debug_file]
base_file = os.path.splitext(os.path.basename(debug_file))[0]
symbol_file = base_file + '.breakpad'
argv = [sys.executable, UPLOAD_SCRIPT, symbol_file] + argv
builder.AddCommand(
inputs = [UPLOAD_SCRIPT, debug_entry],
argv = argv,
outputs = [symbol_file]
)
def run(self, master, job):
ShellCommand.run(self, master, job)
if self.stdout != None and len(self.stdout) > 0:
request = urllib.Request(symbolServer, self.stdout.encode('utf-8'))
request.add_header("Content-Type", "text/plain")
self.serverResponse = urllib.urlopen(request).read().decode('utf-8')
def spew(self, runner):
if self.stderr != None and len(self.stderr) > 0:
runner.PrintOut(self.stderr)
if self.serverResponse != None and len(self.serverResponse) > 0:
runner.PrintOut(self.serverResponse)

View File

@ -0,0 +1,38 @@
# vim: ts=8 sts=2 sw=2 tw=99 et ft=python:
import sys
import subprocess
import os
try:
import urllib.request as urllib
except ImportError:
import urllib2 as urllib
if len(sys.argv) < 3:
sys.stderr.write('Usage: <symbol-file> <dump-syms-cmd> <args...>\n')
sys.exit(1)
SYMBOL_SERVER = os.environ['BREAKPAD_SYMBOL_SERVER']
symbol_file = sys.argv[1]
cmd_argv = sys.argv[2:]
sys.stdout.write(' '.join(cmd_argv))
sys.stdout.write('\n')
p = subprocess.Popen(
args = cmd_argv,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
shell = False
)
stdout, stderr = p.communicate()
out = stdout.decode('utf8')
err = stdout.decode('utf8')
with open(symbol_file, 'w') as fp:
fp.write(stdout)
fp.write(stderr)
request = urllib.Request(SYMBOL_SERVER, out)
request.add_header('Content-Type', 'text/plain')
server_response = urllib.urlopen(request).read().decode('utf8')
print(server_response)