Граф коммитов

319 Коммитов

Автор SHA1 Сообщение Дата
Mike Hommey f094186c6f Bug 1747501 - Move ZLIB_IN_MOZGLUE to python configure. r=firefox-build-system-reviewers,andi
Differential Revision: https://phabricator.services.mozilla.com/D134643
2021-12-29 22:12:45 +00:00
Mike Hommey 906237b715 Bug 1747332 - s/check_build_environment/build_environment/. r=firefox-build-system-reviewers,geckoview-reviewers,andi,calu
Differential Revision: https://phabricator.services.mozilla.com/D134585
2021-12-23 20:47:47 +00:00
Mike Hommey f320f2e0e1 Bug 1743832 - Move bootstrap-related configure code to a separate file. r=firefox-build-system-reviewers,andi
Differential Revision: https://phabricator.services.mozilla.com/D134117
2021-12-17 22:47:50 +00:00
Ryan VanderMeulen 1aa61d071a Bug 1277320 - Run GTests on all Windows flavors as Tier 1. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D133450
2021-12-10 12:49:54 +00:00
Mike Hommey 52936a0022 Bug 1743033 - Avoid creating mach virtualenv when running confgure standalone. r=mhentges
Differential Revision: https://phabricator.services.mozilla.com/D132190
2021-11-26 01:56:04 +00:00
Mike Hommey a154421f99 Bug 1740042 - Use llvm-readelf instead of readelf when available. r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D130949
2021-11-23 02:28:18 +00:00
Mitchell Hentges 725792bd05 Bug 1730712: Update "Moz site" terminology r=ahal
The existing terminology had two issues:
* `VirtualenvManager` wasn't always associated with an on-disk
  `virtualenv`: for example, when running in automation, Mach
  "activates" a `VirtualenvManager`, updating its import scope,
  but without ever creating an on-disk `virtualenv`.
* An upcoming patch splits the `VirtualenvManager` class, pulling
  "on-disk virtualenv-handling functions" from the project-wide
  interface for managing Python's import scope.

After some good discussion with Ahal, I think we've struck
the terminology that handles this distinction well: we'll call
the "import scope"-handling part the "site", and we'll continue
to call on-disk virtualenvs (and their representative classes)
as, well, virtualenvs.

Differential Revision: https://phabricator.services.mozilla.com/D130391
2021-11-17 20:54:23 +00:00
Greg Tatum 0f0b78cc1d Bug 1736907 - Add a build flag to experimentally build with ICU4X static data; r=platform-i18n-reviewers,dminor
Differential Revision: https://phabricator.services.mozilla.com/D129080
2021-11-16 15:09:09 +00:00
Marian-Vasile Laza 25a09c0d08 Backed out changeset 561c776bea20 (bug 1740042) for causing build bustages on llvm-readelf. 2021-11-16 02:51:16 +02:00
Mike Hommey 5459f879e5 Bug 1740042 - Use llvm-readelf instead of readelf when available. r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D130949
2021-11-15 22:48:34 +00:00
Marian-Vasile Laza 51e3255d7c Backed out changeset bf55cb5e6b45 (bug 1740042) for causing build bustages. CLOSED TREE 2021-11-15 22:54:31 +02:00
Mike Hommey 2c9074abb8 Bug 1740042 - Use llvm-readelf instead of readelf when available. r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D130949
2021-11-15 20:41:41 +00:00
Emilio Cobos Álvarez 270e255624 Bug 1738947 - Fix path to virtualenv.py. r=mhentges
It was moved in bug 1732948.

Differential Revision: https://phabricator.services.mozilla.com/D130195
2021-11-02 17:19:45 +00:00
Mike Hommey feecbbaa4f Bug 1731223 - Move wine detection to toolkit/moz.configure. r=firefox-build-system-reviewers,andi
As of now, wine is used with:
- fxc, which is detected in toolkit/moz.configure
- midl, which is detected in toolkit/moz.configure
- ml64 or armasm64, for some assembly sources that aren't used in
  projects that don't include toolkit/moz.configure.

We can thus move it there.

Differential Revision: https://phabricator.services.mozilla.com/D126166
2021-09-22 23:54:26 +00:00
Cristian Tuns afde9ef4f4 Backed out 2 changesets (bug 1731223) for likely causing localized Windows builds to break (bug 1732034) a=backout
Backed out changeset 0aa04e588a4e (bug 1731223)
Backed out changeset 59a15d9c5391 (bug 1731223)
2021-09-22 08:44:17 -04:00
Mike Hommey f2aef849b5 Bug 1731223 - Move wine detection to toolkit/moz.configure. r=firefox-build-system-reviewers,andi
As of now, wine is used with:
- fxc, which is detected in toolkit/moz.configure
- midl, which is detected in toolkit/moz.configure
- ml64 or armasm64, for some assembly sources that aren't used in
  projects that don't include toolkit/moz.configure.

We can thus move it there.

As of bug 1731195, there is no remaining use of wine for artifact
builds, so we also make it limited to builds with a compile environment.

Differential Revision: https://phabricator.services.mozilla.com/D126166
2021-09-21 20:51:24 +00:00
Noemi Erli 4e7f6a6a7e Backed out changeset e61e701731df (bug 1731223) for causing toolchains bustages 2021-09-18 02:03:28 +03:00
Mike Hommey 576ad5a0c7 Bug 1731223 - Wine is not optional on Windows cross-builds. r=firefox-build-system-reviewers,andi
Differential Revision: https://phabricator.services.mozilla.com/D125938
2021-09-17 21:34:46 +00:00
Mike Hommey e2e6bfc01f Bug 1731195 - Remove the wine-wrapping for makensis. r=firefox-build-system-reviewers,andi
Now that we have a bootstrappable linux-native makensis, we don't need
the wine-wrapping anymore.

Differential Revision: https://phabricator.services.mozilla.com/D125927
2021-09-17 09:11:22 +00:00
Mike Hommey 193d84c955 Bug 1731168 - Only look for non-versioned nsis. r=firefox-build-system-reviewers,mhentges
Now that we bootstrap it, we don't need to look for old versioned
versions from mozilla-build. While here stop looking for makensis when
not building for Windows.

Differential Revision: https://phabricator.services.mozilla.com/D125906
2021-09-17 01:19:05 +00:00
Mike Hommey 7e693067b8 Bug 1730825 - Bootstrap nsis for Windows builds. r=firefox-build-system-reviewers,andi
And at the same time, make the toolchain artifact directly usable on
cross-compiles.

Differential Revision: https://phabricator.services.mozilla.com/D125635
2021-09-15 08:33:04 +00:00
Mitchell Hentges c1f770eddb Bug 1727561: Tweak an exception's log level r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D123777
2021-08-31 15:38:40 +00:00
Mitchell Hentges fe7e7e5b9b Bug 1727561: Log exception in `bootstrap_toolchain_tasks()` r=firefox-build-system-reviewers,nalexander
This will ensure that recoverable failures in task-definition work won't
be hidden.

Differential Revision: https://phabricator.services.mozilla.com/D123638
2021-08-25 16:11:02 +00:00
Andi-Bogdan Postelnicu 0ac52aa9d7 Bug 1725125 - Make a hybrid build system combining non-unified with unified. CLOSED TREE
By hybrid unified system we understand a system that encapsulates modules that are built in the unified mode
but also other modules, like `dom/Animation`, as an example, in the non unified environment.

This approach is desirable since we already have most of the modules transitioned to the non unified system but there are
still some that are not yet compatible, but in the long term this will be done by each module owner and can be also tested
locally using the build system.

If a module can't be built outside the unified method it's `moz.build` config file needs to have `REQUIRES_UNIFIED_BUILD = False`

To also enable this we need to have a flag from `mozconfig`, like:

```
ac_add_options --disable-unified-build
```

Differential Revision: https://phabricator.services.mozilla.com/D122328
2021-08-25 11:21:42 +00:00
Narcis Beleuzu 50dd0540cd Backed out changeset 29d7e91fe721 (bug 1725125) for plain Bp-hybrid bustages 2021-08-25 14:42:09 +03:00
Andi-Bogdan Postelnicu 4b8a4fc95a Bug 1725125 - Make a hybrid build system combining non-unified with unified r=firefox-build-system-reviewers,mhentges,glandium
By hybrid unified system we understand a system that encapsulates modules that are built in the unified mode
but also other modules, like `dom/Animation`, as an example, in the non unified environment.

This approach is desirable since we already have most of the modules transitioned to the non unified system but there are
still some that are not yet compatible, but in the long term this will be done by each module owner and can be also tested
locally using the build system.

If a module can't be built outside the unified method it's `moz.build` config file needs to have `REQUIRES_UNIFIED_BUILD = False`

To also enable this we need to have a flag from `mozconfig`, like:

```
ac_add_options --disable-unified-build
```

Differential Revision: https://phabricator.services.mozilla.com/D122328
2021-08-25 10:46:18 +00:00
Mike Hommey b5fdfe98af Bug 1725855 - Don't default to system-zlib on macOS. r=firefox-build-system-reviewers,andi
pkg-config is not available by default on macOS, and we might as well
avoid configure defaults that may require it.

Differential Revision: https://phabricator.services.mozilla.com/D122794
2021-08-17 09:38:24 +00:00
Mike Hommey 170547001c Bug 1725092 - Change how --enable/disable-gtest-in-build is handled. r=firefox-build-system-reviewers,andi
So that --enable-gtest-in-build works in local builds.

Differential Revision: https://phabricator.services.mozilla.com/D122312
2021-08-11 05:45:06 +00:00
Mike Hommey dda1875bdd Bug 1721514 - Add a few more debugging logs about configure bootstrap. r=firefox-build-system-reviewers,andi
Differential Revision: https://phabricator.services.mozilla.com/D120416
2021-07-21 21:00:13 +00:00
Mike Hommey 5ac51ef77d Bug 1720806 - Avoid multiple calls to toolchain_task_definitions during configure. r=firefox-build-system-reviewers,mhentges
Bug 1692137 added code that would end up calling
toolchain_task_definitions twice, once for each of host and target.
With the recent changes from bug 1719229, that is not useful anymore.
We also don't need the toolchain prefixes for toolchains on unsupported
hosts (which were useful before bug 1719229 for the target sysroots).

