Bug 1384241 - Review comment: Use memoized_property; use acdefines() helper. r=gps
MozReview-Commit-ID: 4EfJilJurv7
--- a/python/mozbuild/mozbuild/faster_daemon.py
+++ b/python/mozbuild/mozbuild/faster_daemon.py
@@ -9,16 +9,17 @@ build faster| builds.
from __future__ import absolute_import, print_function, unicode_literals
import datetime
import os
import sys
import time
+import mozbuild.util
import mozpack.path as mozpath
from mozpack.manifests import (
InstallManifest,
)
from mozpack.copier import (
FileCopier,
FileRegistrySubtree,
)
@@ -61,55 +62,53 @@ class FasterBuildChange(object):
self.unrecognized = set()
self.input_to_outputs = {}
self.output_to_inputs = {}
class Daemon(object):
def __init__(self, config_environment):
self.config_environment = config_environment
- self._file_copier = None
self._client = None
self._subscriptions = []
@property
def defines(self):
- defines = dict((name, self.config_environment.defines[name])
- for name in self.config_environment.defines
- if name not in self.config_environment.non_global_defines)
+ defines = dict(self.config_environment.acdefines)
+ # These additions work around warts in the build system: see
+ # http://searchfox.org/mozilla-central/rev/ad093e98f42338effe2e2513e26c3a311dd96422/config/faster/rules.mk#92-93
+ # and
+ # http://searchfox.org/mozilla-central/rev/ad093e98f42338effe2e2513e26c3a311dd96422/python/mozbuild/mozbuild/backend/tup.py#244-253.
defines.update({
'AB_CD': 'en-US',
- 'BUILD_FASTER': 1,
+ 'BUILD_FASTER': '1',
})
defines.update({
'BOOKMARKS_INCLUDE_DIR': mozpath.join(self.config_environment.topsrcdir,
'browser', 'locales', 'en-US', 'profile'),
})
return defines
- @property
+ @mozbuild.util.memoized_property
def file_copier(self):
- if self._file_copier is None:
- file_copier = FileCopier()
+ file_copier = FileCopier()
- finder = FileFinder(mozpath.join(self.config_environment.topobjdir, 'faster'))
- for path, f in finder.find('*.track'):
- manifest = InstallManifest(fileobj=f.open())
+ finder = FileFinder(mozpath.join(self.config_environment.topobjdir, 'faster'))
+ for path, f in finder.find('*.track'):
+ manifest = InstallManifest(fileobj=f.open())
- # Turn 'install_dist_bin_browser.track' into ['browser'].
- parts = os.path.basename(os.path.splitext(path)[0]).split('_')
- parts = parts[3:]
+ # Turn 'install_dist_bin_browser.track' into ['browser'].
+ parts = os.path.basename(os.path.splitext(path)[0]).split('_')
+ parts = parts[3:]
- subtree = mozpath.join(*parts) if parts else None
- manifest.populate_registry(FileRegistrySubtree(subtree, file_copier),
- defines_override=self.defines)
+ subtree = mozpath.join(*parts) if parts else None
+ manifest.populate_registry(FileRegistrySubtree(subtree, file_copier),
+ defines_override=self.defines)
- self._file_copier = file_copier
-
- return self._file_copier
+ return file_copier
def watch_set(self, depth=2):
file_copier = self.file_copier
# We want the set of watches to be "reasonable", so we watch
# (by default) $TOPSRCDIR/two/levels or $TOPSRCDIR/onelevel.
# Many folks root $TOPOBJDIR in $TOPSRCDIR, so we handle that
# situation specially. We definitely don't want to watch