Commit Graph

2846 Commits

Author SHA1 Message Date
Justin Wood
e0c208d7dc Backed out changeset a872303fd084, for Nightly bustage from Bug 1359965 c#29
MozReview-Commit-ID: K06A4HcRM6K
2017-05-25 09:02:54 -04:00
Ryan VanderMeulen
c5b2958154 Merge inbound to m-c. a=merge 2017-05-24 20:45:23 -04:00
Nathan Froyd
88e5d07280 Bug 1367405 - only print warning summary for successful builds; r=gps
If we had an unsuccessful build, then duplicating the warnings at the
end of the compilation job would just be burying the actual error in a
blizzard of noise.
2017-05-24 16:49:11 -04:00
Gregory Szorc
74778951f0 Bug 1359965 - Support and generate tar.gz WPT archive; r=glandium
Several years ago there was a single zip file for all test files. Clients
would only extract the files they needed. Thus, zip was a reasonable
archive format because it allowed direct access to members without
having to decompress the entirety of the stream.

We have since split up that monolithic archive into separate,
domain-specific archives. e.g. 1 archive for mochitests and one
for xpcshell tests. This drastically cut down on network I/O
required on testers because they only fetched archives/data that
was relevant. It also enabled parallel generation of test archives,
we shaved dozens of seconds off builds due to compression being
a long pole.

Despite the architectural changes to test archive management, we
still used zip files. This is not ideal because we no longer access
specific files in test archives and thus don't care about single/partial
member access performance.

This commit implements support for generating tar.gz test archives.
And it switches the web-platform archive to a tar.gz file.

The performance implications for archive generation are significant:

before: 48,321,250 bytes; 6.05s
after:  31,844,267 bytes; 4.57s

The size is reduced because we have a single compression context
so data from 1 file can benefit compression in a subsequent file.
CPU usage is reduced because the compressor has to work less with
1 context than it does with N. While I didn't measure it, decompression
performance should also be improved for the same reasons. And of course
network I/O will be reduced.

mozharness consumers use a generic method for handling unarchiving.
This method automagically handles multiple file extensions. So as long
as downstream consumers aren't hard coding ".zip" this change should
"just work."

MozReview-Commit-ID: LQa5MIHLsms

--HG--
extra : rebase_source : cd029cdbbcccc1d16f03d63a5f1fdf60be5db4fd
extra : source : a0e257e346ccf3c1db332ec5903241f4eeb9a7ee
2017-05-08 17:19:05 -07:00
Gregory Szorc
5172222fa9 Bug 1359965 - Support mozpack.file.BaseFile in create_tar_from_files; r=glandium
This allows us to write files coming from a finder or other source
that isn't directly the filesystem.

MozReview-Commit-ID: KhPSD0JYzsQ

--HG--
extra : rebase_source : 24db84974b54a714ba82dfad7ff68fd1a5bf656a
extra : source : ae8bce278626bc84914063f93292ac5e825eec36
2017-05-08 17:00:20 -07:00
Ryan VanderMeulen
62671ef4d8 Merge autoland to m-c. a=merge 2017-05-23 18:01:59 -04:00
Wes Kocher
afb7b41b84 Backed out 2 changesets (bug 1359965) for likely breaking tc nightlies a=backout
Backed out changeset a0e257e346cc (bug 1359965)
Backed out changeset ae8bce278626 (bug 1359965)

MozReview-Commit-ID: 9rGpv7CFofi
2017-05-23 12:55:35 -07:00
Mike Hommey
b860fe5648 Bug 1366729 - Skip manifest entries that are packaged twice. r=gps
--HG--
extra : rebase_source : 0db515433e1e5dacaf6be0c0921af060c3ad644d
2017-05-23 08:00:15 +09:00
Mike Hommey
ae2d9aa982 Bug 1366729 - Properly handle "multi-content" manifest entries after bug 1366169. r=gps
Some manifest entries (e.g. skin or locale) have an attached identifier,
and there can be different entries with different identifiers for the
same chrome name. The change from bug 1366169 would consider those as
errors, while they are the expected configuration.

