Files
tubestation/toolkit/components/telemetry/moz.build
Alessio Placitelli eb7a868f0c Bug 1425909 - Enable adding scalars in artifact builds without rebuilding Firefox. r=chutten,froydnj
This patch enables generating a JSON file that mirrors the scalar definitions
in Scalars.yaml. On local developer builds, this file is loaded when Firefox
starts to register all the scalars. If some change was introduced in the
definition files, the new scalar will be dynamically added.
The JSON definition file will be regenerated every time an artifact build
is performed or the build faster command is invoked.

MozReview-Commit-ID: Do3WjE38aIK
2018-01-18 18:25:01 +01:00

189 lines
4.6 KiB
Python

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# 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/.
HAS_MISC_RULE = True
include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xul'
DIRS = [
'hybrid-content',
'pingsender',
]
DEFINES['MOZ_APP_VERSION'] = '"%s"' % CONFIG['MOZ_APP_VERSION']
LOCAL_INCLUDES += [
'/xpcom/build',
'/xpcom/threads',
]
SPHINX_TREES['telemetry'] = 'docs'
with Files('docs/**'):
SCHEDULES.exclusive = ['docs']
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
CXXFLAGS += ['-Wno-error=shadow']
if CONFIG['ENABLE_TESTS']:
DIRS += ['tests/gtest']
TEST_DIRS += ['tests']
XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
BROWSER_CHROME_MANIFESTS += ['tests/browser/browser.ini']
XPIDL_SOURCES += [
'nsITelemetry.idl',
]
XPIDL_MODULE = 'telemetry'
EXPORTS.mozilla += [
'!TelemetryEventEnums.h',
'!TelemetryHistogramEnums.h',
'!TelemetryProcessEnums.h',
'!TelemetryScalarEnums.h',
'CombinedStacks.h',
'ipc/TelemetryComms.h',
'ipc/TelemetryIPC.h',
'ProcessedStack.h',
'Telemetry.h',
]
SOURCES += [
'CombinedStacks.cpp',
'HangReports.cpp',
'ipc/TelemetryIPC.cpp',
'ipc/TelemetryIPCAccumulator.cpp',
'ProcessedStack.cpp',
'Telemetry.cpp',
'TelemetryCommon.cpp',
'TelemetryEvent.cpp',
'TelemetryHistogram.cpp',
'TelemetryIOInterposeObserver.cpp',
'TelemetryScalar.cpp',
'WebrtcTelemetry.cpp',
]
# KeyedStackCapturer entirely relies on profiler to be enabled.
if CONFIG['MOZ_GECKO_PROFILER']:
SOURCES += [
'KeyedStackCapturer.cpp'
]
EXTRA_COMPONENTS += [
'TelemetryStartup.js',
'TelemetryStartup.manifest'
]
EXTRA_JS_MODULES += [
'GCTelemetry.jsm',
'TelemetryArchive.jsm',
'TelemetryController.jsm',
'TelemetryEnvironment.jsm',
'TelemetryHealthPing.jsm',
'TelemetryLog.jsm',
'TelemetryModules.jsm',
'TelemetryReportingPolicy.jsm',
'TelemetrySend.jsm',
'TelemetrySession.jsm',
'TelemetryStopwatch.jsm',
'TelemetryStorage.jsm',
'TelemetryTimestamps.jsm',
'TelemetryUtils.jsm',
'UITelemetry.jsm',
'UpdatePing.jsm',
]
TESTING_JS_MODULES += [
'tests/unit/TelemetryArchiveTesting.jsm',
]
PYTHON_UNITTEST_MANIFESTS += [
'tests/python/python.ini',
]
GENERATED_FILES = [
'ScalarArtifactDefinitions.json',
'TelemetryEventData.h',
'TelemetryEventEnums.h',
'TelemetryHistogramData.inc',
'TelemetryHistogramEnums.h',
'TelemetryProcessData.h',
'TelemetryProcessEnums.h',
'TelemetryScalarData.h',
'TelemetryScalarEnums.h',
]
# Generate histogram files.
histogram_files = [
'Histograms.json',
'/dom/base/UseCounters.conf',
'/dom/base/nsDeprecatedOperationList.h',
]
data = GENERATED_FILES['TelemetryHistogramData.inc']
data.script = 'gen_histogram_data.py'
data.inputs = histogram_files
enums = GENERATED_FILES['TelemetryHistogramEnums.h']
enums.script = 'gen_histogram_enum.py'
enums.inputs = histogram_files
# Generate scalar files.
scalar_files = [
'Scalars.yaml',
]
scalar_data = GENERATED_FILES['TelemetryScalarData.h']
scalar_data.script = 'gen_scalar_data.py'
scalar_data.inputs = scalar_files
scalar_enums = GENERATED_FILES['TelemetryScalarEnums.h']
scalar_enums.script = 'gen_scalar_enum.py'
scalar_enums.inputs = scalar_files
# Generate the JSON scalar definitions. They will only be
# used in artifact or "build faster" builds.
scalar_json_data = GENERATED_FILES['ScalarArtifactDefinitions.json']
scalar_json_data.script = 'gen_scalar_data.py:generate_JSON_definitions'
scalar_json_data.inputs = scalar_files
# Move the scalars JSON file to the directory where the Firefox binary is.
FINAL_TARGET_FILES += ['!ScalarArtifactDefinitions.json']
# Generate event files.
event_files = [
'Events.yaml',
]
event_data = GENERATED_FILES['TelemetryEventData.h']
event_data.script = 'gen_event_data.py'
event_data.inputs = event_files
event_enums = GENERATED_FILES['TelemetryEventEnums.h']
event_enums.script = 'gen_event_enum.py'
event_enums.inputs = event_files
# Generate data from Processes.yaml
processes_files = [
'Processes.yaml',
]
processes_enum = GENERATED_FILES['TelemetryProcessEnums.h']
processes_enum.script = 'gen_process_enum.py'
processes_enum.inputs = processes_files
processes_data = GENERATED_FILES['TelemetryProcessData.h']
processes_data.script = 'gen_process_data.py'
processes_data.inputs = processes_files
with Files('**'):
BUG_COMPONENT = ('Toolkit', 'Telemetry')