dump-symbols.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env python
  2. import os
  3. import sys
  4. from lib.config import PLATFORM
  5. from lib.util import electron_gyp, execute, rm_rf
  6. SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  7. DIST_DIR = os.path.join(SOURCE_ROOT, 'dist')
  8. OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'R')
  9. CHROMIUM_DIR = os.path.join(SOURCE_ROOT, 'vendor', 'download',
  10. 'libchromiumcontent', 'static_library')
  11. def main(destination):
  12. rm_rf(destination)
  13. (project_name, product_name) = get_names_from_gyp()
  14. if PLATFORM in ['darwin', 'linux']:
  15. generate_breakpad_symbols = os.path.join(SOURCE_ROOT, 'tools', 'posix',
  16. 'generate_breakpad_symbols.py')
  17. if PLATFORM == 'darwin':
  18. #macOS has an additional helper app; provide the path to that binary also
  19. main_app = os.path.join(OUT_DIR, '{0}.app'.format(product_name),
  20. 'Contents', 'MacOS', product_name)
  21. helper_name = product_name + " Helper"
  22. helper_app = os.path.join(OUT_DIR, '{0}.app'.format(helper_name),
  23. 'Contents', 'MacOS', product_name + " Helper")
  24. binaries = [main_app, helper_app]
  25. else:
  26. binaries = [os.path.join(OUT_DIR, project_name)]
  27. args = [
  28. '--build-dir={0}'.format(OUT_DIR),
  29. '--symbols-dir={0}'.format(destination),
  30. '--libchromiumcontent-dir={0}'.format(CHROMIUM_DIR),
  31. '--clear',
  32. '--jobs=16',
  33. ]
  34. for binary in binaries:
  35. args += '--binary={0}'.format(binary),
  36. else:
  37. generate_breakpad_symbols = os.path.join(SOURCE_ROOT, 'tools', 'win',
  38. 'generate_breakpad_symbols.py')
  39. args = [
  40. '--symbols-dir={0}'.format(destination),
  41. '--jobs=16',
  42. os.path.relpath(OUT_DIR),
  43. ]
  44. execute([sys.executable, generate_breakpad_symbols] + args)
  45. def get_names_from_gyp():
  46. variables = electron_gyp()
  47. return (variables['project_name%'], variables['product_name%'])
  48. if __name__ == '__main__':
  49. sys.exit(main(sys.argv[1]))