--HG--
extra : rebase_source : ceb08da909121a2ac0a2cdaba7970e4594dde09f
2017-05-23 07:51:22 +09:00
Gregory Szorc
fbd5db6a52 Bug 1359965 - Support and generate tar.gz WPT archive; r=glandium
Several years ago there was a single zip file for all test files. Clients
would only extract the files they needed. Thus, zip was a reasonable
archive format because it allowed direct access to members without
having to decompress the entirety of the stream.

We have since split up that monolithic archive into separate,
domain-specific archives. e.g. 1 archive for mochitests and one
for xpcshell tests. This drastically cut down on network I/O
required on testers because they only fetched archives/data that
was relevant. It also enabled parallel generation of test archives,
we shaved dozens of seconds off builds due to compression being
a long pole.

Despite the architectural changes to test archive management, we
still used zip files. This is not ideal because we no longer access
specific files in test archives and thus don't care about single/partial
member access performance.

This commit implements support for generating tar.gz test archives.
And it switches the web-platform archive to a tar.gz file.

The performance implications for archive generation are significant:

before: 48,321,250 bytes; 6.05s
after:  31,844,267 bytes; 4.57s

The size is reduced because we have a single compression context
so data from 1 file can benefit compression in a subsequent file.
CPU usage is reduced because the compressor has to work less with
1 context than it does with N. While I didn't measure it, decompression
performance should also be improved for the same reasons. And of course
network I/O will be reduced.

mozharness consumers use a generic method for handling unarchiving.
This method automagically handles multiple file extensions. So as long
as downstream consumers aren't hard coding ".zip" this change should
"just work."

MozReview-Commit-ID: LQa5MIHLsms

--HG--
extra : rebase_source : 19ec875917546abc147b234a815e1a64c204b92a
2017-05-08 17:19:05 -07:00
Gregory Szorc
8a71fabf2e Bug 1359965 - Support mozpack.file.BaseFile in create_tar_from_files; r=glandium
This allows us to write files coming from a finder or other source
that isn't directly the filesystem.

MozReview-Commit-ID: KhPSD0JYzsQ

--HG--
extra : rebase_source : 10d494fc910982c3e34f4744592edca906d3a85d
2017-05-08 17:00:20 -07:00
Gregory Szorc
2b1957d1e5 Bug 1361172 - Rewrite code for finding files in VCS checkout; r=glandium
We're getting an intermittent failure running `hg manifest` in CI. I
have no clue why.

What I do know is that we now have the mozversioncontrol Python package
for containing utility code for interacting with version control. It is
slightly more robust and I'm willing to support it more than I am
check_utils.py.

This commit adds a new API to our abstract repository class to obtain the
files in the working directory by querying version control.

Since I suspect cwd was coming into play in automation, I've also
added a utility function to mozversioncontrol to attempt to find
a version control checkout from the current working directory. It
simply traces ancestor paths looking for a .hg or .git directory.

Finally, I've ported all callers of the now-deleted API to the new
one. The old code had some "../.." paths in it, meaning it only
worked when cwd was just right. Since we resolve the absolute path
to the checkout and store it on the repo object, I've updated the
code so it should work no matter what cwd is as long as a repo can
be found. I'm not 100% confident I found all consumers assuming cwd.
But it's a start.

I'm not 100% confident this will fix the intermittent issues in CI. But
at least we should get a better error message and at least we'll be
running less hacky code.

MozReview-Commit-ID: AmCraHXcTEX

--HG--
extra : rebase_source : 815ae369776577ad374333920fd645d412a55148
2017-05-18 16:06:49 -07:00
Xidorn Quan
0214189457 Bug 1366542 - Bump required version of Rust to 1.17.0. r=mshal
MozReview-Commit-ID: Bgz6etF2vR2

--HG--
extra : rebase_source : 5ed97670f6144181bbeaceae0cbebd64ca920212
2017-05-21 11:48:33 +10:00
Mike Shal
ca4aa9a838 Bug 1365722 - Move application.ini processing out to a separate file; r=cmanchester+432261
Windows repackaging for complete mar files will also need to pull a
different value out of the application.ini file, so this code should be
shareable.

