예제 #1
0
def check_tests(args):
    """Runs an extra compile pass over the test code to check for type errors.

  Returns:
    True on success, False on failure.
  """
    logging.info('Checking the tests for type errors...')

    complete_build = complete_build_files()
    if not complete_build:
        return False

    match = re.compile(r'.*\.js$')
    base = shakaBuildHelpers.get_source_base()

    def get(*path_components):
        return shakaBuildHelpers.get_all_files(
            os.path.join(base, *path_components), match)

    files = complete_build
    files.update(
        set(get('externs') + get('test') + get('third_party', 'closure')))
    files.add(os.path.join(base, 'demo', 'common', 'asset.js'))
    files.add(os.path.join(base, 'demo', 'common', 'assets.js'))
    files.add(os.path.join(base, 'demo', 'common', 'message_ids.js'))

    localizations = compiler.GenerateLocalizations(None)
    localizations.generate(args.force)
    files.add(localizations.output)

    closure_opts = build.common_closure_opts + build.common_closure_defines
    closure_opts += build.debug_closure_opts + build.debug_closure_defines

    # Ignore missing goog.require since we assume the whole library is
    # already included.
    closure_opts += [
        '--jscomp_off=missingRequire', '--jscomp_off=strictMissingRequire',
        '--checks-only', '-O', 'SIMPLE'
    ]

    # Set up a build with the build name of "dummy".  With output_compiled_bundle
    # set to False, the build name is irrelevant, since we won't generate any
    # compiled output.
    closure = compiler.ClosureCompiler(files, 'dummy')
    closure.output_compiled_bundle = False
    # Instead of creating a compiled bundle, we will touch a timestamp file to
    # keep track of how recently we've run this check.
    closure.timestamp_file = os.path.join(base, 'dist', '.testcheckstamp')
    return closure.compile(closure_opts, args.force)
예제 #2
0
def main(args):
    # Make the dist/ folder, ignore errors.
    base = shakaBuildHelpers.get_source_base()
    try:
        os.mkdir(os.path.join(base, 'dist'))
    except OSError:
        pass

    localizations = compiler.GenerateLocalizations(
        generateLocalizations.DEFAULT_LOCALES)
    if not localizations.generate(False):
        return 1

    if not compile_less('ui', 'controls'):
        return 1

    return 0
예제 #3
0
 def generate_localizations(self, locales, force):
     localizations = compiler.GenerateLocalizations(locales)
     localizations.generate(force)
     self.include.add(os.path.abspath(localizations.output))
예제 #4
0
파일: all.py 프로젝트: A-suuga/shaka-player
def main(args):
  parser = argparse.ArgumentParser(
      description='User facing build script for building the Shaka'
                  ' Player Project.')

  parser.add_argument(
      '--locales',
      type=str,
      nargs='+',
      default=generateLocalizations.DEFAULT_LOCALES,
      help='The list of locales to compile in (default %(default)r)')

  parser.add_argument(
      '--fix',
      help='Automatically fix style violations.',
      action='store_true')

  parser.add_argument(
      '--force',
      '-f',
      help='Force building the library even if no files have changed.',
      action='store_true')

  parser.add_argument(
      '--debug',
      help='Limit which build types to build. Will at least build the debug '
           'version.',
      action='store_true')

  parser.add_argument(
      '--release',
      help='Limit which build types to build. Will at least build the '
           'release version.',
      action='store_true')

  parsed_args = parser.parse_args(args)

  # Make the dist/ folder, ignore errors.
  base = shakaBuildHelpers.get_source_base()
  try:
    os.mkdir(os.path.join(base, 'dist'))
  except OSError:
    pass

  # Generate localizations before running gendeps, so the output is available
  # to the deps system.
  # TODO(#1858): It might be time to look at a third-party build system.
  localizations = compiler.GenerateLocalizations(parsed_args.locales)
  if not localizations.generate(parsed_args.force):
    return 1

  if gendeps.main([]) != 0:
    return 1

  check_args = []
  if parsed_args.fix:
    check_args += ['--fix']
  if parsed_args.force:
    check_args += ['--force']
  if check.main(check_args) != 0:
    return 1

  docs_args = []
  if parsed_args.force:
    docs_args += ['--force']
  if docs.main(docs_args) != 0:
    return 1

  if not compile_less('ui', 'controls', parsed_args):
    return 1;
  # if not compile_less('demo', 'demo', parsed_args):
  #   return 1

  build_args_with_ui = ['--name', 'ui', '+@complete']
  build_args_with_ui += ['--locales'] + parsed_args.locales
  build_args_without_ui = ['--name', 'compiled', '+@complete', '-@ui']

  if parsed_args.force:
    build_args_with_ui += ['--force']
    build_args_without_ui += ['--force']

  # Create the list of build modes to build with. If the list is empty
  # by the end, then populate it with every mode.
  modes = []
  modes += ['debug'] if parsed_args.debug else []
  modes += ['release'] if parsed_args.release else []

  # If --debug or --release are not given, build with everything.
  if not modes:
    modes += ['debug', 'release']

  for mode in modes:
    # Complete build includes the UI library, but it is optional and player lib
    # should build and work without it as well.
    # First, build the full build (UI included) and then build excluding UI.
    for build_args in [build_args_with_ui, build_args_without_ui]:
      if build.main(build_args + ['--mode', mode]) != 0:
        return 1

    is_debug = mode == 'debug'
    if not apps.build_all(parsed_args.force, is_debug):
      return 1

  return 0