upload-symbols.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python
  2. import os
  3. import glob
  4. import sys
  5. from lib.config import PLATFORM, s3_config, enable_verbose_mode
  6. from lib.util import electron_gyp, execute, rm_rf, safe_mkdir, s3put
  7. SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
  8. DIST_DIR = os.path.join(SOURCE_ROOT, 'dist')
  9. RELEASE_DIR = os.path.join(SOURCE_ROOT, 'out', 'R')
  10. PROJECT_NAME = electron_gyp()['project_name%']
  11. PRODUCT_NAME = electron_gyp()['product_name%']
  12. if PLATFORM == 'win32':
  13. SYMBOLS_DIR = os.path.join(DIST_DIR, 'symbols')
  14. else:
  15. SYMBOLS_DIR = os.path.join(DIST_DIR, '{0}.breakpad.syms'.format(PROJECT_NAME))
  16. PDB_LIST = [
  17. os.path.join(RELEASE_DIR, '{0}.exe.pdb'.format(PROJECT_NAME)),
  18. os.path.join(RELEASE_DIR, 'node.dll.pdb')
  19. ]
  20. def main():
  21. os.chdir(SOURCE_ROOT)
  22. if PLATFORM == 'win32':
  23. for pdb in PDB_LIST:
  24. run_symstore(pdb, SYMBOLS_DIR, PRODUCT_NAME)
  25. files = glob.glob(SYMBOLS_DIR + '/*.pdb/*/*.pdb')
  26. files = [f.lower() for f in files]
  27. else:
  28. files = glob.glob(SYMBOLS_DIR + '/*/*/*.sym')
  29. bucket, access_key, secret_key = s3_config()
  30. upload_symbols(bucket, access_key, secret_key, files)
  31. def run_symstore(pdb, dest, product):
  32. execute(['symstore', 'add', '/r', '/f', pdb, '/s', dest, '/t', product])
  33. def upload_symbols(bucket, access_key, secret_key, files):
  34. s3put(bucket, access_key, secret_key, SYMBOLS_DIR, 'atom-shell/symbols',
  35. files)
  36. if __name__ == '__main__':
  37. sys.exit(main())