MozReview-Commit-ID: CzCoNRYcBPX

--HG--
extra : rebase_source : a5e4b31ba876d811436a7d8d15462fa85f0762f8
2017-05-04 16:13:55 -04:00
Mike Shal
14106ca069 Bug 1365722 - Use correct permission bits in chmod; r=cmanchester+432261
The chmod permissions need to be in octal format to get the expected
permissions settings. This only seems to affect the output if we run the
repackaging command on Linux, but it should still be fixed.

MozReview-Commit-ID: to4v7dkSBl

--HG--
extra : rebase_source : 9d2289511ebd05aea8a4c6d37136f258e2463dee
2017-05-03 12:37:49 -04:00
Mike Shal
af5d946f11 Bug 1365722 - Rename 7z_exe_* to exe_7z_*; r=cmanchester+432261
Python can run these files with 'python -m 7z_exe_foo', but using
'import 7z_exe_foo' is not allowed because the module begins with a
number.

See also: https://stackoverflow.com/a/17487228

MozReview-Commit-ID: 97iDdXlZJ1a

--HG--
rename : python/mozbuild/mozbuild/action/7z_exe_archive.py => python/mozbuild/mozbuild/action/exe_7z_archive.py
rename : python/mozbuild/mozbuild/action/7z_exe_extract.py => python/mozbuild/mozbuild/action/exe_7z_extract.py
extra : rebase_source : 1941986a7e6e56305b742710c73b90a3f7b5226b
2017-05-22 14:26:44 -04:00
Mike Shal
5f837f5c24 Bug 1365722 - Move repackage_dmg into a repackaging/ directory; r=cmanchester+432261
It makes more sense to have the repackage commands in a separate
directory, since Windows repackaging will add several new types.

MozReview-Commit-ID: 1wA7F7k4NXf

--HG--
rename : python/mozbuild/mozbuild/repackage.py => python/mozbuild/mozbuild/repackaging/dmg.py
extra : rebase_source : b4b4f2fd5c45900aaf125928c144c15cfa1e115e
2017-05-02 15:18:51 -04:00
Chris AtLee
5fa1f81924 Bug 1351071: Get rid of pre-generated startup cache r=glandium
MozReview-Commit-ID: BcWcqEKwGBv

--HG--
extra : source : 0f320509eddb30fdefd00d17179670381c3b6f78
2017-04-04 09:26:25 -04:00
Mike Hommey
d1b2f93802 Bug 1366169 - Avoid reordered manifest entries creating unexpected overrides. r=gps
As described in changeset c94e87a18096, chrome manifest entries are
reordered and don't necessarily appear in the order they have in jar.mn.

And in some cases, the order does matter: when entries with flags are
followed by entries with more broad flags or no flags at all. Nobody
should be writing entries in that order on purpose, so error out during
packaging when we detect the pattern.

--HG--
extra : rebase_source : d9617bbcbd8560503c532a13c10c8afb0fd49411
2017-05-19 15:01:58 +09:00
Mike Hommey
59f1035ec6 Bug 1363811 - Allow "direct" access to namespace attributes from DependsFunctions. r=cmanchester+432261
To make things simpler in configure code, as well as to allow the linter
to skip bugging about some --help dependencies, we make the following
work:

    something.some_attr

where the result is equivalent to, currently:

    delayed_getattr(something, 'some_attr')
2017-05-19 07:03:39 +09:00
Mike Hommey
853aefa3b4 Bug 1363811 - Allow to combine two DependsFunctions with "&". r=cmanchester+432261
Similar to how they can be combined with "|", we now allow using "&".
As for "|", it would have been better if it were "and", but it's not
possible to override "and" in python ; __and__ is for "&".
2017-05-19 07:03:39 +09:00
Mike Hommey
91e718c2f2 Bug 1363811 - Modify the name of the DependsFunction.__or__ implementation method. r=cmanchester+432261
Like the test change, it makes the intent clearer.
2017-05-19 07:03:39 +09:00
Mike Hommey
fafb6f8f44 Bug 1363811 - Change TestConfigure.test_depends_or to test more cases. r=cmanchester+432261
Also, test the results match what a normal "or" of the returned values
would be. This makes it clearer how the feature is meant to work.
2017-05-19 07:03:39 +09:00
Mike Hommey
57258bd4bf Bug 1365786 - Avoid missing --help dep error when a @depends function uses builtins. r=chmanchester
--HG--
extra : rebase_source : cb79f4f67bcc1c5b271ec430733143a385cf8360
2017-05-18 09:32:39 +09:00
Mike Hommey
ef3f9aa89b Bug 1365477 - Ensure all callers of CommandLineHandler() pass a complete argv. r=chmanchester
CommandLineHandler() expects argv to be like sys.argv, containing the
command name in argv[0], but various tests weren't doing that, in some
cases even leading to ignored arguments passed as argv[0].

In turn, that made lint.py only test browser/moz.configure instead of
all the project moz.configures as intended.

--HG--
extra : rebase_source : 8a87216edaa4a2fd27abb9ef74d38a254a2bbeed
2017-05-17 12:10:46 +09:00
Chris Manchester
bdaf34a711 Bug 1307301 - Don't attempt to compress compressed files when packing the symbols archive. r=ted
MozReview-Commit-ID: 542dZflb00G

--HG--
extra : rebase_source : 6b942e687517a3053b349a20475de7cff956327a
2017-04-27 22:51:19 -07:00
Chris Manchester
b9fb4033d1 Bug 1307301 - Pack symbols with a python helper and mozjar instead of zip. r=ted
MozReview-Commit-ID: SKwzZ7l8CS

--HG--
extra : rebase_source : 9e5765df89a966edfbe054b4f555ef347a3fd7e3
2017-04-27 20:37:11 -07:00
Mike Hommey
c3680170a7 Bug 780562 - Take locale chrome manifest flags into account when repacking l10n. r=gps
--HG--
extra : rebase_source : 5185b078260f0445cfe77f0416230c9ab0781f8b
2017-05-09 14:23:55 +09:00
Gregory Szorc
e5c00fdd77 Bug 1364511 - Upgrade Mercurial during mach bootstrap on MozillaBuild; r=RyanVM
The base bootstrap class has code to conditionally upgrade Mercurial
depending on its version. It is kinda broken. This commit overrides
that code in the MozillaBuild bootstrapper to always run `pip`, which
will ensure the latest stable Mercurial release is installed.

MozReview-Commit-ID: 2O1Ff7dAp4o

--HG--
extra : rebase_source : 98cba0abbebf13e8fe93673d5b46eb16e6a3c147
2017-05-12 15:04:28 -07:00
Gregory Szorc
997dcaa50f Bug 1364635 - Don't offer to configure Mercurial if running from a Git checkout; r=Ehsan
Previously, `mach bootstrap` would unconditionally prompt to help
configure Mercurial in most scenarios. I agree with Ehsan's observation
in a mailing list post that this behavior doesn't make sense when
running from a Git checkout, as the user probably doesn't care about
Mercurial if they are using Git.

This change doesn't completely ignore Mercurial for Git users. For
example, we still unconditionally run code that verifies that Mercurial
is installed and reasonably up to date. Changing this would be a bit
of work. But even if we wanted to change it, git-cinnabar users
would benefit from having a modern Mercurial installed. So it isn't
straightforward for Git users to ignore Mercurial completely.

MozReview-Commit-ID: 8ncHRgCsjz

--HG--
extra : rebase_source : 7945e3bf3d5283105bac517885f794fc5d7bba6d
2017-05-12 19:44:03 -07:00
Nick Alexander
102c9bafb0 Bug 1196367 - Remove AndroidEclipse build backend. r=gps
MozReview-Commit-ID: CdrpMaggWsJ

--HG--
extra : rebase_source : f11a0f7983e9cf3131ab3189a3d2816cb86cab2c
2017-05-02 21:39:03 -07:00
Mike Hommey
563880df0e Bug 1363585 - Forbid boolean operations on @depends functions. r=chmanchester
Doing something like "not foo" when foo is a @depends function is never
going to do what the user expects, while not necessarily leading to an
error (like, when used in set_config).

It is better to have an error in those cases where it's expected not to
work, at the expense of making templates a little more verbose, rather
than silently do something the user is not expecting.

--HG--
extra : rebase_source : 87ba80eccc5606322f6dd185d5cb5fc88471e51b
2017-05-10 11:35:22 +09:00
Jan Beich
476caecbe9 Bug 1363686 - Pull LLVM 4.0 for ./mach bootstrap for Stylo on FreeBSD. r=rillian
MozReview-Commit-ID: 9jCdPLsRaQ4

--HG--
extra : rebase_source : e3bab6ddeccac2d1c01d2ca3dd88880684493329
2017-05-10 11:05:44 +00:00
Ralph Giles
bd9dc581ea Bug 1336153 - Skip RustLibrary init on artifact builds. r=froydnj,nalexander
Artifact builds were relying on disabling Rust source file inclusion.
The RustLibrary mozbuild class wants to know cargo's output directory
when initializing itself, but when no compile environment is available
rust.configure isn't included and the corresponding config keys
aren't available.

Skip inializing the dependent fields in that case. Since the artifact
build never tries to compile any of the rust libraries, leaving
these properties undefined works ok.

MozReview-Commit-ID: 8IzTsweSygn

--HG--
extra : rebase_source : a59fc01483fbc85766ff4445c5db7ddb1e49b87c
2017-05-09 14:11:12 -07:00
Wes Kocher
e2902f93a3 Merge inbound to m-c a=merge
MozReview-Commit-ID: Fp2oBAcru51
2017-05-09 14:34:34 -07:00
Carsten "Tomcat" Book
b47fe0286b Backed out changeset 0f320509eddb (bug 1351071) for slowness 2017-05-09 16:58:19 +02:00
Petr Sumbera
ad4120d507 Bug 1360571 - Remove "local" bashism from mozconfig_loader. r=glandium
mozconfig_loader is invoked with /bin/sh, which may not be bash. We could
force mozconfigs to be run with bash instead, but that might be disruptive
for existing mozconfigs, and the sole bashism used in mozconfig_loader is
rather straightforward to workaround by namespacing the variables.
2017-05-05 04:31:02 -07:00
Chris Manchester
365a58a471 Bug 1362949 - Update artifact build code to accept buildbot or taskcluster style artifact names for OS X. r=nalexander
MozReview-Commit-ID: Dr0tv8FM7LP

--HG--
extra : rebase_source : 56f4e482f6c23193bbff39995e1de1bc459be233
2017-05-08 11:25:24 -07:00
Ralph Giles
e9fb64de96 Bug 1363110 - mozboot: update clang package hash. r=froydnj
Fixes a 403 error running `./mach bootstrap` with stylo enabled.

Bug 1359968 updated the tooltool manifests to point to a
publicly-available clang package. Update the macOS hash
used by mozboot to install the same package for local
use by developers who need rust-bindgen.

MozReview-Commit-ID: FtkATaLwc7n

--HG--
extra : rebase_source : 61390c729e694589b0351026aac0263440a9a3c5
2017-05-08 11:53:35 -07:00
Chris Peterson
44c4d43ecf Bug 1362828 - mozboot: Fix clang package download message. r=froydnj
The Python print() function's does not take a format string, so the extraneous %s here inadvertently prints "Downloading clang package from %s https://..." instead of "Downloading clang package from https://...".

MozReview-Commit-ID: 5Is5TK3X34e

--HG--
extra : rebase_source : 02e625fbdaab536d1a787c33edd6dfda9c1039c6
2017-05-07 00:54:14 -07:00
Ralph Giles
ff9ecfa942 Bug 1314147 - Add 'mach vendor aom' for maintaining av1 codec support. r=froydnj
We've traditionally had per-directory 'update' scripts for
third-party media codec implementations. Instead, leverage
the new 'mach vendor' command to centralize the import and
build file generation, placing the upstream source in
third_party/aom.

Note this includes another copy of gtest and other dependencies
which we don't use, but they're required by the upstream build
process we use to generate our own build description, so I've
left them in for now.

