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
189 lines
4.6 KiB
Python
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')
|