Differential Revision: https://phabricator.services.mozilla.com/D120044
2021-07-16 20:59:35 +00:00
Mike Hommey 162f9b6800 Bug 1719229 - Rename the bootstrappable sysroot toolchains. r=firefox-build-system-reviewers,andi
In cross-compilation setups (x86_64 host, i686 or aarch64 target), we're
going to need two sysroots. Obviously, we need the sysroot paths to be
different in that case, so the sysroot path themselves need to contain
some distinctive name, and we'll use the `target.toolchain` name for
that (the target triplet with the vendor/machine stripped out).

Because the path name needs to be reflected in the artifact name as well
as the toolchain name, we also change them.

And because the current prefix in the toolchain name is now redundant
with the suffix, we remove the prefix, and allow the bootstrapping
mechanism to try toolchains without the prefix.

Differential Revision: https://phabricator.services.mozilla.com/D119846
2021-07-14 08:54:43 +00:00
Mike Hommey 8da6bc9f03 Bug 1719229 - Don't replace _ with - in toolchain names to bootstrap. r=firefox-build-system-reviewers,andi
This was originally done to avoid renaming the dump_syms toolchain, but
is going to cause problems for the next change.

Differential Revision: https://phabricator.services.mozilla.com/D119845
2021-07-14 08:54:42 +00:00
Mike Hommey 841e1d8a06 Bug 1717585 - Switch --enable-bootstrap on by default on central. r=firefox-build-system-reviewers,mhentges
As there are some things to solve first for the sysroot, we don't enable
the sysroot bootstrap unless --enable-bootstrap is given explicitly. The
default will still bootstrap everything else when building on central.

Differential Revision: https://phabricator.services.mozilla.com/D118450
2021-06-22 23:36:28 +00:00
Mike Hommey 9540e9a37c Bug 1716912 - Switch --enable-bootstrap on by default on Windows builds on central r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D118108
2021-06-22 02:16:47 +00:00
Emilio Cobos Álvarez 2a2dd88339 Bug 1717248 - Remove non-existing file from moz.configure. r=firefox-build-system-reviewers,nalexander
This fixes it for me. I believe this is right because the file it was inlined
into in D117711 is also on this list.

Differential Revision: https://phabricator.services.mozilla.com/D118277
2021-06-18 23:05:28 +00:00
Mike Hommey 83c4b6a318 Bug 1716911 - Switch --enable-bootstrap on by default on macos builds on central. r=firefox-build-system-reviewers,nalexander
Differential Revision: https://phabricator.services.mozilla.com/D118107
2021-06-17 04:59:42 +00:00
Butkovits Atila 4a58ea14fe Backed out changeset 5e287042c278 (bug 1716911) for causing failures at test_toolchain_configure.py. CLOSED TREE 2021-06-17 07:47:07 +03:00
Mike Hommey e6564e5935 Bug 1716911 - Switch --enable-bootstrap on by default on macos builds on central. r=firefox-build-system-reviewers,nalexander
Differential Revision: https://phabricator.services.mozilla.com/D118107
2021-06-17 03:45:56 +00:00
Nick Alexander 03b1e6ddba Bug 1714397 - Apply `mach lint --fix` to `/moz.configure`. r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D116741
2021-06-03 18:04:23 +00:00
Mike Hommey c2908b2bf8 Bug 1712350 - Use the mozmake toolchain for CI Windows builds. r=firefox-build-system-reviewers,mhentges
As well as local builds with --enable-bootstrap.

Differential Revision: https://phabricator.services.mozilla.com/D116065
2021-05-27 22:27:25 +00:00
Mitchell Hentges fc799c0fab Bug 1706774: Add tools to VisualStudio backend exclusions r=firefox-build-system-reviewers,nalexander
"memory" and "tools/update-programs" do not require
the VisualStudio backend.

Differential Revision: https://phabricator.services.mozilla.com/D114651
2021-05-18 15:00:39 +00:00
Mike Hommey 8189f56cd9 Bug 1599574 - Avoid re-running clang-plugin tests. r=firefox-build-system-reviewers,andi,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D114320
2021-05-05 21:21:11 +00:00
Mike Hommey 6736f91ada Bug 1704580 - Move various rust-related configure items to rust.configure. r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D112157
2021-04-20 00:33:58 +00:00
Mike Hommey b1f45b497d Bug 1697098 - Default to --enable-bootstrap for arm64 mac builds. r=firefox-build-system-reviewers,andi,sheehan,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D107601
2021-03-09 21:27:52 +00:00
Mike Hommey 1afcdbc6aa Bug 1693725 - Make --enable-bootstrap install missing toolchains. r=firefox-build-system-reviewers,andi,sheehan,mhentges
This means --enable-bootstrap now is the same as what
--enable-bootstrap=install currently does. --enable-bootstrap=install is at the
same time desupported.
We also remove --enable-bootstrap=update, which is not worth supporting.

