From 5fa1f819248235ec6e42aa31af20b7b8168ec778 Mon Sep 17 00:00:00 2001 From: Chris AtLee Date: Tue, 4 Apr 2017 09:26:25 -0400 Subject: [PATCH] Bug 1351071: Get rid of pre-generated startup cache r=glandium MozReview-Commit-ID: BcWcqEKwGBv --HG-- extra : source : 0f320509eddb30fdefd00d17179670381c3b6f78 --- python/mozbuild/mozpack/packager/formats.py | 7 +- python/mozbuild/mozpack/packager/unpack.py | 8 +- .../mozpack/test/test_packager_formats.py | 2 - toolkit/mozapps/installer/packager.py | 74 ------------------- 4 files changed, 3 insertions(+), 88 deletions(-) diff --git a/python/mozbuild/mozpack/packager/formats.py b/python/mozbuild/mozpack/packager/formats.py index 22c87daecbe1..0369a76d0987 100644 --- a/python/mozbuild/mozpack/packager/formats.py +++ b/python/mozbuild/mozpack/packager/formats.py @@ -25,11 +25,6 @@ from mozpack.copier import ( Jarrer, ) -STARTUP_CACHE_PATHS = [ - 'jsloader', - 'jssubloader', -] - ''' Formatters are classes receiving packaging instructions and creating the appropriate package layout. @@ -336,4 +331,4 @@ class OmniJarSubFormatter(PiecemealFormatter): 'greprefs.js', 'hyphenation', 'update.locale', - ] or path[0] in STARTUP_CACHE_PATHS + ] diff --git a/python/mozbuild/mozpack/packager/unpack.py b/python/mozbuild/mozpack/packager/unpack.py index fa2b474e71ee..3f6633efa60a 100644 --- a/python/mozbuild/mozpack/packager/unpack.py +++ b/python/mozbuild/mozpack/packager/unpack.py @@ -23,10 +23,7 @@ from mozpack.copier import ( FileCopier, ) from mozpack.packager import SimplePackager -from mozpack.packager.formats import ( - FlatFormatter, - STARTUP_CACHE_PATHS, -) +from mozpack.packager.formats import FlatFormatter from urlparse import urlparse @@ -188,8 +185,7 @@ def unpack_to_registry(source, registry): finder = UnpackFinder(source) packager = SimplePackager(FlatFormatter(registry)) for p, f in finder.find('*'): - if mozpath.split(p)[0] not in STARTUP_CACHE_PATHS: - packager.add(p, f) + packager.add(p, f) packager.close() diff --git a/python/mozbuild/mozpack/test/test_packager_formats.py b/python/mozbuild/mozpack/test/test_packager_formats.py index 651e53732f6e..5e26e0d86bc5 100644 --- a/python/mozbuild/mozpack/test/test_packager_formats.py +++ b/python/mozbuild/mozpack/test/test_packager_formats.py @@ -412,8 +412,6 @@ class TestFormatters(unittest.TestCase): self.assertTrue(is_resource(base, 'greprefs.js')) self.assertTrue(is_resource(base, 'hyphenation/foo')) self.assertTrue(is_resource(base, 'update.locale')) - self.assertTrue( - is_resource(base, 'jsloader/resource/gre/modules/foo.jsm')) self.assertFalse(is_resource(base, 'foo')) self.assertFalse(is_resource(base, 'foo/bar/greprefs.js')) self.assertTrue(is_resource(base, 'defaults/messenger/foo.dat')) diff --git a/toolkit/mozapps/installer/packager.py b/toolkit/mozapps/installer/packager.py index 734936c41489..7cc6b460d051 100644 --- a/toolkit/mozapps/installer/packager.py +++ b/toolkit/mozapps/installer/packager.py @@ -30,7 +30,6 @@ from createprecomplete import generate_precomplete import os from StringIO import StringIO import subprocess -import platform import mozinfo # List of libraries to shlibsign. @@ -125,60 +124,6 @@ class LibSignFile(File): errors.fatal('Error while signing %s' % self.path) -def precompile_cache(registry, source_path, gre_path, app_path): - ''' - Create startup cache for the given application directory, using the - given GRE path. - - registry is a FileRegistry-like instance where to add the startup cache. - - source_path is the base path of the package. - - gre_path is the GRE path, relative to source_path. - - app_path is the application path, relative to source_path. - Startup cache for all resources under resource://app/ are generated, - except when gre_path == app_path, in which case it's under - resource://gre/. - ''' - from tempfile import mkstemp - source_path = os.path.abspath(source_path) - if app_path != gre_path: - resource = 'app' - else: - resource = 'gre' - app_path = os.path.join(source_path, app_path) - gre_path = os.path.join(source_path, gre_path) - - fd, cache = mkstemp('.zip') - os.close(fd) - os.remove(cache) - - try: - extra_env = {'MOZ_STARTUP_CACHE': cache} - if buildconfig.substs.get('MOZ_TSAN'): - extra_env['TSAN_OPTIONS'] = 'report_bugs=0' - if buildconfig.substs.get('MOZ_ASAN'): - extra_env['ASAN_OPTIONS'] = 'detect_leaks=0' - if launcher.launch(['xpcshell', '-g', gre_path, '-a', app_path, - '-f', os.path.join(os.path.dirname(__file__), - 'precompile_cache.js'), - '-e', 'precompile_startupcache("resource://%s/");' - % resource], - extra_linker_path=gre_path, - extra_env=extra_env): - errors.fatal('Error while running startup cache precompilation') - return - from mozpack.mozjar import JarReader - jar = JarReader(cache) - resource = '/resource/%s/' % resource - for f in jar: - if resource in f.filename: - path = f.filename[f.filename.index(resource) + len(resource):] - if registry.contains(path): - registry.add(f.filename, GeneratedFile(f.read())) - jar.close() - finally: - if os.path.exists(cache): - os.remove(cache) - - class RemovedFiles(GeneratedFile): ''' File class for removed-files. Is used as a preprocessor parser. @@ -372,25 +317,6 @@ def main(): if key in log: f.preload(log[key]) - # Fill startup cache - if isinstance(formatter, OmniJarFormatter) and launcher.can_launch() \ - and buildconfig.substs['MOZ_DISABLE_STARTUPCACHE'] != '1': - gre_path = None - def get_bases(): - for b in sink.packager.get_bases(addons=False): - for p in (mozpath.join('bin', b), b): - if os.path.exists(os.path.join(args.source, p)): - yield p - break - for base in sorted(get_bases()): - if not gre_path: - gre_path = base - omnijar_path = mozpath.join(sink.normalize_path(base), - buildconfig.substs['OMNIJAR_NAME']) - if formatter.contains(omnijar_path): - precompile_cache(formatter.copier[omnijar_path], - args.source, gre_path, base) - copier.copy(args.destination) generate_precomplete(os.path.normpath(os.path.join(args.destination, respath)))