linux: Generate symbols from the symbol file.

This commit is contained in:
Cheng Zhao 2014-03-11 09:04:41 +00:00
Родитель 449748b044
Коммит 99ee21d657
2 изменённых файлов: 20 добавлений и 20 удалений

Просмотреть файл

@ -28,6 +28,12 @@ TARGET_PLATFORM = {
'win32': 'win32', 'win32': 'win32',
}[sys.platform] }[sys.platform]
SYMBOL_NAME = {
'darwin': 'libchromiumcontent.dylib.dSYM',
'linux': 'libchromiumcontent.so.dbg',
'win32': 'chromiumcontent.dll.pdb',
}[TARGET_PLATFORM]
TARGET_BINARIES = { TARGET_BINARIES = {
'darwin': [ 'darwin': [
], ],
@ -81,11 +87,8 @@ def main():
args = parse_args() args = parse_args()
if TARGET_PLATFORM == 'linux':
clean_build()
force_build() force_build()
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()
@ -107,16 +110,6 @@ 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'])
@ -170,14 +163,9 @@ def create_version():
def download_libchromiumcontent_symbols(url): def download_libchromiumcontent_symbols(url):
if TARGET_PLATFORM == 'darwin':
symbols_name = 'libchromiumcontent.dylib.dSYM'
elif TARGET_PLATFORM == 'win32':
symbols_name = 'chromiumcontent.dll.pdb'
brightray_dir = os.path.join(SOURCE_ROOT, 'vendor', 'brightray', 'vendor') brightray_dir = os.path.join(SOURCE_ROOT, 'vendor', 'brightray', 'vendor')
target_dir = os.path.join(brightray_dir, 'download', 'libchromiumcontent') target_dir = os.path.join(brightray_dir, 'download', 'libchromiumcontent')
symbols_path = os.path.join(target_dir, 'Release', symbols_name) symbols_path = os.path.join(target_dir, 'Release', SYMBOL_NAME)
if os.path.exists(symbols_path): if os.path.exists(symbols_path):
return return

Просмотреть файл

@ -75,6 +75,16 @@ def GetDSYMBundle(options, binary_path):
return binary_path return binary_path
def GetSymbolPath(options, binary_path):
"""Finds the .dbg to the binary."""
filename = os.path.basename(binary_path)
dbg_path = os.path.join(options.libchromiumcontent_dir, filename) + '.dbg'
if os.path.exists(dbg_path):
return dbg_path
return binary_path
def Resolve(path, exe_path, loader_path, rpaths): def Resolve(path, exe_path, loader_path, rpaths):
"""Resolve a dyld path. """Resolve a dyld path.
@ -178,6 +188,8 @@ def GenerateSymbols(options, binaries):
if sys.platform == 'darwin': if sys.platform == 'darwin':
binary = GetDSYMBundle(options, binary) binary = GetDSYMBundle(options, binary)
elif sys.platform == 'linux2':
binary = GetSymbolPath(options, binary)
syms = GetCommandOutput([GetDumpSymsBinary(options.build_dir), '-r', '-c', syms = GetCommandOutput([GetDumpSymsBinary(options.build_dir), '-r', '-c',
binary]) binary])