Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: ppapi/native_client/chrome_main.scons

Issue 20370002: Remove some old support for PNaCl Scons browser tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: some tests Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | ppapi/native_client/tests/breakpad_crash_test/nacl.scons » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #! -*- python -*- 1 #! -*- python -*-
2 # Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import json 6 import json
7 import os 7 import os
8 import shutil 8 import shutil
9 import sys 9 import sys
10 10
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 def CopyLibsForExtensionCommand(target, source, env): 166 def CopyLibsForExtensionCommand(target, source, env):
167 source_manifest = str(source[0]) 167 source_manifest = str(source[0])
168 target_manifest = str(target[0]) 168 target_manifest = str(target[0])
169 shutil.copyfile(source_manifest, target_manifest) 169 shutil.copyfile(source_manifest, target_manifest)
170 target_dir = os.path.dirname(target_manifest) 170 target_dir = os.path.dirname(target_manifest)
171 libs_file = open(str(source[1]), 'r') 171 libs_file = open(str(source[1]), 'r')
172 for line in libs_file.readlines(): 172 for line in libs_file.readlines():
173 lib_info = ParseLibInfoInRunnableLdLog(line) 173 lib_info = ParseLibInfoInRunnableLdLog(line)
174 if lib_info: 174 if lib_info:
175 lib_name, lib_path = lib_info 175 lib_name, lib_path = lib_info
176 # Note: This probably does NOT work with pnacl _pexes_ right now, because
177 # the NEEDED metadata in the bitcode doesn't have the original file paths.
178 # This should probably be done without such knowledge.
179 if lib_path == 'NaClMain': 176 if lib_path == 'NaClMain':
180 # This is a fake file name, which we cannot copy. 177 # This is a fake file name, which we cannot copy.
181 continue 178 continue
182 shutil.copyfile(lib_path, os.path.join(target_dir, lib_name)) 179 shutil.copyfile(lib_path, os.path.join(target_dir, lib_name))
183 shutil.copyfile(env.subst('${NACL_SDK_LIB}/runnable-ld.so'), 180 shutil.copyfile(env.subst('${NACL_SDK_LIB}/runnable-ld.so'),
184 os.path.join(target_dir, 'runnable-ld.so')) 181 os.path.join(target_dir, 'runnable-ld.so'))
185 libs_file.close() 182 libs_file.close()
186 183
187 184
188 # Extensions are loaded from directory on disk and so all dynamic libraries 185 # Extensions are loaded from directory on disk and so all dynamic libraries
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 obj['files']['main.nexe'] = {} 282 obj['files']['main.nexe'] = {}
286 for k, v in obj['program'].items(): 283 for k, v in obj['program'].items():
287 obj['files']['main.nexe'][k] = v.copy() 284 obj['files']['main.nexe'][k] = v.copy()
288 v['url'] = 'runnable-ld.so' 285 v['url'] = 'runnable-ld.so'
289 # Write the new manifest! 286 # Write the new manifest!
290 target_file = open(str(target[0]), 'w') 287 target_file = open(str(target[0]), 'w')
291 json.dump(obj, target_file, sort_keys=True, indent=2) 288 json.dump(obj, target_file, sort_keys=True, indent=2)
292 target_file.close() 289 target_file.close()
293 return 0 290 return 0
294 291
295 def GenerateManifestPnacl(env, dest_file, manifest, exe_file):
296 return env.Command(
297 dest_file,
298 ['${GENNMF}', exe_file, manifest],
299 # Generate a flat url scheme to simplify file-staging.
300 ('${SOURCES[0]} ${SOURCES[1]} -L${NACL_SDK_LIB} -L${LIB_DIR} '
301 ' --flat-url-scheme --base-nmf ${SOURCES[2]} -o ${TARGET}'))
302 292
303 def GenerateManifestDynamicLink(env, dest_file, lib_list_file, 293 def GenerateManifestDynamicLink(env, dest_file, lib_list_file,
304 manifest, exe_file): 294 manifest, exe_file):
305 # Run sel_ldr on the nexe to trace the NEEDED libraries. 295 # Run sel_ldr on the nexe to trace the NEEDED libraries.
306 lib_list_node = env.Command( 296 lib_list_node = env.Command(
307 lib_list_file, 297 lib_list_file,
308 [env.GetSelLdr(), 298 [env.GetSelLdr(),
309 '${NACL_SDK_LIB}/runnable-ld.so', 299 '${NACL_SDK_LIB}/runnable-ld.so',
310 exe_file, 300 exe_file,
311 '${SCONSTRUCT_DIR}/DEPS'], 301 '${SCONSTRUCT_DIR}/DEPS'],
(...skipping 17 matching lines...) Expand all
329 fh.close() 319 fh.close()
330 node = env.Command(dest_file, [], Func)[0] 320 node = env.Command(dest_file, [], Func)[0]
331 # Scons does not track the dependency of dest_file on exe_name or on 321 # Scons does not track the dependency of dest_file on exe_name or on
332 # the Python code above, so we should always recreate dest_file when 322 # the Python code above, so we should always recreate dest_file when
333 # it is used. 323 # it is used.
334 env.AlwaysBuild(node) 324 env.AlwaysBuild(node)
335 return node 325 return node
336 326
337 327
338 def GenerateSimpleManifest(env, dest_file, exe_name): 328 def GenerateSimpleManifest(env, dest_file, exe_name):
339 if env.Bit('pnacl_generate_pexe'): 329 if env.Bit('nacl_static_link'):
340 static_manifest = GenerateSimpleManifestStaticLink(
341 env, '%s.static' % dest_file, exe_name)
342 return GenerateManifestPnacl(env, dest_file, static_manifest,
343 '${STAGING_DIR}/%s.pexe' %
344 env.ProgramNameForNmf(exe_name))
345 elif env.Bit('nacl_static_link'):
346 return GenerateSimpleManifestStaticLink(env, dest_file, exe_name) 330 return GenerateSimpleManifestStaticLink(env, dest_file, exe_name)
347 else: 331 else:
348 static_manifest = GenerateSimpleManifestStaticLink( 332 static_manifest = GenerateSimpleManifestStaticLink(
349 env, '%s.static' % dest_file, exe_name) 333 env, '%s.static' % dest_file, exe_name)
350 return GenerateManifestDynamicLink( 334 return GenerateManifestDynamicLink(
351 env, dest_file, '%s.tmp_lib_list' % dest_file, static_manifest, 335 env, dest_file, '%s.tmp_lib_list' % dest_file, static_manifest,
352 '${STAGING_DIR}/%s.nexe' % env.ProgramNameForNmf(exe_name)) 336 '${STAGING_DIR}/%s.nexe' % env.ProgramNameForNmf(exe_name))
353 337
354 pre_base_env.AddMethod(GenerateSimpleManifest) 338 pre_base_env.AddMethod(GenerateSimpleManifest)
355 339
356 340
357 # Returns a pair (main program, is_portable), based on the program 341 # Returns a pair (main program, is_portable), based on the program
358 # specified in manifest file. 342 # specified in manifest file.
359 def GetMainProgramFromManifest(env, manifest): 343 def GetMainProgramFromManifest(env, manifest):
360 obj = json.loads(env.File(manifest).get_contents()) 344 obj = json.loads(env.File(manifest).get_contents())
361 program_dict = obj['program'] 345 program_dict = obj['program']
362 if env.Bit('pnacl_generate_pexe') and 'portable' in program_dict: 346 return program_dict[env.subst('${TARGET_FULLARCH}')]['url']
363 return program_dict['portable']['pnacl-translate']['url']
364 else:
365 return program_dict[env.subst('${TARGET_FULLARCH}')]['url']
366 347
367 348
368 # Returns scons node for generated manifest. 349 # Returns scons node for generated manifest.
369 def GeneratedManifestNode(env, manifest): 350 def GeneratedManifestNode(env, manifest):
370 manifest = env.subst(manifest) 351 manifest = env.subst(manifest)
371 manifest_base_name = os.path.basename(manifest) 352 manifest_base_name = os.path.basename(manifest)
372 main_program = GetMainProgramFromManifest(env, manifest) 353 main_program = GetMainProgramFromManifest(env, manifest)
373 result = env.File('${STAGING_DIR}/' + manifest_base_name) 354 result = env.File('${STAGING_DIR}/' + manifest_base_name)
374 # Always generate the manifest for nacl_glibc and pnacl pexes. 355 # Always generate the manifest for nacl_glibc.
375 # For nacl_glibc, generating the mapping of shared libraries is non-trivial. 356 # For nacl_glibc, generating the mapping of shared libraries is non-trivial.
376 # For pnacl, the manifest currently hosts a sha for the pexe. 357 if not env.Bit('nacl_glibc'):
377 if not env.Bit('nacl_glibc') and not env.Bit('pnacl_generate_pexe'):
378 env.Install('${STAGING_DIR}', manifest) 358 env.Install('${STAGING_DIR}', manifest)
379 return result 359 return result
380 if env.Bit('pnacl_generate_pexe'): 360 return GenerateManifestDynamicLink(
381 return GenerateManifestPnacl( 361 env, '${STAGING_DIR}/' + manifest_base_name,
382 env, 362 # Note that CopyLibsForExtension() and WhitelistLibsForExtension()
383 '${STAGING_DIR}/' + manifest_base_name, 363 # assume that it can find the library list file under this filename.
384 manifest, 364 GlibcManifestLibsListFilename(manifest_base_name),
385 env.File('${STAGING_DIR}/' + os.path.basename(main_program))) 365 manifest,
386 else: 366 env.File('${STAGING_DIR}/' + os.path.basename(main_program)))
387 return GenerateManifestDynamicLink(
388 env, '${STAGING_DIR}/' + manifest_base_name,
389 # Note that CopyLibsForExtension() and WhitelistLibsForExtension()
390 # assume that it can find the library list file under this filename.
391 GlibcManifestLibsListFilename(manifest_base_name),
392 manifest,
393 env.File('${STAGING_DIR}/' + os.path.basename(main_program)))
394 return result 367 return result
395 368
396 369
397 # Compares output_file and golden_file. 370 # Compares output_file and golden_file.
398 # If they are different, prints the difference and returns 1. 371 # If they are different, prints the difference and returns 1.
399 # Otherwise, returns 0. 372 # Otherwise, returns 0.
400 def CheckGoldenFile(golden_file, output_file, 373 def CheckGoldenFile(golden_file, output_file,
401 filter_regex, filter_inverse, filter_group_only): 374 filter_regex, filter_inverse, filter_group_only):
402 golden = open(golden_file).read() 375 golden = open(golden_file).read()
403 actual = open(output_file).read() 376 actual = open(output_file).read()
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 427
455 # No browser tests run on arm-thumb2 428 # No browser tests run on arm-thumb2
456 # Bug http://code.google.com/p/nativeclient/issues/detail?id=2224 429 # Bug http://code.google.com/p/nativeclient/issues/detail?id=2224
457 if env.Bit('target_arm_thumb2'): 430 if env.Bit('target_arm_thumb2'):
458 return [] 431 return []
459 432
460 # Handle issues with mutating any python default arg lists. 433 # Handle issues with mutating any python default arg lists.
461 if browser_flags is None: 434 if browser_flags is None:
462 browser_flags = [] 435 browser_flags = []
463 436
464 if env.Bit('pnacl_generate_pexe'):
465 # We likely prefer to choose the 'portable' field in nmfs in this mode.
466 args = args + ['--prefer_portable_in_manifest']
467
468 # Lint the extra arguments that are being passed to the tester. 437 # Lint the extra arguments that are being passed to the tester.
469 special_args = ['--ppapi_plugin', '--sel_ldr', '--irt_library', '--file', 438 special_args = ['--ppapi_plugin', '--sel_ldr', '--irt_library', '--file',
470 '--map_file', '--extension', '--mime_type', '--tool', 439 '--map_file', '--extension', '--mime_type', '--tool',
471 '--browser_flag', '--test_arg'] 440 '--browser_flag', '--test_arg']
472 for arg_name in special_args: 441 for arg_name in special_args:
473 if arg_name in args: 442 if arg_name in args:
474 raise Exception('%s: %r is a test argument provided by the SCons test' 443 raise Exception('%s: %r is a test argument provided by the SCons test'
475 ' wrapper, do not specify it as an additional argument' % 444 ' wrapper, do not specify it as an additional argument' %
476 (target, arg_name)) 445 (target, arg_name))
477 446
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 568
600 pre_base_env.AddMethod(PPAPIGraphics3DIsBroken) 569 pre_base_env.AddMethod(PPAPIGraphics3DIsBroken)
601 570
602 571
603 def AddChromeFilesFromGroup(env, file_group): 572 def AddChromeFilesFromGroup(env, file_group):
604 env['BUILD_SCONSCRIPTS'] = ExtendFileList( 573 env['BUILD_SCONSCRIPTS'] = ExtendFileList(
605 env.get('BUILD_SCONSCRIPTS', []), 574 env.get('BUILD_SCONSCRIPTS', []),
606 ppapi_scons_files[file_group]) 575 ppapi_scons_files[file_group])
607 576
608 pre_base_env.AddMethod(AddChromeFilesFromGroup) 577 pre_base_env.AddMethod(AddChromeFilesFromGroup)
OLDNEW
« no previous file with comments | « no previous file | ppapi/native_client/tests/breakpad_crash_test/nacl.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698