Use software rendering when running servo in headless mode
<!-- Please describe your changes on the following line: -->
Properly setting environment to use OsMesa in headless mode.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix#13515
<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because I manually ran: `./mach run -d tests/html/about-mozilla.html -z`
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14379)
<!-- Reviewable:end -->
In addition to minor changes for Windows, this forces Windows Python to
be used for all Windows builds (instead of using Windows Python only for
pc-windows-msvc builds).
Add `--version` flag
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy --faster` does not report any errors
- [X] These changes fix#11241 (github issue number if applicable).
Either:
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____
Not 100% sure of a good way to test this, so I'm submitting as is for feedback. Manually testing it appears to work fine.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11262)
<!-- Reviewable:end -->
Use the same build environment and features for CEF, Servo, Gonk, Geckolib
* Remove unnecessary dependencies and features from top-level Cargo.tomls. The features for each crate will be computed based on the union of features specified in the dependency graph. Specifying the same ones again just adds more ways for them to get out of sync.
* Move all cargo build environment variables into CommandBase
Fixes#11112. r? @metajack
(Not included: CI test to make sure #11112 doesn't regress again.)
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11122)
<!-- Reviewable:end -->
This preserved the fix from #11097 in the situation where `$CARGO_HOME` and
`cargo-home-dir` in `.servobuild` are both present: `.servobuild` should win.
But it changes the behavior when `$CARGO_HOME` is present and `.servobuild` is
not: Then `$CARGO_HOME` should be used.
We now check the following values in order of priority and use the first one
that is found:
1. `cargo-home-dir` in `.servobuild`
2. `CARGO_HOME_DIR` in the enivironment
3. default value (`<servo-repo>/.cargo`)
This use always `cargo-home-dir` in `/.servobuild`
even if you set `CARGO_HOME` in your shell.
If you use [racer][racer] with [rustup (multirust.rs)][rustup],
you may set `CARGO_HOME` env variable.
Then the previous code would be a problem which does not use
`cargo-home-dir` in `/.servobuild`.
[racer]: https://github.com/phildawes/racer
[rustup]: https://github.com/rust-lang-nursery/rustup.rs
The build system needs to disable gold on arm64 slaves. Other configuration is
done through environment variables, and buildbot hosts currently don't use a
.servobuild file at all.
This change adds the `get_env_bool` function to cast an environment variable's
string contents into a Python boolean, and uses it to retrieve the optional
SERVO_RUSTC_WITH_GOLD setting.
Currently if Servo is built using Cygwin, it is incorrectly classified
as "unknown" host, which makes downloading Rust and Cargo fail. This
commit fixes that.