Differential Revision: https://phabricator.services.mozilla.com/D105719
2021-02-24 02:13:10 +00:00
Mike Hommey 34ada26a0e Bug 1693723 - Avoid bootstrapping when an explicit path is given for tools. r=firefox-build-system-reviewers,mhentges
This changes things such that setting e.g. NASM=/usr/bin/nasm will avoid
bootstrapping nasm even when bootstrapping is enabled.

This is not applied to CC/CXX/HOST_CC/HOST_CXX because things are more
complicated.

This also simplifies how check_prog is called for a bootstrapped tool,
and avoids the repetition of when.

CBINDGEN handling needs the pattern being applied manually because it
currently doesn't use check_prog. Once --enable-bootstrap=install
becomes the default on developer builds, it will be possible to simplify
this.

Differential Revision: https://phabricator.services.mozilla.com/D105718
2021-02-24 02:01:33 +00:00
Mike Hommey dfb8c396a6 Bug 1693723 - Pass bootstrap path in one piece to bootstrap_{,search_}path. r=firefox-build-system-reviewers,andi,mhentges
It will make upcoming changes simpler.

Differential Revision: https://phabricator.services.mozilla.com/D105717
2021-02-24 02:01:32 +00:00
Mike Hommey c4ae566143 Bug 1692416 - Allow --enable-bootstrap=install to look for aarch64 mac artifacts. r=firefox-build-system-reviewers,andi,dmajor
There aren't any currently, but it's coming in the following commits.

Differential Revision: https://phabricator.services.mozilla.com/D104975
2021-02-12 22:28:01 +00:00
Mike Hommey 5f86b697af Bug 1692137 - Allow local linux builds to use a bootstrapped sysroot. r=firefox-build-system-reviewers,andi,mhentges
Bug 1690930 added sysroots that can be bootstrapped. With this change,
we allow --enable-bootstrap=install to pull the right sysroot for the
configured target, and --enable-bootstrap to update it if it was already
there.

Differential Revision: https://phabricator.services.mozilla.com/D104797
2021-02-12 20:31:49 +00:00
Mike Hommey 571f8f5c17 Bug 1690712 - Allow --enable-bootstrap in all configurations. r=firefox-build-system-reviewers,mhentges
And make it prioritize the bootstrap directory over system paths.

Differential Revision: https://phabricator.services.mozilla.com/D103981
2021-02-09 22:01:25 +00:00
Mike Hommey 4da42ddfb5 Bug 1690454 - Allow configure --enable-bootstrap to optionally install instead of updating. r=firefox-build-system-reviewers,mhentges
We still default to updates only, though, because all the details of
only installing what's needed are not ironed out yet.

Differential Revision: https://phabricator.services.mozilla.com/D103865
2021-02-03 21:27:04 +00:00
Mike Hommey 21d7cbaac5 Bug 1687421 - Avoid error with --enable-bootstrap on platforms with no bootstrap artifacts. r=firefox-build-system-reviewers,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D102259
2021-01-19 14:10:16 +00:00
Cosmin Sabou f6ebc1a8b7 Bug 1553230 - Fix mbu failures on configure/lint.py. r=glandium 2021-01-17 00:29:26 +02:00
Mike Hommey 66a79a59fe Bug 1553230 - Allow to opt-in to automatically update some bootstrapped toolchains. r=firefox-build-system-reviewers,nalexander,mhentges
This adds a --enable-bootstrap build flag that will automatically update
cbindgen, node, clang, sccache, nasm, wine, lucetc, dump_syms, pdbstr,
and winchecksec if they are already installed in ~/.mozbuild.

Eventually, we'll want to allow to install toolchains that weren't
already install, but one step at a time.

This explicitly doesn't cover rustc, which is its own can of worms, or
android-{ndk,sdk}, which are not installed via toolchain artifacts
currently.

Differential Revision: https://phabricator.services.mozilla.com/D101723
2021-01-15 22:15:51 +00:00
Mike Hommey 4ed35480e2 Bug 1686646 - Look for more tools in MOZ_FETCHES_DIR. r=firefox-build-system-reviewers,dmajor
This will allow to find them on automation without setting anything in
mozconfigs.

Differential Revision: https://phabricator.services.mozilla.com/D101720
2021-01-15 04:33:01 +00:00
Mike Hommey 758c53a631 Bug 1686646 - Automatically find tools in MOZ_FETCHES_DIR. r=firefox-build-system-reviewers,dmajor
When MOZ_FETCHES_DIR is set, use that instead of ~/.mozbuild. This will
allow to find them on automation without explicit mozconfig help.

Differential Revision: https://phabricator.services.mozilla.com/D101719
2021-01-15 04:33:00 +00:00
Mike Hommey 8362a57bed Bug 1686646 - Use more targeted search paths for each tool. r=firefox-build-system-reviewers,dmajor
Instead of adding all possible tool paths from ~/.mozbuild, we only
add the relevant paths for each of the tools we search for.

