Merge pull request #189 from atom/linux-symbols
Dump breakpad symbols on Linux
This commit is contained in:
commit
f3103e9b00
6 changed files with 80 additions and 7 deletions
45
atom.gyp
45
atom.gyp
|
@ -488,7 +488,7 @@
|
||||||
],
|
],
|
||||||
'action': [
|
'action': [
|
||||||
'python',
|
'python',
|
||||||
'tools/mac/generate_breakpad_symbols.py',
|
'tools/posix/generate_breakpad_symbols.py',
|
||||||
'--build-dir=<(PRODUCT_DIR)',
|
'--build-dir=<(PRODUCT_DIR)',
|
||||||
'--binary=<(PRODUCT_DIR)/<(product_name).app/Contents/MacOS/<(product_name)',
|
'--binary=<(PRODUCT_DIR)/<(product_name).app/Contents/MacOS/<(product_name)',
|
||||||
'--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
|
'--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
|
||||||
|
@ -520,6 +520,49 @@
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}], # OS=="win"
|
}], # OS=="win"
|
||||||
|
['OS=="linux"', {
|
||||||
|
'dependencies': [
|
||||||
|
'vendor/breakpad/breakpad.gyp:dump_syms',
|
||||||
|
],
|
||||||
|
'actions': [
|
||||||
|
{
|
||||||
|
'action_name': 'Dump Symbols',
|
||||||
|
'inputs': [
|
||||||
|
'<(PRODUCT_DIR)/<(project_name)',
|
||||||
|
],
|
||||||
|
'outputs': [
|
||||||
|
'<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
|
||||||
|
],
|
||||||
|
'action': [
|
||||||
|
'python',
|
||||||
|
'tools/posix/generate_breakpad_symbols.py',
|
||||||
|
'--build-dir=<(PRODUCT_DIR)',
|
||||||
|
'--binary=<(PRODUCT_DIR)/<(project_name)',
|
||||||
|
'--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
|
||||||
|
'--libchromiumcontent-dir=<(libchromiumcontent_library_dir)',
|
||||||
|
'--clear',
|
||||||
|
'--jobs=16',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'action_name': 'Strip Binary',
|
||||||
|
'inputs': [
|
||||||
|
'<(PRODUCT_DIR)/libchromiumcontent.so',
|
||||||
|
'<(PRODUCT_DIR)/libffmpegsumo.so',
|
||||||
|
'<(PRODUCT_DIR)/<(project_name)',
|
||||||
|
# Add the syms folder as input would force this action to run
|
||||||
|
# after the 'Dump Symbols' action. And since it is a folder,
|
||||||
|
# it would be ignored by the 'strip' command.
|
||||||
|
'<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
|
||||||
|
],
|
||||||
|
'outputs': [
|
||||||
|
# Gyp action requires a output file, add a fake one here.
|
||||||
|
'<(PRODUCT_DIR)/dummy_file',
|
||||||
|
],
|
||||||
|
'action': [ 'strip', '<@(_inputs)' ],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}], # OS=="linux"
|
||||||
],
|
],
|
||||||
}, # target <(project_name>_dump_symbols
|
}, # target <(project_name>_dump_symbols
|
||||||
],
|
],
|
||||||
|
|
19
common.gypi
19
common.gypi
|
@ -244,5 +244,24 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}], # OS=="mac"
|
}], # OS=="mac"
|
||||||
|
# The breakpad on Linux needs the binary to be built with -g to generate
|
||||||
|
# unmangled symbols.
|
||||||
|
['OS=="linux"', {
|
||||||
|
'target_defaults': {
|
||||||
|
'cflags': [ '-g' ],
|
||||||
|
'conditions': [
|
||||||
|
['target_arch=="ia32"', {
|
||||||
|
'target_conditions': [
|
||||||
|
['_toolset=="target"', {
|
||||||
|
'ldflags': [
|
||||||
|
# Workaround for linker OOM.
|
||||||
|
'-Wl,--no-keep-memory',
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}],
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,8 @@ def main():
|
||||||
|
|
||||||
run_script('bootstrap.py')
|
run_script('bootstrap.py')
|
||||||
run_script('cpplint.py')
|
run_script('cpplint.py')
|
||||||
run_script('pylint.py')
|
if sys.platform != 'win32':
|
||||||
|
run_script('pylint.py')
|
||||||
run_script('coffeelint.py')
|
run_script('coffeelint.py')
|
||||||
run_script('build.py')
|
run_script('build.py')
|
||||||
run_script('test.py', ['--ci'])
|
run_script('test.py', ['--ci'])
|
||||||
|
|
|
@ -9,7 +9,7 @@ import tarfile
|
||||||
|
|
||||||
from lib.config import LIBCHROMIUMCONTENT_COMMIT, BASE_URL, NODE_VERSION
|
from lib.config import LIBCHROMIUMCONTENT_COMMIT, BASE_URL, NODE_VERSION
|
||||||
from lib.util import scoped_cwd, rm_rf, get_atom_shell_version, make_zip, \
|
from lib.util import scoped_cwd, rm_rf, get_atom_shell_version, make_zip, \
|
||||||
safe_mkdir, execute
|
safe_mkdir, safe_unlink, execute
|
||||||
|
|
||||||
|
|
||||||
ATOM_SHELL_VRESION = get_atom_shell_version()
|
ATOM_SHELL_VRESION = get_atom_shell_version()
|
||||||
|
@ -81,10 +81,12 @@ def main():
|
||||||
|
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
|
|
||||||
|
if TARGET_PLATFORM == 'linux':
|
||||||
|
clean_build()
|
||||||
force_build()
|
force_build()
|
||||||
if TARGET_PLATFORM != 'linux':
|
if TARGET_PLATFORM != 'linux':
|
||||||
download_libchromiumcontent_symbols(args.url)
|
download_libchromiumcontent_symbols(args.url)
|
||||||
create_symbols()
|
create_symbols()
|
||||||
copy_binaries()
|
copy_binaries()
|
||||||
copy_headers()
|
copy_headers()
|
||||||
copy_license()
|
copy_license()
|
||||||
|
@ -105,6 +107,16 @@ def parse_args():
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def clean_build():
|
||||||
|
# On Linux stripping binary would cause them to be rebuilt next time, which
|
||||||
|
# would make create-dist create symbols from stripped binary if it has been
|
||||||
|
# ran for twice.
|
||||||
|
# So in order to make sure we built correct symbols everytime, we have to
|
||||||
|
# force a rebuild of the binaries.
|
||||||
|
for binary in TARGET_BINARIES[TARGET_PLATFORM]:
|
||||||
|
safe_unlink(os.path.join(OUT_DIR, binary))
|
||||||
|
|
||||||
|
|
||||||
def force_build():
|
def force_build():
|
||||||
build = os.path.join(SOURCE_ROOT, 'script', 'build.py')
|
build = os.path.join(SOURCE_ROOT, 'script', 'build.py')
|
||||||
execute([sys.executable, build, '-c', 'Release'])
|
execute([sys.executable, build, '-c', 'Release'])
|
||||||
|
@ -205,8 +217,6 @@ def create_symbols_zip():
|
||||||
with scoped_cwd(DIST_DIR):
|
with scoped_cwd(DIST_DIR):
|
||||||
files = ['LICENSE', 'version']
|
files = ['LICENSE', 'version']
|
||||||
dirs = ['Atom-Shell.breakpad.syms']
|
dirs = ['Atom-Shell.breakpad.syms']
|
||||||
if TARGET_PLATFORM == 'linux':
|
|
||||||
dirs = []
|
|
||||||
make_zip(zip_file, files, dirs)
|
make_zip(zip_file, files, dirs)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
NODE_VERSION = 'v0.11.10'
|
NODE_VERSION = 'v0.11.10'
|
||||||
BASE_URL = 'https://gh-contractor-zcbenz.s3.amazonaws.com/libchromiumcontent'
|
BASE_URL = 'https://gh-contractor-zcbenz.s3.amazonaws.com/libchromiumcontent'
|
||||||
LIBCHROMIUMCONTENT_COMMIT = 'aa4874a6bcc51fdd87ca7ae0928514ce83645988'
|
LIBCHROMIUMCONTENT_COMMIT = '9c654df782c77449e7d8fa741843143145260aeb'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue