Commit Graph

212 Commits

Author SHA1 Message Date
Ricky Stewart
065d2eb893 Bug 1654103: Standardize on Black for Python code in mozilla-central. r=remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers,devtools-backward-compat-reviewers,jgilbert,preferences-reviewers,sylvestre,maja_zf,webcompat-reviewers,denschub,ntim,whimboo,sparky
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat.

5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-23 20:40:42 +00:00
Dorel Luca
95b44c982f Backed out changeset 7558c8821a07 (bug 1654103) for multiple failures. CLOSED TREE 2020-10-22 03:51:06 +03:00
Ricky Stewart
43baed3c18 Bug 1654103: Standardize on Black for Python code in mozilla-central. r=remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers,devtools-backward-compat-reviewers,jgilbert,preferences-reviewers,sylvestre,maja_zf,webcompat-reviewers,denschub,ntim,whimboo,sparky
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-21 21:27:27 +00:00
David Major
1dd334effe Bug 1662608 - Set -fcrash-diagnostics-dir in build-clang.py r=froydnj
This will let us get reproducers for compiler self-host assertion failures.

Differential Revision: https://phabricator.services.mozilla.com/D89079
2020-09-10 20:25:54 +00:00
Bogdan Tara
cdecea1029 Backed out changeset 1d92340a0f3c (bug 1662608) for clang5.0 failures CLOSED TREE 2020-09-09 01:43:09 +03:00
David Major
e1beae96e7 Bug 1662608 - Set -fcrash-diagnostics-dir in build-clang.py r=froydnj CLOSED TREE
This will let us get reproducers for compiler self-host assertion failures.

Differential Revision: https://phabricator.services.mozilla.com/D89079
2020-09-02 00:27:12 +00:00
Andi-Bogdan Postelnicu
f7fd17a94f Bug 1654557 - add clangd to the clang-tidy package. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D84528
2020-07-22 18:15:19 +00:00
David Major
be22488f0c Bug 1616694 - Allow build-clang to work with different Mac SDKs r=froydnj
LLVM 11 introduces a hard requirement for SDK 10.12 in order to build for Mac. We want to keep building older LLVMs with 10.11 though, so this patch adds some flexibility so that build-clang can make use of whatever SDK package a particular task pulls from tooltool (but still requesting a deployment target of 10.11).

Differential Revision: https://phabricator.services.mozilla.com/D82621
2020-07-13 22:44:54 +00:00
Tom Ritter
23ee0fb083 Bug 1652037 - Wire up build_clang_tidy_external in build-clang.py r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D83120
2020-07-10 18:25:29 +00:00
Nathan Froyd
ef9678f6af Bug 1651675 - explicitly use some useful linker options when building clang; r=dmajor
clang/LLVM's build scripts can turn these on on their own, but explicitly
setting what we want is better than guessing.  The change is not huge, maybe
~2-3% on the major shared libraries (`libclang`, `libclang-cpp`, `libLLVM`),
about 1% on the overall `.tar.zst` size, but every little bit counts, right?

Differential Revision: https://phabricator.services.mozilla.com/D82896
2020-07-10 12:51:36 +00:00
june wilde
63268b0988 Bug 1648798 - Add option for importing external checks into clang-tidy; r=tjr,andi
Differential Revision: https://phabricator.services.mozilla.com/D81699
2020-07-07 18:05:27 +00:00
David Major
9aca834540 Bug 1650239 - Allow threads in our Mac clang build r=froydnj
Source history does not give any good clues about why this line was added in the first place. In any case, LLVM trunk currently has build bustage when threads are disabled. We could work around the bustage and/or wait for a fix, but it seems like threads are a good thing to have in general nowadays. Maybe this could help with LTO build times.

Differential Revision: https://phabricator.services.mozilla.com/D82447
2020-07-06 20:43:42 +00:00
Chris AtLee
bd503afc7b Bug 1637381: Use zstd for clang toolchains r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D74930
2020-05-21 13:31:55 +00:00
David Major
bcb9a52b46 Bug 1326486 - build-clang: Add support for PGO builds. r=glandium
This adds the ability to do four-stage PGO builds. This was surprisingly straightforward thanks to PGO being a well-supported scenario in LLVM's cmake.

For reference, the stages are:
stage1: Initial build with gcc
stage2: Instrumented build using stage1
stage3: Train by using the instrumented stage2 to build the clang tree
stage4: Optimize using the stage3 compiler and the profdata created with it

Differential Revision: https://phabricator.services.mozilla.com/D69080
2020-04-07 14:12:58 +00:00
David Major
a03ad942ec Bug 1326486 - build-clang: Add support for 4-stage builds r=glandium
Separating out the mechanical/"boring" changes to make the next patch more clear. This patch adds the ability to build a fourth stage that for now doesn't do anything special.

I changed to using >= to make it more obvious that e.g. "here is what's going to happen for stage 2" -- the off-by-one was too hard on my brain.

Differential Revision: https://phabricator.services.mozilla.com/D69079
2020-04-07 14:13:01 +00:00
David Major
0fb3cb6a24 Bug 1326486 - build-clang: Install imports and asan symbols only in the final stage r=glandium
Otherwise, PGO builds would fail to find asan at stage2 because the instrumented build uses `LLVM_BUILD_RUNTIME=No`.

Differential Revision: https://phabricator.services.mozilla.com/D69082
2020-04-07 14:12:56 +00:00
David Major
149a4e1d41 Bug 1326486 - build-clang: avoid building unnecessary things in intermediate stages. r=glandium
This will partially atone for making builds longer with PGO.

Depends on D69618

Differential Revision: https://phabricator.services.mozilla.com/D69620
2020-04-07 14:12:47 +00:00
David Major
39215fc4fe Bug 1326486 - build-clang: pass is_final_stage even for stage1. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D69618
2020-04-07 14:12:49 +00:00
Mihai Alexandru Michis
6e318ac471 Backed out 7 changesets (bug 1326486) for causing bpgo failures.
CLOSED TREE

Backed out changeset 810a84a18948 (bug 1326486)
Backed out changeset e04c57ed0c04 (bug 1326486)
Backed out changeset 493c338ad705 (bug 1326486)
Backed out changeset 96701b9815c2 (bug 1326486)
Backed out changeset 8adfc59eb3c5 (bug 1326486)
Backed out changeset 441282fd1fea (bug 1326486)
Backed out changeset a64593d4c645 (bug 1326486)
2020-04-07 17:08:08 +03:00
David Major
773fddeaa4 Bug 1326486 - build-clang: Add support for PGO builds. r=glandium
This adds the ability to do four-stage PGO builds. This was surprisingly straightforward thanks to PGO being a well-supported scenario in LLVM's cmake.

For reference, the stages are:
stage1: Initial build with gcc
stage2: Instrumented build using stage1
stage3: Train by using the instrumented stage2 to build the clang tree
stage4: Optimize using the stage3 compiler and the profdata created with it

Differential Revision: https://phabricator.services.mozilla.com/D69080
2020-04-07 08:32:32 +00:00
David Major
8d0ca79064 Bug 1326486 - build-clang: Add support for 4-stage builds r=glandium
Separating out the mechanical/"boring" changes to make the next patch more clear. This patch adds the ability to build a fourth stage that for now doesn't do anything special.

I changed to using >= to make it more obvious that e.g. "here is what's going to happen for stage 2" -- the off-by-one was too hard on my brain.

Differential Revision: https://phabricator.services.mozilla.com/D69079
2020-04-07 08:29:02 +00:00
David Major
5c15fe7f60 Bug 1326486 - build-clang: Install imports and asan symbols only in the final stage r=glandium
Otherwise, PGO builds would fail to find asan at stage2 because the instrumented build uses `LLVM_BUILD_RUNTIME=No`.

Differential Revision: https://phabricator.services.mozilla.com/D69082
2020-04-07 08:27:36 +00:00
David Major
31cc939032 Bug 1326486 - build-clang: avoid building unnecessary things in intermediate stages. r=glandium
This will partially atone for making builds longer with PGO.

Depends on D69618

Differential Revision: https://phabricator.services.mozilla.com/D69620
2020-04-07 08:27:26 +00:00
David Major
a5b7056a53 Bug 1326486 - build-clang: pass is_final_stage even for stage1. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D69618
2020-04-07 08:25:29 +00:00
Mike Hommey
4a3c606591 Bug 1450088 - Build clang with libxml2 support. r=froydnj
This is required for llvm-mt, which building winchecksec will require.
We do a dummy change to build-clang.sh so as to change the toolchain
index hash.

Differential Revision: https://phabricator.services.mozilla.com/D68153
2020-03-26 21:53:00 +00:00
Andi-Bogdan Postelnicu
5f558eb3a4 Bug 1619921 - enable clang-plugin with support for alpha checkers module. r=froydnj,sg
Differential Revision: https://phabricator.services.mozilla.com/D65314
2020-03-17 07:01:09 +00:00
David Major
1fa367e917 Bug 1614367 - Fix CMAKE_FIND_ROOT_PATH in build-clang for mac r=glandium
Best as I can tell, this was a longstanding typo. This went unnoticed because cmake didn't do any interesting `find`s -- until recently in LLVM 10, where zlib is now queried via `find_package`.

Differential Revision: https://phabricator.services.mozilla.com/D62829
2020-02-18 07:45:12 +00:00
Ricky Stewart
2c3b716311 Bug 1601448 - The clang.tar.xz bootstrap artifact should contain the libclang_rt.builtins-wasm32.a archive r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D56019
2019-12-09 16:59:49 +00:00
Andi-Bogdan Postelnicu
5b7059ac8c Bug 1584175 - Add lib/libclang-cpp.* to the clang-tidy artifact. r=froydnj,dmajor
Since we've upgraded to clang 9, clang-format changed and now uses dynamic libraries
for the clang tooling lib that it leverages.

Differential Revision: https://phabricator.services.mozilla.com/D47265
2019-09-27 12:19:13 +00:00
Nathan Froyd
40765919d7 Bug 1579870 - add wasm support to our clang builds; r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D45201
2019-09-17 20:14:17 +00:00
David Major
41825e54fd Bug 1578775: Remove LIBCXX_LIBCPPABI_VERSION from build-clang.py r=glandium
This build workaround was made unnecessary (and in fact harmful) by 2d0b4d6bb3 (diff-140d2deaecabaad987b883a1de1c2aa4) which landed in LLVM 9.

It seems that we don't need this anyway even on our current LLVM 8 builds, so landing this separately in preparation for bug 1573211.

Reviewed as part of a larger patch in https://phabricator.services.mozilla.com/D44160#1342283

MANUAL PUSH: This may cause a toolchain rebuild.
2019-09-04 12:01:59 -04:00
Nathan Froyd
036dfbf6a9 Bug 1572724 - remove unused URL_REPO definition from build-clang.py; r=glandium
This definition is now unnecessary, given that the source code is
fetched for us from elsewhere.

Depends on D41368

Differential Revision: https://phabricator.services.mozilla.com/D41369
2019-08-09 21:12:31 +00:00
Nathan Froyd
128b7adc73 Bug 1572724 - preserve symlinks when installing libgcc; r=glandium
Otherwise we wind up with clownshoes like:

```
froydnj@hawkeye:/opt/build/froydnj/tmp/clang$ ls -l lib/libstdc++.so*
-rwxr-xr-x 1 froydnj froydnj 11633720 Aug  6 20:44 lib/libstdc++.so
-rwxr-xr-x 1 froydnj froydnj 11633720 Aug  6 20:44 lib/libstdc++.so.6
-rwxr-xr-x 1 froydnj froydnj 11633720 Aug  6 20:44 lib/libstdc++.so.6.0.24
```

and have duplicate copies of shared libraries in our toolchain packages,
which are not exactly small.

Differential Revision: https://phabricator.services.mozilla.com/D41368
2019-08-09 21:11:31 +00:00
Mike Hommey
7864ddeec6 Bug 1573378 - Make build-clang independent of what MOZ_FETCHES_DIR resolves to. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D41711
2019-08-15 11:21:42 +09:00
Mike Hommey
6d834cb75d Bug 1571576 - Flush stderr before running subprocesses in build-clang. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D40728
2019-08-07 13:54:22 +09:00
Mike Hommey
0205898e4a Bug 1571566 - Fix cmake error handling in build-clang.py after python3 conversion. r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D40720
2019-08-07 13:54:21 +09:00
Mike Hommey
31a7f6933c Bug 1570541 - Use git fetch tasks for clang. r=froydnj
What this means is that the sources for clang/llvm are downloaded
separately from the toolchain build (which also means we finally only
download a given version of clang once for all platforms).

In turn, this means the build-clang.py script needs to start with an
existing llvm-project tree, and we choose to make build-clang.py expect
that it's run from the llvm-project root directory.

This also means we don't need to download git for the windows toolchain
task.

Differential Revision: https://phabricator.services.mozilla.com/D40402
2019-08-07 13:54:15 +09:00
Mike Hommey
120a32afc4 Bug 1570598 - Pass the clang json file as an argument to the toolchain script. r=froydnj
Make the argument use the same format as resources, so move the
sub-script invocation accordingly.

Differential Revision: https://phabricator.services.mozilla.com/D40364
2019-08-03 07:08:49 +09:00
Mike Hommey
aeac8f1b0c Bug 1570564 - Convert build-clang.py to python 3. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D40152
2019-08-02 19:06:20 +09:00
Mike Hommey
e1026a9702 Bug 1570515 - Change how build-clang.py consumes subprocess output. r=froydnj
Bug 1546136 wrapped subprocess execution output to capture cmake's, but
at the detriment of other output, and hiding everything unless an error
occurs.

So instead, we only capture the output when the called process is cmake,
and even when it is cmake, we don't pipe stderr at all (since we only
care about cmake's stdout) and we print out stdout as it comes in rather
than later. We then later check the output for hints at the more useful
cmake logs and dump them.

While here, add verbosity to ninja output (which gives the command
lines, rather than generic "Building foo.o" output).

Differential Revision: https://phabricator.services.mozilla.com/D40142
2019-08-02 19:06:00 +09:00
Sylvestre Ledru
52aad7ba43 Bug 1566336 - Build clang from git rather than subversion. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D38361

MANUAL PUSH: avoid closing autoland while clang rebuilds.
2019-08-01 07:26:55 +09:00
Bogdan Tara
5fe3fe3210 Backed out changeset 4ba7a3e079e3 (bug 1566336) for static analysis bustage CLOSED TREE 2019-08-01 00:38:59 +03:00
Sylvestre Ledru
3108423b6d Bug 1566336 - Build clang from git rather than subversion. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D38361

MANUAL PUSH: avoid closing autoland while clang rebuilds.
2019-08-01 05:56:39 +09:00
Sylvestre Ledru
ad846f7d0a Bug 1566409 - Force the deactivation of the llvm binding generation r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D38176
2019-07-17 05:07:53 +00:00
Andrew Halberstadt
de1233b5da Bug 1563797 - Use 'backports.shutil_which' instead of 'which' in the build system r=firefox-build-system-reviewers,chmanchester
Credit: Callek for figuring out an issue in 'make check' making the binary
absolute in mozbuild.base.

Differential Revision: https://phabricator.services.mozilla.com/D37319
2019-07-11 14:04:39 +00:00
Nathan Froyd
01e4f05295 Bug 1551690 - be more specific about the LLVM target on OS X; r=nalexander
Our current OS X builds use `--target=x86_64-darwin11` (which
corresponds to OS X 10.7).  This target is problematic for two reasons:

* We're actually targeting for OS X 10.9 (`MACOSX_DEPLOYMENT_TARGET`);
* It's slightly different from the default Rust target.

Let's address these problems in reverse order: differences from the Rust
target are bad, because the `--target` we provide to `clang` and the
Rust target find their way into LLVM bitcode files and the linker will
refuse to link together bitcode files that have incompatible targets.

Why are the two incompatible?  The current `--target` doesn't have a
"vendor" in triple-speak, whereas the Rust one has "apple" as the
vendor (`x86_64-apple-darwin`) We therefore need to change the
`--target` we pass to `clang` to have a vendor of "apple".

This need is behind the {init,toolchain}.configure changes,
but it has ramifications elsewhere, because `clang` looks for
`--target`-prefixed build tools.  So we have to change the `--target`
for cctools to get the right tool prefixes and we have to change the
`--target` for building clang ourselves so that *those* builds can find
the newly renamed cctools.

Once we've done, that's really enough; we don't *need to address the
first problem: While the `--target` might be `x86_64-apple-darwin11`,
both `clang` and `rustc` will dynamically choose the target triple that
eventually lands in LLVM bitcode files based on
`MACOSX_DEPLOYMENT_TARGET`, which we set in all builds.  But the current
target is slightly misleading, and the cctools don't need to be prefixed
with a particular Darwin version, since they work for all Darwin
targets.  Let's just drop the "11" from the `--target` and eliminate a
little bit of confusion.

