Bug 1462489 - Process some chrome manifest entries from dist/xpi-stage from the tup backend. draft
authorChris Manchester <cmanchester@mozilla.com>
Wed, 30 May 2018 15:21:26 -0700
changeset 801854 6cd7addec5016838abc420410532f3f6fc9f67e2
parent 800874 f01bb6245db1ea2a87e5360104a4110571265137
child 801855 bb233b11d1e78305b0278299551e16b8b0fc075d
child 801952 5b518700aeb9bafc967d855f9b99c99c27d8fdf9
push id111764
push userbmo:cmanchester@mozilla.com
push dateWed, 30 May 2018 22:25:39 +0000
bugs1462489
milestone62.0a1
Bug 1462489 - Process some chrome manifest entries from dist/xpi-stage from the tup backend. MozReview-Commit-ID: 7X5Mi60j4cw
python/mozbuild/mozbuild/backend/tup.py
--- a/python/mozbuild/mozbuild/backend/tup.py
+++ b/python/mozbuild/mozbuild/backend/tup.py
@@ -502,23 +502,27 @@ class TupBackend(CommonBackend):
                 if any(mozpath.match(f, p) for p in skip_files):
                     return False
 
             if backend_file.requires_delay(obj.inputs):
                 backend_file.delayed_generated_files.append(obj)
             else:
                 self._process_generated_file(backend_file, obj)
         elif (isinstance(obj, ChromeManifestEntry) and
-              obj.install_target.startswith('dist/bin')):
-            top_level = mozpath.join(obj.install_target, 'chrome.manifest')
-            if obj.path != top_level:
-                entry = 'manifest %s' % mozpath.relpath(obj.path,
-                                                        obj.install_target)
-                self._manifest_entries[top_level].add(entry)
-            self._manifest_entries[obj.path].add(str(obj.entry))
+              obj.install_target.startswith(('dist/bin', 'dist/xpi-stage'))):
+            # The quitter extension specifies its chrome.manifest as a
+            # FINAL_TARGET_FILE, which conflicts with the manifest generation
+            # we do here, so skip it for now.
+            if obj.install_target != 'dist/xpi-stage/quitter':
+                top_level = mozpath.join(obj.install_target, 'chrome.manifest')
+                if obj.path != top_level:
+                    entry = 'manifest %s' % mozpath.relpath(obj.path,
+                                                            obj.install_target)
+                    self._manifest_entries[top_level].add(entry)
+                self._manifest_entries[obj.path].add(str(obj.entry))
         elif isinstance(obj, Defines):
             self._process_defines(backend_file, obj)
         elif isinstance(obj, HostDefines):
             self._process_defines(backend_file, obj, host=True)
         elif isinstance(obj, FinalTargetFiles):
             self._process_final_target_files(obj)
         elif isinstance(obj, FinalTargetPreprocessedFiles):
             self._process_final_target_pp_files(obj, backend_file)