During `mach bootstrap` for Firefox desktop, m4 is installed via `libgtk2.0-dev`.
Since we don't install that package for Android bootstrap, this causes
configure failures.
Install `m4` as a common package to fix configure on Android. Since we plan
to remove `libgtk2.0-dev` soon, this will also avoid breakage when that change
lands.
Differential Revision: https://phabricator.services.mozilla.com/D108692
Bootstrap runs mach create-mach-environment, which may or may not
successfully install glean. When it doesn't, it's not useful to ask
whether to enable telemetry when it's not going to work.
Differential Revision: https://phabricator.services.mozilla.com/D108131
Updates `./mach bootstrap` to use `--no-interactive` from global args.
Ensures all bootstrap prompts have a default option.
Differential Revision: https://phabricator.services.mozilla.com/D106814
The retry limit doesn't add much value - if user doesn't want
to answer a prompt, they can CTRL-C.
Additionally, `prompt_yesno` doesn't have a retry limit, so
this increases prompt behaviour consistency.
Differential Revision: https://phabricator.services.mozilla.com/D107122
Xcode hasn't been necessary to build Firefox for a while. Command line
tools are enough, but if Xcode is available, that's also sufficient.
Mach bootstrap, however, for historic reasons, mostly, ends up wanting
to install both, which is a waste of time and disk space.
Differential Revision: https://phabricator.services.mozilla.com/D107770
- Replace urllib2.urlopen with requests.get. We use requests because
http_download_and_hash, which is also used by __main__ uses it already.
- Convert byte strings to unicode strings.
- Don't wrap sys.stdout, and instead explicitly flush when wanted.
Differential Revision: https://phabricator.services.mozilla.com/D107026
Removes MacPorts as an option for package management on OSX. Changes
most error messages to be Homebrew specific, and rips out the `getattr`
based function resolution used to support both managers.
Differential Revision: https://phabricator.services.mozilla.com/D107277
NDK 21 includes `lldb-server`, which we need in order to support
`./mach run --debug` with `lldb`.
The Android SDK manager no longer includes a standalone `lldb` package; perhaps
it was deprecated? Anyway, this appears to currently be the best way to get
`lldb-server` into a location that is easy to find during build configuration.
Differential Revision: https://phabricator.services.mozilla.com/D94379
* Puts the docs in order, so that contributors aren't jumping to the
middle of the page to install system tools, then back to the top to
clone Firefox.
* Removes docs on MacPorts since it's being removed in bug 1688263.
* Removes step to manually install brew packages since that happens
automatically in bootstrap now.
* Simplifies mercurial installation docs
* Removes unnecessary mozconfig-tweaking instructions
* Removes almost-always-unnecessary DEFINE and troubleshooting
information.
Differential Revision: https://phabricator.services.mozilla.com/D102973
Bug 1553230 made configure automatically get toolchain artifacts in some
cases. The artifacts for clang-cl builds are clang.tar.zst, and extract to
clang/. Configure derives the task name from that knowledge, and fails
to find clang-cl tasks because of that.
For consistency, these tasks should be called clang. They are clang
builds anyways, and like any other clang builds, they also contain
clang-cl.
Differential Revision: https://phabricator.services.mozilla.com/D103150
Since zstandard has native code that must be compiled, and that code
uses Python headers, we should be installing those headers as part
of bootstrap.
Most users will have these packages on their machines through various
other means (notably installing `pip`, ie `sudo apt install python3-pip`),
but since it is possible to avoid a pip installation (for example
by installing Mercurial through `yum` and then running bootstrap
immediately after cloning) we should specify these packages as required
by bootstrap.
Differential Revision: https://phabricator.services.mozilla.com/D101479
The current recommendation fails while waiting on user input. Instead, just
save the script to disk as an intermediate step, then invoke it.
Differential Revision: https://phabricator.services.mozilla.com/D101228
Knowing whether `brew` or `macports` is available isn't necessary
to generate the android mozconfig.
This should fix the generation of android mozconfig when a package
manager isn't available.
Differential Revision: https://phabricator.services.mozilla.com/D99496
Knowing whether `brew` or `macports` is available isn't necessary
to generate the android mozconfig.
This should fix the generation of android mozconfig when a package
manager isn't available.
Differential Revision: https://phabricator.services.mozilla.com/D99496
Knowing whether `brew` or `macports` is available isn't necessary
to generate the android mozconfig.
This should fix the generation of android mozconfig when a package
manager isn't available.
Differential Revision: https://phabricator.services.mozilla.com/D99496
Knowing whether `brew` or `macports` is available isn't necessary
to generate the android mozconfig.
This should fix the generation of android mozconfig when a package
manager isn't available.
Depends on D99482
Differential Revision: https://phabricator.services.mozilla.com/D99496
Native python packages will probably require python headers. For some
systems, these are available in a separate system package (such as
python[3]-dev).
If the user is bootstrapping with "--no-system-changes", we just
try to install these native packages and fail gracefully if required
headers aren't installed.
Differential Revision: https://phabricator.services.mozilla.com/D98530
It currently doesn't work for several reasons, and even if what
currently fails would start working, we don't actually want people to be
using the clang it installs, for example, because it would run through
Rosetta and be slow. So until all these details are figured out, we
should outright reject mach bootstrap and send people to the always
evolving google doc that has the instructions.
Differential Revision: https://phabricator.services.mozilla.com/D97985
Previously, configure checked for Java binaries using
"configure"-specific "which()" and environment-variable-getter
functions. When bug 1670264 changed Java detection to use logic shared
between "configure" and "bootstrap", more general "which()"
/environment-variable-getter functions were used.
The test used to work because the "configure"-specific functions
respect the mocked-out file system and environment variables.
This patch adjusts the test to add mocks so the more general logic
is redirected to respect the mocked data.
Differential Revision: https://phabricator.services.mozilla.com/D96189
This environment variable can cause the module resolution to break
and have unexpected behavior while running mach bootstrap.
Differential Revision: https://phabricator.services.mozilla.com/D95185
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
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