Differential Revision: https://phabricator.services.mozilla.com/D31128
2019-05-21 17:53:44 +00:00
Andreea Pavel
0263bcca5b Backed out changeset ae7096d1add7 (bug 1551690) for toolchain bustages on a CLOSED TREE 2019-05-21 17:05:24 +03:00
Nathan Froyd
166d5472ce Bug 1551690 - be more specific about the LLVM target on OS X; r=nalexander
Our current OS X builds use `--target=x86_64-darwin11` (which
corresponds to OS X 10.7).  This target is problematic for two reasons:

* We're actually targeting for OS X 10.9 (`MACOSX_DEPLOYMENT_TARGET`);
* It's slightly different from the default Rust target.

Let's address these problems in reverse order: differences from the Rust
target are bad, because the `--target` we provide to `clang` and the
Rust target find their way into LLVM bitcode files and the linker will
refuse to link together bitcode files that have incompatible targets.

Why are the two incompatible?  The current `--target` doesn't have a
"vendor" in triple-speak, whereas the Rust one has "apple" as the
vendor (`x86_64-apple-darwin`) We therefore need to change the
`--target` we pass to `clang` to have a vendor of "apple".

This need is behind the {init,toolchain}.configure changes,
but it has ramifications elsewhere, because `clang` looks for
`--target`-prefixed build tools.  So we have to change the `--target`
for cctools to get the right tool prefixes and we have to change the
`--target` for building clang ourselves so that *those* builds can find
the newly renamed cctools.

Once we've done, that's really enough; we don't *need to address the
first problem: While the `--target` might be `x86_64-apple-darwin11`,
both `clang` and `rustc` will dynamically choose the target triple that
eventually lands in LLVM bitcode files based on
`MACOSX_DEPLOYMENT_TARGET`, which we set in all builds.  But the current
target is slightly misleading, and the cctools don't need to be prefixed
with a particular Darwin version, since they work for all Darwin
targets.  Let's just drop the "11" from the `--target` and eliminate a
little bit of confusion.

Differential Revision: https://phabricator.services.mozilla.com/D31128
2019-05-21 13:48:23 +00:00
Coroiu Cristina
01743811df Backed out changeset 2e560a9e4bcf (bug 1551690) for build bustages 2019-05-21 03:51:56 +03:00
Nathan Froyd
5cb73c3181 Bug 1551690 - be more specific about the LLVM target on OS X; r=nalexander
Our current OS X builds use `--target=x86_64-darwin11` (which
corresponds to OS X 10.7).  This target is problematic for two reasons:

* We're actually targeting for OS X 10.9 (`MACOSX_DEPLOYMENT_TARGET`);
* It's slightly different from the default Rust target.

Let's address these problems in reverse order: differences from the Rust
target are bad, because the `--target` we provide to `clang` and the
Rust target find their way into LLVM bitcode files and the linker will
refuse to link together bitcode files that have incompatible targets.

Why are the two incompatible?  The current `--target` doesn't have a
"vendor" in triple-speak, whereas the Rust one has "apple" as the
vendor (`x86_64-apple-darwin`) We therefore need to change the
`--target` we pass to `clang` to have a vendor of "apple".

This need is behind the {init,toolchain}.configure changes,
but it has ramifications elsewhere, because `clang` looks for
`--target`-prefixed build tools.  So we have to change the `--target`
for cctools to get the right tool prefixes and we have to change the
`--target` for building clang ourselves so that *those* builds can find
the newly renamed cctools.

Once we've done, that's really enough; we don't *need to address the
first problem: While the `--target` might be `x86_64-apple-darwin11`,
both `clang` and `rustc` will dynamically choose the target triple that
eventually lands in LLVM bitcode files based on
`MACOSX_DEPLOYMENT_TARGET`, which we set in all builds.  But the current
target is slightly misleading, and the cctools don't need to be prefixed
with a particular Darwin version, since they work for all Darwin
targets.  Let's just drop the "11" from the `--target` and eliminate a
little bit of confusion.

Differential Revision: https://phabricator.services.mozilla.com/D31128
2019-05-15 21:13:17 +00:00