mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
fc52b62763
- Bug 1204192 - IonMonkey: MIPS: Split shareable code to mips-shared in BaselineIC-mips32. r=nbp (eeae38da4e)
- Bug 1204193 - IonMonkey: MIPS: Split shareable code to mips-shared in Bailouts-mips32. r=nbp (f24f496235)
- Bug 1204194 - IonMonkey: MIPS: Split shareable code to mips-shared in MoveEmitter-mips32. r=nbp (5c3bdc2fc2)
- Bug 1204214 - IonMonkey: MIPS: Split shareable code to mips-shared in BaselineCompiler-mips32. r=nbp (01903406d1)
- Bug 1205229 - IonMonkey: MIPS32: Make more CodeGenerator functions can be shared. r=nbp (d437fe618e)
- Bug 1209528 - IonMonkey: MIPS32: Add suffix 'f' for constant float32. r=arai (0f6600c083)
- Bug 1205232 - IonMonkey: MIPS32: Fix rounding of big negative float32 values in Ion. r=bbouvier (4652bb9b7a)
- Bug 1203044 - IonMonkey: MIPS32: Atomics operations should throw on oob access. r=lth (e898b3af95)
- Bug 1205135 - IonMonkey: MIPS: Split shareable code to mips-shared in CodeGenerator-mips32. r=nbp (b6d81b922d)
- readd some missing bits (2aa8c9fafd)
- Bug 1167189: Remove unnecessary checks after infallible allocations. r=bholley (fa7d8b9f7b)
- Bug 1209398 - Make AC_SUBST_SET emit a list of unique items instead of an actual set. r=gps (83e5877882)
- Bug 904572 - Add support for generating clang compilation database; r=glandium,r=gps (ab3e6e62fa)
- Bug 1209398 - Enable the FasterMake backend by default for desktop Firefox builds. r=gps (29f6fb3883)
- Bug 1204719 - Don't create interfaces.manifest files from the build backend. r=gps (5a63e36259)
- Bug 786520 - Install things to $(DIST)/branding from moz.build instead of manual rules in Makefile.ins. r=mshal (652552b547)
- Bug 1160563 - Part 1: Make ANDROID_RES_DIRS a moz.build variable. r=gps (e0719524f8)
- Bug 1159390 - Set sharedUserId in robocop.apk. r=gbrown (dde6716e2d)
- Bug 1160030 - Use TEST_HARNESS_FILES to install Robocop test files. r=froydnj (00cd01c3f2)
- Bug 1160030 - Use TEST_HARNESS_FILES to install Robocop ini files. r=froydnj (66d52518e7)
- Bug 938659 - Part 2: build system changes. r=mfinkle (0833d22ba3)
- Bug 1160563 - Pre: Allow ANDROID_RES_DIRS that are not relative to srcdir. r=gps (0d8a3ce66e)
- Bug 1160563 - Part 2: Make ANDROID_ASSETS_DIRS a moz.build variable. r=gps (9f4c132e2a)
- Bug 1195388 - Part 1: Make ANDROID_APK_{NAME,PACKAGE} moz.build variables. r=gps (4a2fa3fc09)
- Bug 1195388 - Part 2: Add ANDROID_EXTRA_{PACKAGES,RES_DIRS} moz.buildvariables. r=gps (7ad49e355e)
- Bug 1207893 - Change how we track object consumption from the build backend. r=gps (20ccc5b67a)
- Bug 1184405 - Add annotations for tags, file patterns, and test flavos to moz.build to specify tests potentially impacted by source files. r=gps (2db17131cc)
- Bug 1171105 - Ability to aggregate metadata from Files instances; r=glandium (59c8759e61)
- Bug 1184405 - Add a container type to mozbuild with a namedtuple-likeinterface and typed, mutable fields. r=gps (3062dbae71)
- Bug 1138283 - Fix bad documentation around wildcard patterns; r=glandium (5785d3284d)
- Bug 1155816 - part 2 - move EXTRA_*COMPONENTS manifest check to buildbackend time; r=mshal (c539616b45)
- Bug 1161270 - Add source manifest to reftest manifest representation in moz.build.;r=gps,roc (376b080084)
- Bug 1180813 - Use a cache for BuildConfig to improve mach speed. r=gps (d431b1ec23)
- Bug 1207882 - Associate an install target with every ContextDerived object. r=gps (62f63487a7)
- Bug 1126228 - Directory (--directory) argument for |mach warnings-list| and |mach warnings-summary|. r=gps (37a85d904f)
- Bug 1210642 - Allow to pass defines overrides when processing install manifests. r=gps (5eb483dc8d)
- Bug 1210642 - Add support for --silence-missing-directive-warnings for preprocessing within install manifests. r=gps (3a07d30b36)
- Bug 1176642 - Use absolute_import in mozpack; r=glandium (863ab20c4a)
- Bug 1162826 - Properly display full moz.build processing errors when empty KeyError or ValueError are thrown. r=mshal (57e8367680)
- Bug 1184405 - Add a mach command to expose test-deps file info. r=gps (7bcc10679c)
- Bug 1195735, r=zer0 (7fe14224e3)
- Bug 1205166 - IonMonkey: MIPS: Import MIPS64 support into Architecture-mips-shared. r=nbp f=rankov (84e1f9ec5d)
- Bug 1205166 - IonMonkey: MIPS64: Import Architecture-mips64. r=nbp f=rankov (fe173dd5af)
- Bug 1210322 - IonMonkey: MIPS: Rename BaseFloatRegister/s to FloatRegister/sMIPSShared. r=nbp (ac262cbb5d)
- Bug 1205167 - IonMonkey: MIPS64: Import Assembler-mips64. r=nbp f=rankov (079e84ea49)
- Bug 1215555 - Improve simulated OOM testing of ARM assembler buffer and fix bugs r=jolesen (253b976cec)
- Bug 1205167 - IonMonkey: MIPS: Import MIPS64 support into Assembler-mips-shared. r=froydnj f=rankov (94b23ac585)
- Bug 1213146 - IonMonkey: MIPS: Fix build failure caused by bug 1194139. r=nbp (12f7d5d572)
- Bug 1205566 - IonMonkey: MIPS: bailoutCmp32/Ptr optimization. r=nbp (9a40ee80d0)
- Bug 1209873 - IonMonkey; MIPS: Implement memory barrier. r=lth (964535cb6b)
- Bug 1209572 - IonMonkey: MIPS32: Goto done by short jump in convertUInt32ToFloat32. r=nbp (0b388199e7)
- pointer style (312fc6fe4f)
- missing bit of Bug 1140890 - Make sure the first argument cannot bail in between negative zero removal and creating result in substraction, r=nbp (afcc9bfdc7)
- and sync more build scripts with frontend branch
179 lines
6.2 KiB
ReStructuredText
179 lines
6.2 KiB
ReStructuredText
.. _mozbuild_files_metadata:
|
|
|
|
==============
|
|
Files Metadata
|
|
==============
|
|
|
|
:ref:`mozbuild-files` provide a mechanism for attaching metadata to
|
|
files. Essentially, you define some flags to set on a file or file
|
|
pattern. Later, some tool or process queries for metadata attached to a
|
|
file of interest and it does something intelligent with that data.
|
|
|
|
Defining Metadata
|
|
=================
|
|
|
|
Files metadata is defined by using the
|
|
:ref:`Files Sub-Context <mozbuild_subcontext_Files>` in ``moz.build``
|
|
files. e.g.::
|
|
|
|
with Files('**/Makefile.in'):
|
|
BUG_COMPONENT = ('Core', 'Build Config')
|
|
|
|
This working example says, *for all Makefile.in files in every directory
|
|
underneath this one - including this directory - set the Bugzilla
|
|
component to Core :: Build Config*.
|
|
|
|
For more info, read the
|
|
:ref:`docs on Files <mozbuild_subcontext_Files>`.
|
|
|
|
How Metadata is Read
|
|
====================
|
|
|
|
``Files`` metadata is extracted in :ref:`mozbuild_fs_reading_mode`.
|
|
|
|
Reading starts by specifying a set of files whose metadata you are
|
|
interested in. For each file, the filesystem is walked to the root
|
|
of the source directory. Any ``moz.build`` encountered during this
|
|
walking are marked as relevant to the file.
|
|
|
|
Let's say you have the following filesystem content::
|
|
|
|
/moz.build
|
|
/root_file
|
|
/dir1/moz.build
|
|
/dir1/foo
|
|
/dir1/subdir1/foo
|
|
/dir2/foo
|
|
|
|
For ``/root_file``, the relevant ``moz.build`` files are just
|
|
``/moz.build``.
|
|
|
|
For ``/dir1/foo`` and ``/dir1/subdir1/foo``, the relevant files are
|
|
``/moz.build`` and ``/dir1/moz.build``.
|
|
|
|
For ``/dir2``, the relevant file is just ``/moz.build``.
|
|
|
|
Once the list of relevant ``moz.build`` files is obtained, each
|
|
``moz.build`` file is evaluated. Root ``moz.build`` file first,
|
|
leaf-most files last. This follows the rules of
|
|
:ref:`mozbuild_fs_reading_mode`, with the set of evaluated ``moz.build``
|
|
files being controlled by filesystem content, not ``DIRS`` variables.
|
|
|
|
The file whose metadata is being resolved maps to a set of ``moz.build``
|
|
files which in turn evaluates to a list of contexts. For file metadata,
|
|
we only care about one of these contexts:
|
|
:ref:`Files <mozbuild_subcontext_Files>`.
|
|
|
|
We start with an empty ``Files`` instance to represent the file. As
|
|
we encounter a *files sub-context*, we see if it is appropriate to
|
|
this file. If it is, we apply its values. This process is repeated
|
|
until all *files sub-contexts* have been applied or skipped. The final
|
|
state of the ``Files`` instance is used to represent the metadata for
|
|
this particular file.
|
|
|
|
It may help to visualize this. Say we have 2 ``moz.build`` files::
|
|
|
|
# /moz.build
|
|
with Files('*.cpp'):
|
|
BUG_COMPONENT = ('Core', 'XPCOM')
|
|
|
|
with Files('**/*.js'):
|
|
BUG_COMPONENT = ('Firefox', 'General')
|
|
|
|
# /foo/moz.build
|
|
with Files('*.js'):
|
|
BUG_COMPONENT = ('Another', 'Component')
|
|
|
|
Querying for metadata for the file ``/foo/test.js`` will reveal 3
|
|
relevant ``Files`` sub-contexts. They are evaluated as follows:
|
|
|
|
1. ``/moz.build - Files('*.cpp')``. Does ``/*.cpp`` match
|
|
``/foo/test.js``? **No**. Ignore this context.
|
|
2. ``/moz.build - Files('**/*.js')``. Does ``/**/*.js`` match
|
|
``/foo/test.js``? **Yes**. Apply ``BUG_COMPONENT = ('Firefox', 'General')``
|
|
to us.
|
|
3. ``/foo/moz.build - Files('*.js')``. Does ``/foo/*.js`` match
|
|
``/foo/test.js``? **Yes**. Apply
|
|
``BUG_COMPONENT = ('Another', 'Component')``.
|
|
|
|
At the end of execution, we have
|
|
``BUG_COMPONENT = ('Another', 'Component')`` as the metadata for
|
|
``/foo/test.js``.
|
|
|
|
One way to look at file metadata is as a stack of data structures.
|
|
Each ``Files`` sub-context relevant to a given file is applied on top
|
|
of the previous state, starting from an empty state. The final state
|
|
wins.
|
|
|
|
.. _mozbuild_files_metadata_finalizing:
|
|
|
|
Finalizing Values
|
|
=================
|
|
|
|
The default behavior of ``Files`` sub-context evaluation is to apply new
|
|
values on top of old. In most circumstances, this results in desired
|
|
behavior. However, there are circumstances where this may not be
|
|
desired. There is thus a mechanism to *finalize* or *freeze* values.
|
|
|
|
Finalizing values is useful for scenarios where you want to prevent
|
|
wildcard matches from overwriting previously-set values. This is useful
|
|
for one-off files.
|
|
|
|
Let's take ``Makefile.in`` files as an example. The build system module
|
|
policy dictates that ``Makefile.in`` files are part of the ``Build
|
|
Config`` module and should be reviewed by peers of that module. However,
|
|
there exist ``Makefile.in`` files in many directories in the source
|
|
tree. Without finalization, a ``*`` or ``**`` wildcard matching rule
|
|
would match ``Makefile.in`` files and overwrite their metadata.
|
|
|
|
Finalizing of values is performed by setting the ``FINAL`` variable
|
|
on ``Files`` sub-contexts. See the
|
|
:ref:`Files documentation <mozbuild_subcontext_Files>` for more.
|
|
|
|
Here is an example with ``Makefile.in`` files, showing how it is
|
|
possible to finalize the ``BUG_COMPONENT`` value.::
|
|
|
|
# /moz.build
|
|
with Files('**/Makefile.in'):
|
|
BUG_COMPONENT = ('Core', 'Build Config')
|
|
FINAL = True
|
|
|
|
# /foo/moz.build
|
|
with Files('**'):
|
|
BUG_COMPONENT = ('Another', 'Component')
|
|
|
|
If we query for metadata of ``/foo/Makefile.in``, both ``Files``
|
|
sub-contexts match the file pattern. However, since ``BUG_COMPONENT`` is
|
|
marked as finalized by ``/moz.build``, the assignment from
|
|
``/foo/moz.build`` is ignored. The final value for ``BUG_COMPONENT``
|
|
is ``('Core', 'Build Config')``.
|
|
|
|
Here is another example::
|
|
|
|
with Files('*.cpp'):
|
|
BUG_COMPONENT = ('One-Off', 'For C++')
|
|
FINAL = True
|
|
|
|
with Files('**'):
|
|
BUG_COMPONENT = ('Regular', 'Component')
|
|
|
|
For every files except ``foo.cpp``, the bug component will be resolved
|
|
as ``Regular :: Component``. However, ``foo.cpp`` has its value of
|
|
``One-Off :: For C++`` preserved because it is finalized.
|
|
|
|
.. important::
|
|
|
|
``FINAL`` only applied to variables defined in a context.
|
|
|
|
If you want to mark one variable as finalized but want to leave
|
|
another mutable, you'll need to use 2 ``Files`` contexts.
|
|
|
|
Guidelines for Defining Metadata
|
|
================================
|
|
|
|
In general, values defined towards the root of the source tree are
|
|
generic and become more specific towards the leaves. For example,
|
|
the ``BUG_COMPONENT`` for ``/browser`` might be ``Firefox :: General``
|
|
whereas ``/browser/components/preferences`` would list
|
|
``Firefox :: Preferences``.
|