Differential Revision: https://phabricator.services.mozilla.com/D101718
2021-01-15 04:26:05 +00:00
Mike Hommey ea136c68b4 Bug 1686646 - Move --enable-release and DEVELOPER_OPTIONS to top-level moz.configure. r=firefox-build-system-reviewers,dmajor
Differential Revision: https://phabricator.services.mozilla.com/D101713
2021-01-15 04:25:54 +00:00
David Major 8f8ea43ab6 Bug 1677742 - Followups for new pass manager LTO r=glandium
Code review followups for 1675600: Restrict the use of new pass manager during LTO to builds where we're using the new pass manager in general, and (on Windows) where lld-link is new enough to understand the flag.

Differential Revision: https://phabricator.services.mozilla.com/D97372
2020-11-21 02:13:04 +00:00
Mitchell Hentges 71aed98a29 Bug 1667170: Don't restrict symbol stripping for Android builds r=firefox-build-system-reviewers,glandium
Embedded symbols aren't useful for Android because:
* The associated Android tooling supports detached symbols
* The cost of the increased size is extra severe for mobile

However, Linux/Mac tooling isn't as supportive of detached symbols,
and the extra size isn't as impactful.
So, fully remove symbols for Android (even in profile builds), but keep
'em for other platforms.

There was a previous solution to remove profile-specific strip logic
from moz.configure and to instead adjust mozconfigs to achieve
the desired stripping amount. As requested in bug 1667170, this
implements the above^ solution after rolling back those previous
changesets:
* fd891240a96a
* 2f2a6df81762
* bbc6744b3ca2
* f849afa84d90

Differential Revision: https://phabricator.services.mozilla.com/D96902
2020-11-17 15:59:30 +00:00
Ricky Stewart 02a7b4ebdf Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
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-26 18:34:53 +00:00
Bogdan Tara da1098d4aa Backed out 10 changesets (bug 1654103, bug 1672023, bug 1518999) for PanZoomControllerTest.touchEventForResult gv-junit failures CLOSED TREE
Backed out changeset ff3fb0b4a512 (bug 1672023)
Backed out changeset e7834b600201 (bug 1654103)
Backed out changeset 807893ca8069 (bug 1518999)
Backed out changeset 13e6b92440e9 (bug 1518999)
Backed out changeset 8b2ac5a6c98a (bug 1518999)
Backed out changeset 575748295752 (bug 1518999)
Backed out changeset 65f07ce7b39b (bug 1518999)
Backed out changeset 4bb80556158d (bug 1518999)
Backed out changeset 8ac8461d7bd7 (bug 1518999)
Backed out changeset e8ba13ee17f5 (bug 1518999)
2020-10-24 03:36:18 +03:00
Ricky Stewart c0cea3b0fa 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 1ff59cb7a3 Backed out changeset 7558c8821a07 (bug 1654103) for multiple failures. CLOSED TREE 2020-10-22 03:51:06 +03:00
Ricky Stewart 50762dacab 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
Mike Hommey 54f6141287 Bug 1671424 - Move configure execution from client.mk to `mach configure`. r=firefox-build-system-reviewers,rstewart
`mach configure` currently runs the equivalent to `make -f client.mk`.
This is history, and essentially does the following:
- Create `configure` and `js/src/configure` from `configure.in` and
`js/src/configure.in` respectively.
- Create the objdir.
- Run `configure` from the objdir.

