Bug 1306329 - Backout 621aa115c3df (bug 1316450). r=glandium
☠☠ backed out by 93ffc3c44ee3 ☠ ☠
authorMike Hommey <mh+mozilla@glandium.org>
Sat, 14 Jan 2017 07:47:43 +0900
changeset 377113 ad4e531c7070874770201b5af956f3f8045c973b
parent 377112 58764883978d7959d480b9d2722c16f40f63bf96
child 377114 377ca1419f1aca2b43fbdfe83023c25c2f671ca0
push id1419
push userjlund@mozilla.com
push dateMon, 10 Apr 2017 20:44:07 +0000
treeherdermozilla-release@5e6801b73ef6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1306329, 1316450
milestone53.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1306329 - Backout 621aa115c3df (bug 1316450). r=glandium We're going to remove the xpcom glue, so there is no need to check that nothing depends on it anymore.
python/mozbuild/mozbuild/frontend/data.py
python/mozbuild/mozbuild/frontend/emitter.py
python/mozbuild/mozbuild/test/frontend/test_emitter.py
--- a/python/mozbuild/mozbuild/frontend/data.py
+++ b/python/mozbuild/mozbuild/frontend/data.py
@@ -312,26 +312,24 @@ class LinkageWrongKindError(Exception):
 
 class LinkageMultipleRustLibrariesError(Exception):
     """Error thrown when trying to link multiple Rust libraries to an object"""
 
 
 class Linkable(ContextDerived):
     """Generic context derived container object for programs and libraries"""
     __slots__ = (
-        'name',
         'cxx_link',
         'lib_defines',
         'linked_libraries',
         'linked_system_libs',
     )
 
-    def __init__(self, context, name):
+    def __init__(self, context):
         ContextDerived.__init__(self, context)
-        self.name = name
         self.cxx_link = False
         self.linked_libraries = []
         self.linked_system_libs = []
         self.lib_defines = Defines(context, {})
 
     def link_library(self, obj):
         assert isinstance(obj, BaseLibrary)
         if isinstance(obj, SharedLibrary) and obj.variant == obj.COMPONENT:
@@ -380,17 +378,17 @@ class BaseProgram(Linkable):
     DICT_ATTRS = {
         'install_target',
         'KIND',
         'program',
         'relobjdir',
     }
 
     def __init__(self, context, program, is_unit_test=False):
-        Linkable.__init__(self, context, program)
+        Linkable.__init__(self, context)
 
         bin_suffix = context.config.substs.get(self.SUFFIX_VAR, '')
         if not program.endswith(bin_suffix):
             program += bin_suffix
         self.program = program
         self.is_unit_test = is_unit_test
 
     def __repr__(self):
@@ -470,17 +468,17 @@ class BaseLibrary(Linkable):
     __slots__ = (
         'basename',
         'lib_name',
         'import_name',
         'refs',
     )
 
     def __init__(self, context, basename):
-        Linkable.__init__(self, context, basename)
+        Linkable.__init__(self, context)
 
         self.basename = self.lib_name = basename
         if self.lib_name:
             self.lib_name = '%s%s%s' % (
                 context.config.lib_prefix,
                 self.lib_name,
                 context.config.lib_suffix
             )
--- a/python/mozbuild/mozbuild/frontend/emitter.py
+++ b/python/mozbuild/mozbuild/frontend/emitter.py
@@ -98,26 +98,16 @@ from .context import (
     Path,
     SubContext,
     TemplateContext,
 )
 
 from mozbuild.base import ExecutionSummary
 
 
-ALLOWED_XPCOM_GLUE = {
-    ('xpcshell', 'js/xpconnect/shell'),
-    ('testcrasher', 'toolkit/crashreporter/test'),
-    ('TestMailCookie', 'mailnews/base/test'),
-    ('calbasecomps', 'calendar/base/backend/libical/build'),
-    ('purplexpcom', 'extensions/purple/purplexpcom/src'),
-    ('ipdlunittest', 'ipc/ipdl/test/cxx/app'),
-}
-
-
 class TreeMetadataEmitter(LoggingMixin):
     """Converts the executed mozbuild files into data structures.
 
     This is a bridge between reader.py and data.py. It takes what was read by
     reader.BuildReader and converts it into the classes defined in the data
     module.
     """
 
@@ -279,25 +269,21 @@ class TreeMetadataEmitter(LoggingMixin):
         'host': 'HOST_LIBRARY_NAME',
         'target': 'LIBRARY_NAME',
     }
 
     def _link_libraries(self, context, obj, variable):
         """Add linkage declarations to a given object."""
         assert isinstance(obj, Linkable)
 
