This was mainly used to support Universal MacOS builds, which were
removed several months ago.
In theory, someone could be using this feature to build multiple
applications with one build system invocation. But given that client.mk
is no longer the preferred interface to the build system and multiple
applications can be built by running `mach build` with different
mozconfigs, I don't think support for this feature is worth keeping.
This commit removes support for MOZ_BUILD_PROJECTS and related
functionality from client.mk. Support for recognizing
MOZ_CURRENT_PROJECT in configure and mozconfig evaluation has also
been removed. This includes support for the ac_add_app_options
mozconfig function.
Good riddance.
MozReview-Commit-ID: 7xI2jYxDFFr
--HG--
extra : rebase_source : 91068f3b8ae32fbcda4defb5d4bb086a04387598
These variables are unused in the repo. The %_ALL variation is used for
sccache, however.
The last use of these variables was removed when support for MacOS
universal builds was removed.
Someone somewhere may be relying on this functionality. But I don't
think it is worth continuing to support in client.mk. If someone
really needs it, we can reintroduce support for the feature elsewhere,
like in mach or via mozconfig support somehow.
MozReview-Commit-ID: 4KznCmK3JTN
--HG--
extra : rebase_source : 656008f9b4264768a2127fcffdb2ab28ff92991f
There are no references to this variable outside client.mk. AFAICT
it is unused.
The only reasonable justification for retaining this support IMO was
Universal MacOS builds. And those are no longer supported.
MozReview-Commit-ID: 9MnC18Bd1ge
--HG--
extra : rebase_source : 16c96dfceffb89434489b79f3f4ca2c48506840f
It has not been useful since we removed the possibility to build in the
source directory.
--HG--
extra : rebase_source : 479100785c8253ea3e255ebbda4b3538e8ed33ff
The topobjdir-finding logic in mozbuild relies on MOZ_CURRENT_PROJECT
being set, and it's currently only set when going through client.mk.
On automation, during universal builds, make check is invoked directly
in one of the objdirs, so MOZ_CURRENT_PROJECT is not set. We've had
other similar problems in the past. Ensuring MOZ_CURRENT_PROJECT is set
in the objdir itself should reduce the risk of other such issues in the
future.
Killing the sccache background daemon is part of postflight_all, but in
the current setup, postflight_all happens at the end of a "normal" build,
but we run automation build steps after that.
What happens then is that more compilations happen (gtests), which start
sccache again, but there's nothing to kill sccache again once this is
all done.
Now that the OSX universal builds postflight is gone, it is not
necessary for postflight_all to happen before the automation build steps.
So ensure postflight_all scripts happen last.
The downside of this change is that this now prevents sccache.log from
being uploaded, but we should probably send processed data to the graph
server instead.
Killing the sccache background daemon is part of postflight_all, but in
the current setup, postflight_all happens at the end of a "normal" build,
but we run automation build steps after that.
What happens then is that more compilations happen (gtests), which start
sccache again, but there's nothing to kill sccache again once this is
all done.
Now that the OSX universal builds postflight is gone, it is not
necessary for postflight_all to happen before the automation build steps.
So ensure postflight_all scripts happen last.
The downside of this change is that this now prevents sccache.log from
being uploaded, but we should probably send processed data to the graph
server instead.
The configure.in is a small wrapper around python configure, that is
still a m4 script so that people running autoconf manually can still
do so without breaking their stuff (and we have jobs that do that
on automation as well).
But considering how simple the m4 is, to avoid having the autoconf
checking code twice (once in client.mk and once in
build/moz.configure/old.configure), we can just process it with sed
instead of autoconf.
This will enable each PGO phase to show up in mach's resource reporting,
making it easier to compare PGO runtime across machines. This does
confuse the rendering of `mach resource-usage` a bit since it doesn't
know how to handle overlapping tiers. But the raw data is captured as
expected. I don't think `mach resource-usage` is that heavily used right
now, so I don't care about a minor regression for PGO builds.
MozReview-Commit-ID: HalvEwITmif
--HG--
extra : rebase_source : 5c27c6bda814cd61c0da792d9336980dc4f530a9
The way UPLOAD_EXTRA_FILES is currently exported makes the files added
to the list added in each directory that is being traversed recursively
because of the += in .mozconfig.mk, combined with "export".
The easy way out is to remove the export altogether, but being unsure of
the side effects of putting all non exported mk_add_options variables
in .mozconfig.mk, limit this to UPLOAD_EXTRA_FILES.
This adds a format option to mach environment and uses it in client.mk to
create a .mozconfig.json in the objdir, containing all the relevant data
from mozconfig. If the mozconfig doesn't change in a way that alters that
data, we still skip configure.
At the same time, use mach environment in place of mozconfig2configure and
mozconfig2client-mk, which makes us now have only one mozconfig reader.
Also, in the mozconfig reader, keep track of environment variables (as
opposed to shell variables), so that changes such as a variable that was
exported not being exported anymore is spotted. At the opposite, in order
for irrelevant environment variable changes not to incur in re-running
configure, only a set of environment variables are stored when they are
unmodified. Otherwise, changes such as using a different terminal window,
or even rebooting, would trigger reconfigures.
Finally, make mach environment emit both MOZ_OBJDIR and OBJDIR for
client.mk, and cleanup some objdir-related things in client.mk..
At the same time, make the mozconfig reader take MOZ_OBJDIR from the
environment if it is defined there and not in the mozconfig.