The `configure` script is, nowadays, only really used as a means to set
OLD_CONFIGURE (and also for people who want to run `configure`,
literally, as in the `configure; make` workflow). `mach configure`
actually doesn't need it. Neither does recursing into `js/src` require
`js/src/configure`, since bug 1520340 (and now as of bug 1669633, we
don't even recurse).

Because configure.py can actually derive OLD_CONFIGURE on its own
(except for `js/src/configure`, but `mach configure` doesn't run that),
we don't really need `configure` for `mach configure`.

So all in all, we're at a point in history where it's straightforward to
just initiate configure.py from mach configure, so we just do that.

And in the hypothetical case where the `mach configure` code is somehow
running in python2, we get the mach virtualenv python3 and use it to
execute `configure.py`.

Differential Revision: https://phabricator.services.mozilla.com/D93741
2020-10-20 20:41:52 +00:00
Mike Hommey 5afb69830c Bug 1670156 - Use the same prefix/suffix for rust libraries on mingw builds. r=firefox-build-system-reviewers,dmajor
Rustc >= 1.44 changed the file names of the static libraries it
produces with -windows-gnu targets, to match that of mingw clang/gcc.

Considering we still build on 1.43, the best fix would be to derive the
prefix/suffix based on the version of rust, but that actually turns into
a hard-to-solve problem because of configure tests for bindgen also
depending on the prefix/suffix value to be known.

On the other hand, we're soon due to an update to 1.47, so the simpler
solution is to just push mingw builds to require 1.44 (settling for the
smallest upgrade possible for now) and to remove the split between C and
rust library prefix/suffixes.

Differential Revision: https://phabricator.services.mozilla.com/D93726
2020-10-16 16:06:19 +00:00
Narcis Beleuzu 9252175982 Backed out changeset e34634758f51 (bug 1671424) for bustages on configure.py . CLOSED TREE 2020-10-20 00:16:22 +03:00
Mike Hommey fcd16177c6 Bug 1671424 - Move configure execution from client.mk to `mach configure`. r=firefox-build-system-reviewers,rstewart
`mach configure` currently runs the equivalent to `make -f client.mk`.
This is history, and essentially does the following:
- Create `configure` and `js/src/configure` from `configure.in` and
`js/src/configure.in` respectively.
- Create the objdir.
- Run `configure` from the objdir.

The `configure` script is, nowadays, only really used as a means to set
OLD_CONFIGURE (and also for people who want to run `configure`,
literally, as in the `configure; make` workflow). `mach configure`
actually doesn't need it. Neither does recursing into `js/src` require
`js/src/configure`, since bug 1520340 (and now as of bug 1669633, we
don't even recurse).

Because configure.py can actually derive OLD_CONFIGURE on its own
(except for `js/src/configure`, but `mach configure` doesn't run that),
we don't really need `configure` for `mach configure`.

So all in all, we're at a point in history where it's straightforward to
just initiate configure.py from mach configure, so we just do that.

And in the hypothetical case where the `mach configure` code is somehow
running in python2, we get the mach virtualenv python3 and use it to
execute `configure.py`.

Differential Revision: https://phabricator.services.mozilla.com/D93741
2020-10-19 16:24:34 +00:00
Mike Hommey d3519998ac Bug 1520395 - Remove the python configure distinction between option and js_option. r=firefox-build-system-reviewers,andi,rstewart
Now that we don't recurse into the js python configure, we don't need to
have a special treatment for the options that need to be passed down to
that subconfigure, which is what js_option was for.

Differential Revision: https://phabricator.services.mozilla.com/D92727
2020-10-08 04:07:46 +00:00
Ricky Stewart fbc6c5a60f Bug 1667892 - Move search for `wget` binary from `old-configure` to Python `configure` r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D91645
2020-09-30 15:37:21 +00:00
Ricky Stewart bbfa258584 Bug 1656993: Create and require by default global `virtualenv`s in `~/.mozbuild` for `mach` r=mhentges,ahal
In two different places we've been encountering issues regarding 1) how we configure the system Python environment and 2) how the system Python environment relates to the `virtualenv`s that we use for building, testing, and other dev tasks. Specifically:

1. With the push to use `glean` for telemetry in `mach`, we are requiring (or rather, strongly encouraging) the `glean_sdk` Python package to be installed with bug 1651424. `mach bootstrap` upgrades the library using your system Python 3 in bug 1654607. We can't vendor it due to the package containing native code. Since we generally vendor all code required for `mach` to function, requiring that the system Python be configured with a certain version of `glean` is an unfortunate change.

2. The build uses the vendored `glean_parser` for a number of build tasks. Since the vendored `glean_parser` conflicts with the globally-installed `glean_sdk` package, we had to add special ad-hoc handling to allow us to circumvent this conflict in bug 1655781.

3. We begin to rely more and more on the `zstandard` package during build tasks, this package again being one that we can't vendor due to containing native code. Bug 1654994 contained more ad-hoc code which subprocesses out from the build system's `virtualenv` to the SYSTEM `python3` binary, assuming that the system `python3` has `zstandard` installed.

As we rely more on `glean_sdk`, `zstandard`, and other packages that are not vendorable, we need to settle on a standard model for how `mach`, the build process, and other `mach` commands that may make their own `virtualenv`s work in the presence of unvendorable packages.

With that in mind, this patch does all the following:

1. Separate out the `mach` `virtualenv_packages` from the in-build `virtualenv_packages`. Refactor the common stuff into `common_virtualenv_packages.txt`. Add functionality to the `virtualenv_packages` manifest parsing to allow the build `virtualenv` to "inherit" from the parent by pointing to the parent's `site-packages`. The `in-virtualenv` feature from bug 1655781 is no longer necessary, so delete it.

2. Add code to `bootstrap`, as well as a new `mach` command `create-mach-environment` to create `virtualenv`s in `~/.mozbuild`.

3. Add code to `mach` to dispatch either to the in-`~/.mozbuild` `virtualenv`s (or to the system Python 3 for commands which cannot run in the `virtualenv`s, namely `bootstrap` and `create-mach-environment`).

4. Remove the "add global argument" feature from `mach`. It isn't used and conflicts with (3).

5. Remove the `--print-command` feature from `mach` which is obsoleted by these changes.

This has the effect of allowing us to install packages that cannot be vendored into a "common" place (namely the global `~/.mozbuild` `virtualenv`s) and use those from the build without requiring us to hit the network. Miscellaneous implementation notes:

1. We allow users to force running `mach` with the system Python if they like. For now it doesn't make any sense to require 100% of people to create these `virtualenv`s when they're allowed to continue on with the old behavior if they like. We also skip this in CI.

2. We needed to duplicate the global-argument logic into the `mach` script to allow for the dispatch behavior. This is something we avoided with the Python 2 -> Python 3 migration with the `--print-command` feature, justifying its use by saying it was only temporarily required until all `mach` commands were running with Python 3. With this change, we'll need to be able to determine the `mach` command from the shell script for the forseeable future, and committing to this forever with the cost that `--print-command` incurs (namely `mach` startup time, an additional .4s on my machine) didn't seem worth it to me. It's not a ton of duplicated code.

Differential Revision: https://phabricator.services.mozilla.com/D85916
2020-08-17 17:21:02 +00:00
Mike Hommey 8357809511 Bug 1647780 - Don't strip less when profiling is enabled. r=froydnj
Upon reflection, we probably don't need the extra symbols anymore. Back
when we reduced the amount of stripping when enabling profiling, the
profiler wasn't able to download symbols on its own. It now is able to
do so, on all platforms.

As the stripping happens at packaging time, this doesn't change anything
for mach run on local builds.

Differential Revision: https://phabricator.services.mozilla.com/D86666
2020-08-11 23:42:37 +00:00
Mike Hommey ffcff8cdcf Bug 1651680 - Support --enable-strip/--enable-install-strip on mingw. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D86649
2020-08-11 02:53:34 +00:00
Mike Hommey c9ae9101aa Bug 1651680 - Replace PKG_SKIP_STRIP with PKG_STRIP. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D86648
2020-08-11 02:44:17 +00:00
Razvan Maries 6d82f7f1a0 Backed out 2 changesets (bug 1651680) for L10n bustages. CLOSED TREE
Backed out changeset 09a5f4dcd92a (bug 1651680)
Backed out changeset 13a881966dda (bug 1651680)
2020-08-11 05:40:47 +03:00
Mike Hommey 99910cc0ff Bug 1651680 - Support --enable-strip/--enable-install-strip on mingw. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D86649
2020-08-11 00:08:49 +00:00
Mike Hommey 6714f1ec83 Bug 1651680 - Replace PKG_SKIP_STRIP with PKG_STRIP. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D86648
2020-08-11 00:07:02 +00:00
Nick Alexander 9d1281ef52 Bug 1641291 - Part 1: Allow cross-compiling from host macOS -> Windows target. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D77117
2020-07-07 02:13:35 +00:00
Coroiu Cristina 3cce853af2 Backed out 4 changesets (bug 1641291) for build bustages and SM failures on a CLOSED TREE
Backed out changeset 9c0a44614576 (bug 1641291)
Backed out changeset 0dcf604b880e (bug 1641291)
Backed out changeset d830bee40b5c (bug 1641291)
Backed out changeset fe38c82c2dad (bug 1641291)
2020-06-03 22:09:52 +03:00
Nick Alexander 916d838f9c Bug 1641291 - Part 1: Allow cross-compiling from host macOS -> Windows target. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D77117
2020-06-03 18:18:15 +00:00
Mike Hommey 623e778ff2 Bug 1641786 - Move --with-debug-label to python configure. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D77414
2020-05-29 12:17:24 +00:00
Mike Hommey 313131917e Bug 1641775 - Move --with-system-nspr to python configure. r=firefox-build-system-reviewers,rstewart
Versions of NSPR >= 4.10 come with a pkg-config file. We currently
depend on 4.9.2 for spidermonkey, but much more recent versions for
Firefox. 4.10 is less than a year newer than 4.9.2, and 4.10 is 7 years
old, so bumping the requirement to 4.10 is not really a big deal.

With the use of pkg-config, --with-nspr-cflags and --with-nspr-libs are
not needed.

None of the AC_TRY_COMPILE tests were any useful because
PR_STATIC_ASSERT and PR_UINT64 have been when we look for them since
4.8.6 and 4.9 respectively.

Differential Revision: https://phabricator.services.mozilla.com/D77412
2020-05-29 17:11:27 +00:00
Mike Hommey eba22e2279 Bug 1641760 - Move --with-system-zlib to python configure. r=froydnj
As all versions of zlib >= 1.2.3.1 have a pkg-config file, and 1.2.3.1
is close to 14 years old, let's drop 1.2.3 and just use pkg-config, which
simplifies what we need to do dramatically.

Differential Revision: https://phabricator.services.mozilla.com/D77404
2020-05-29 20:59:00 +00:00
Mike Hommey a97c7ebfe7 Bug 1640578 - Remove --disable-install-strip from mac mozconfigs. r=froydnj
The need for --disable-install-strip in the mac mozconfigs comes from a
discrepancy in how stripping is handled between platforms. On Windows,
there is no stripping. On non-Mac unix, `strip` removes local symbols as
well as debug info and debug symbols. On Mac, it actually removes too
much, and one has to pass flags to remove both local symbols (`-x`) and
debug symbols (`-S`). Debug info is already in a separate file
(`.dSYM`).

For profiling reasons, we do ship e.g. nightlies with local symbols but
not debug info or symbols (or at least that's the intent). On Windows,
again, nothing to do. On non-Mac unix, we pass `--strip-debug` to
`strip` so that it keeps local symbols. That's where the discrepancy
comes in for Mac: the build system doesn't handle this at all, so the
mozconfigs contain --disable-install-strip to avoid stripping.

The build system should be doing what it's expected to be doing from the
start, without mozconfigs opting into anything.

AFAIK, we only really need the local symbols, so we can `strip -S` on
Mac when profiling is enabled, rather than `strip -x -S`. This also
significantly reduces the size of the installer for nightlies.

And while we're here, move the logic out of old-configure and into
python configure.

Differential Revision: https://phabricator.services.mozilla.com/D76789
2020-05-27 01:42:07 +00:00
Mike Hommey 6ba1065508 Bug 1639815 - Move --enable-strip and --enable-install-strip to python configure. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D76291
2020-05-21 23:51:58 +00:00
Mike Hommey 711ffb4939 Bug 1639815 - Move --disable-icf to python configure. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D76290
2020-05-21 22:38:47 +00:00
Mike Hommey 03b3bd5a35 Bug 1639815 - Move --enable-dtrace to python configure. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D76289
2020-05-21 22:38:47 +00:00
Bogdan Tara 0bff3c4d0b Backed out 7 changesets (bug 1639815) for --disable-install-strip related bustages CLOSED TREE
Backed out changeset 04a1388fc17d (bug 1639815)
Backed out changeset d48eea557b6d (bug 1639815)
Backed out changeset 6fba10f61bd2 (bug 1639815)
Backed out changeset cfb945f6c82f (bug 1639815)
Backed out changeset 16447c678749 (bug 1639815)
Backed out changeset 89475adf15b6 (bug 1639815)
Backed out changeset 94877a079054 (bug 1639815)
2020-05-22 01:33:22 +03:00
Mike Hommey 9725d351de Bug 1639815 - Move --enable-strip and --enable-install-strip to python configure. r=nalexander
Differential Revision: https://phabricator.services.mozilla.com/D76291
2020-05-21 20:39:54 +00:00
Mike Hommey 1f62799146 Bug 1639815 - Move --disable-icf to python configure. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D76290
2020-05-21 10:13:48 +00:00
Mike Hommey 1304fec22e Bug 1639815 - Move --enable-dtrace to python configure. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D76289
2020-05-21 10:13:35 +00:00
Ricky Stewart 2ce561dd99 Bug 1635514 - Delete tup CI/configure stuff r=froydnj
This includes scripts that involve `tup`, jobs that build `tup` in automation, `tup.configure`, and related infrastructure and documentation.

Differential Revision: https://phabricator.services.mozilla.com/D73921
2020-05-05 18:34:16 +00:00
Mike Hommey 314c1a65a3 Bug 1626951 - Disable new pass manager on aarch64-windows builds without LTO. r=dmajor
Differential Revision: https://phabricator.services.mozilla.com/D69500

--HG--
extra : moz-landing-system : lando
2020-04-03 14:27:45 +00:00
Mike Hommey 5573726a45 Bug 1620980 - Fix Windows artifact builds after bug 1620165. r=froydnj
Both Wine and UPX are necessary when doing artifact builds.

Differential Revision: https://phabricator.services.mozilla.com/D66136

--HG--
extra : moz-landing-system : lando
2020-03-10 00:23:40 +00:00
Mike Hommey b1ef3b02cf Bug 1619504 - Make the build system look for wine64. r=dmajor
Wine64 is the version that supports 64-bits binaries as well as 32-bits.

Differential Revision: https://phabricator.services.mozilla.com/D65061

--HG--
extra : moz-landing-system : lando
2020-03-03 12:54:47 +00:00
Mike Hommey 01879b59e1 Bug 1618766 - Properly find and use MT on Windows cross-builds. r=froydnj
- Remove the separate option() for MT, because it dates back from when
  we needed `MT` not being an absolute path, but that hasn't been true
  since bug 1290040.

- Extend what was done in bug 1617794 to MT, although the long term move
  is to not rely on MT at all.

- Patch leftovers from bug 1613799.

Differential Revision: https://phabricator.services.mozilla.com/D64712

--HG--
extra : moz-landing-system : lando
2020-02-28 12:33:03 +00:00
Mike Hommey d747b65211 Bug 1617794 - Wrap Windows tools with Wine on cross builds. r=dmajor
Windows programs run via Wine don't like Unix absolute paths (they look
like command line arguments), so we need to use relative paths.

Mingw already run fxc2 via wine, but for some reason it doesn't care
about the Unix absolute paths. genshaders does need some adjustements to
run properly with the real fxc.

Now, on actual Windows, because the temporary directory where
tempfile.NamedTemporaryFile creates files by default is not necessarily
on the same drive as where the command runs from, a relative path can't
be constructed. So we also force the temporary file to be created in the
current (obj) directory.

There is no similar concern for other files because we only go from
objdir to srcdir, and the build system already doesn't support both
being on a separate drive.

While here, flush stdout when the genshared script writes to it, so that
the messages are printed out immediately rather than randomly, later,
after output from subprocesses.

Differential Revision: https://phabricator.services.mozilla.com/D64294

--HG--
extra : moz-landing-system : lando
2020-02-27 04:42:57 +00:00
Thinker Li dbada9842d Bug 1609881 - Part 3: build the fork server for Linux & FreeBSD. r=gsvelto
Differential Revision: https://phabricator.services.mozilla.com/D61255

--HG--
extra : moz-landing-system : lando
2020-02-14 16:50:33 +00:00
Andreea Pavel 3dfe514f42 Backed out changeset 84184c894e33 (bug 1609881) for multiple failures e.g assertion failure StaticPrefList_layers.h on a CLOSED TREE 2020-02-12 21:05:21 +02:00