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)
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
def generate_localizations(self, locales, force): localizations = compiler.GenerateLocalizations(locales) localizations.generate(force) self.include.add(os.path.abspath(localizations.output))
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