MozReview-Commit-ID: CnWcSwvQZEh

--HG--
extra : rebase_source : 28172a41332e920c9ea4a475a6990d43ebf8185f
2017-03-15 14:54:10 -07:00
Jim Chen
15251765f1 Bug 1360291 - Produce android version codes for AArch64/ARM64 Fennec; r=nalexander
Add AArch64/ARM64 support to the script that produces android version
codes. Use the same scheme for AArch64 as x86, since the two
architectures don't overlap, and AArch64 should override ARM just like
x86 should override ARM.
2017-05-04 19:19:31 -04:00
Jan Beich
6c24868ec4 Bug 1360781 - Add Stylo dependencies for ./mach bootstrap on FreeBSD. r=froydnj
MozReview-Commit-ID: 3cD8frPKXnW

--HG--
extra : rebase_source : a2172145af1aec80eb6a67a0a9bd06ab0ec22130
2017-04-29 02:04:02 +00:00
Wes Kocher
e141e24ffb Merge m-c to autoland, a=merge
MozReview-Commit-ID: 1peTFbNMVnU
2017-05-02 17:38:11 -07:00
Nathan Froyd
5635c7bffe Bug 1314355 - part 2 - download LLVM packages from mach bootstrap for Stylo development; r=rillian
For Stylo development, LLVM packages are required due to Stylo's
extensive use of bindgen--generating Rust bindings to Gecko's C++ code.
While people can install LLVM via their system package manager, we've
opted to download the LLVM packages used on Mozilla infrastructure for
building Gecko.  Using Mozilla's packages for LLVM ensures that they
work, and also makes it easier/trivial to integrate support for other
things (e.g. Mozilla's static checkers) into `mach bootstrap`.
2017-05-02 11:23:40 -04:00
Nathan Froyd
be73c54413 Bug 1314355 - part 1 - add ability to use a generic digest algorithm for http_download_and_save; r=rillian
This will be useful for downloading files from tooltool, which requires
a SHA512 checksum.
2017-05-02 11:23:40 -04:00
Gregory Szorc
f7e888274e Bug 1360764 - Print compiler warnings at end of the build; r=froydnj
The way it works today, compiler warnings are logged to build output
twice. The compiler's raw output is logged. Then, if mach's compiler
warning parser detects a warning, a structured log message with info
about that warning is printed as well. Because of the order in which
callbacks fire, mach's warning message is delivered to the logger
first. So build output looks something like:

 0:04.63 Warning: -Wsign-compare in /home/gps/src/firefox/security/nss/lib/dev/ckhelper.c: comparison of integers of different signs: 'CK_ULONG' (aka 'unsigned long') and 'int'
 0:04.63 /home/gps/src/firefox/security/nss/lib/dev/ckhelper.c:135:45: warning: comparison of integers of different signs: 'CK_ULONG' (aka 'unsigned long') and 'int' [-Wsign-compare]
 0:04.63                 (obj_template[i].ulValueLen == -1)) {
 0:04.63                  ~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~

That first line is our structured message formatted to plain text.
Subsequent lines are Clang.

The output here is redundant. But having the structured compiler warning
in the JSON logs is nice so downstream systems don't have to reinvent
the parsing wheel.

Also today, at the end of a clobber build we print a count of the
total number of compiler warnings.

Compiler warnings represent potential bugs. So we want to encourage
people to look at them. However, with build system output often spanning
several hundred lines and compiler warnings scattered in no
deterministic order because build system execution is non-deterministic,
it is easy to lose sight of compiler warnings as they go by in build
output. And, it can be difficult to find a warning in files you care
about because you don't know where in the log to look for that file.

This commit attempts to improve the visibility of compiler warnings
by printing a sorted list of warnings at the end of the build. The list
of warnings it prints are only those seen during the current build
operation. We /could/ print a list of all warnings in the persisted
database. But I think this would be annoying, particularly for
incremental or partial builds.

The structured log message previously emitted at compiler invocation
time has been removed. So now the build backend output doesn't have a
redundant "Warning: " line summarizing the warning next to the compiler
output itself. This is less confusing.

That structured log message has been reborn at the end of the build
and reformatted slightly. If there are any consumers assuming that the
log entry near this structured message is compiler output itself,
they will break. I don't think any such consumers exist. It is also
possible the structured log may not contain warning messages if a
process exit occurs. I'm fine with this: if the `mach` process dies,
we have bigger problems to worry about.

The new output looks something like this:

18:07.97 warning: gfx/angle/src/compiler/translator/util.cpp:216:15 [-Wimplicit-fallthrough] unannotated fall-through between switch labels
18:07.97 warning: gfx/angle/src/compiler/translator/util.cpp:225:15 [-Wimplicit-fallthrough] unannotated fall-through between switch labels
18:07.97 warning: gfx/angle/src/compiler/translator/util.cpp:234:15 [-Wimplicit-fallthrough] unannotated fall-through between switch labels
18:07.97 warning: gfx/cairo/libpixman/src/pixman-bits-image.c:268:32 [-Wshift-negative-value] shifting a negative signed value is undefined
18:07.97 warning: gfx/cairo/libpixman/src/pixman-linear-gradient.c:395:6 [-Wunreachable-code] code will never be executed
18:07.97 warning: gfx/cairo/libpixman/src/pixman-x86.c:80:5 [-Wexpansion-to-defined] macro expansion producing 'defined' has undefined behavior

Note the sorting of files, including by line number and column. If we
wanted to, we could even print that line. But that's for another day
(especially since compilers themselves tend to do this already).

This change has the potential to annoy people. That's because instead
of the parsed warning summary lines being spread out over the build
(where they tend not to be noticed), they will be lumped at the end of
the build log, which people do tend to notice. In my build, I have
~363 warnings/lines. Some could perceive this as excessive and
redundant. But the recourse for this is simple: eliminate compiler
warnings. My hope is that by having the compiler warnings exposed
clearly at the end of the build log that people will notice them
and will take action to eliminate them. Sunlight is a disinfectant.

MozReview-Commit-ID: 9VHXsPhAYmr

--HG--
extra : rebase_source : 6a2da05f794a54ea54a48167a36d130dfbf34e59
2017-04-28 15:50:04 -07:00
Gregory Szorc
f1c2887efb Bug 1360764 - Record warnings seen during the current operation; r=froydnj
Currently, the build monitor has a single compiler warnings database
that unions warnings from previous runs with warnings from the current
invocation. I want to introduce functionality that treats warnings
seen during the current invocation differently from "all warnings."
To facilitate this, this commit introduces a 2nd, non-persisted
warnings database to record warnings just for the current invocation.

MozReview-Commit-ID: FIY0GiarDmr

--HG--
extra : rebase_source : b2002e1c248ea65b2c0ee45a78b1e74d61a26f3c
2017-04-28 17:13:10 -07:00
Gregory Szorc
435febb8fc Bug 1360764 - Decouple warnings database from log parser; r=froydnj
Currently, the WarningsCollector (which parses warnings from line inputs)
accepts a WarningsDatabase (an object representing a collection of
warnings) and populates that instance as a new warning is parsed. In
an upcoming commit I want to introduce a 2nd WarningsDatabase.

Rather that add it to WarningsCollector, I figure it will be easier
to decouple WarningsDatabase from WarningsCollector.

This commit refactors WarningsCollector to call a callback when a
warning is parsed. This allows consumers to do anything they want
with a warning, including potentially write it to multiple databases.

MozReview-Commit-ID: 7Z9x4FMwyof

--HG--
extra : rebase_source : b4844b5c2b1926840d37e46ead38c8c358762ba8
2017-04-28 16:21:44 -07:00
Gregory Szorc
61a5501145 Bug 1304508 - Support passing --keep-going to make; r=chmanchester,ted
mozharness is currently making a manual `make -k` invocation. We don't
want automation calling `make` directly. So teach `mach build` to
accept a --keep-going argument that results in `make -k`.

MozReview-Commit-ID: H3lJ4r8S4vj

--HG--
extra : rebase_source : 9feb7bcaeb855254c53c5fa9d49177c5133f2773
2016-09-21 13:41:34 -07:00