-        use_xpcom = False
-
         for path in context.get(variable, []):
             force_static = path.startswith('static:') and obj.KIND == 'target'
             if force_static:
                 path = path[7:]
             name = mozpath.basename(path)
-            if name in ('xpcomglue', 'xpcomglue_s'):
-                use_xpcom = True
             dir = mozpath.dirname(path)
             candidates = [l for l in self._libs[name] if l.KIND == obj.KIND]
             if dir:
                 if dir.startswith('/'):
                     dir = mozpath.normpath(
                         mozpath.join(obj.topobjdir, dir[1:]))
                 else:
                     dir = mozpath.normpath(
@@ -374,48 +360,16 @@ class TreeMetadataEmitter(LoggingMixin):
                     SharedLibrary):
                 self._static_linking_shared.add(obj)
             obj.link_library(candidates[0])
 
         # Link system libraries from OS_LIBS/HOST_OS_LIBS.
         for lib in context.get(variable.replace('USE', 'OS'), []):
             obj.link_system_library(lib)
 
-        key = (obj.name, obj.relativedir)
-        substs = context.config.substs
-        extra_allowed = []
-        moz_build_app = substs.get('MOZ_BUILD_APP')
-        if moz_build_app is not None: # None during some test_emitter.py tests.
-            if moz_build_app.startswith('../'):
-                # For comm-central builds, where topsrcdir is not the root
-                # source dir.
-                moz_build_app = moz_build_app[3:]
-            extra_allowed = [
-                (substs.get('MOZ_APP_NAME'), '%s/app' % moz_build_app),
-                ('%s-bin' % substs.get('MOZ_APP_NAME'), '%s/app' % moz_build_app),
-            ]
-        if substs.get('MOZ_WIDGET_TOOLKIT') != 'android':
-            extra_allowed.append((substs.get('MOZ_CHILD_PROCESS_NAME'), 'ipc/app'))
-        else:
-            extra_allowed.append(('mozglue_android', 'mozglue/android'))
-
-        if key in ALLOWED_XPCOM_GLUE or key in extra_allowed:
-            if not use_xpcom:
-                raise SandboxValidationError(
-                    "%s is in the exception list for XPCOM glue dependency but "
-                    "doesn't depend on the XPCOM glue. Please adjust the list "
-                    "in %s." % (obj.name, __file__), context
-                )
-        elif use_xpcom:
-            raise SandboxValidationError(
-                "%s depends on the XPCOM glue. "
-                "No new dependency on the XPCOM glue is allowed."
-                % obj.name, context
-            )
-
     @memoize
     def _get_external_library(self, dir, name, force_static):
         # Create ExternalStaticLibrary or ExternalSharedLibrary object with a
         # context more or less truthful about where the external library is.
         context = Context(config=self.config)
         context.add_source(mozpath.join(self.config.topsrcdir, dir, 'dummy'))
         if force_static:
             return ExternalStaticLibrary(context, name)
--- a/python/mozbuild/mozbuild/test/frontend/test_emitter.py
+++ b/python/mozbuild/mozbuild/test/frontend/test_emitter.py
@@ -2,18 +2,16 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 from __future__ import unicode_literals
 
 import os
 import unittest
 
-from collections import defaultdict
-from buildconfig import topsrcdir
 from mozunit import main
 
 from mozbuild.frontend.context import (
     ObjDirPath,
     Path,
 )
 from mozbuild.frontend.data import (
     AndroidResDirs,
@@ -1230,34 +1228,11 @@ class TestEmitterBasic(unittest.TestCase
         """Test that a SYMBOLS_FILE in the objdir that's missing
         from GENERATED_FILES is an error.
         """
         reader = self.reader('test-symbols-file-objdir-missing-generated')
         with self.assertRaisesRegexp(SandboxValidationError,
              'Objdir file specified in SYMBOLS_FILE not in GENERATED_FILES:'):
             self.read_topsrcdir(reader)
 
-    def test_allowed_xpcom_glue(self):
-        """Test that the ALLOWED_XPCOM_GLUE list is still relevant."""
-        from mozbuild.frontend.emitter import ALLOWED_XPCOM_GLUE
-
-        allowed = defaultdict(list)
-        useless = []
-        for name, path in ALLOWED_XPCOM_GLUE:
-            allowed[path].append(name)
-
-        for path, names in allowed.iteritems():
-            if path.startswith(('mailnews/', 'calendar/', 'extensions/purple/purplexpcom')):
-                continue
-            try:
-                content = open(os.path.join(topsrcdir, path, 'moz.build')).read()
-            except:
-                content = ''
-            for name in names:
-                if "'%s'" % name in content or '"%s"' % name in content:
-                    continue
-                useless.append((name, path))
-
-        self.assertEqual(useless, [])
-
 
 if __name__ == '__main__':
     main()