I added this print statement, but after using `mach` for a while with
it, I think it is far too chatty. This change just removes the line.
Information is only printed when dependencies are installed.
The documentation build for `gstreamer-gl-x11` depends on nightly Rust
for some reason, which breaks our doc build. Use `--keep-going` to
prevent breakage in dependencies from breaking our doc build. This
unfortunately hides issues in our own documentation build.
NB: It isn't possible to exclude dependencies with `--exclude` unless
you are using `--workspace`. We would probably like to do that, but we
have crates with the same name, preventing using `--workspace`.
* build: Clean up post-build copy of Windows DLLs
- No longer use vcvarsall.bat at all. Instead find the Windows SDK
directory by looking in the registry.
- Split logic for copying Windows dependencies into its own function and
do some minor clean up, such as collecting all MSVC functionality into
visual_studio.py.
- Remove support for Visual Studio 2015 and Visual Studio 2017.
This is a preparatory change in order to support Visual Studio 2022.
* More cleanup of the code
We can now use the "new" pip resolver which should prevent the
installation of conflicting packages. Also, take this opportunity to
make bootstrap more resilient. Hash all dependencies to detect
situations where a newer marker file has been installed, but for an
older branch. This should ensure that dependencies are up to date even
when switching back and forth between older and new branches.
This also updates some dependencies to be the same as the ones used for
WPT tests, which is an issue caught be the resolver.
Fixes#10611.
This makes it more foolproof to install crown from inside the Servo
directory, because the root Servo config.toml overrides the rustc to use
crown (an obvious circular dependency).
This was enabled to allow using the simd / std::simd / packed-simd crate
in the glyph cache [1][2]. Support for simd in the gfx crate was removed
though [3], so this flag is not really doing anything -- and the Android
build is currently broken. Plus, it's unclear what target features we
can enable using stable Rust. We can explore adding neon support when
Android is working again.
This is part of a long-term effort to remove build complication and make
it so that `cargo build` is equivalent to `./mach build`.
1. https://github.com/servo/servo/pull/10916
2. https://github.com/servo/servo/pull/10900
3. https://github.com/servo/servo/pull/24304
Add documentation and simplify the way that GStreamer shared objects
lists are stored. In addition, move the list of extra GStreamer DLL
dependencies to to the `gstreamer.py` file.
The conditional plugin logic is no longer required as we are having
already increased our GStreamer version requirements.
Ubuntu 20.04 doesn't have a new enough version of GStreamer, so
automatically disable media when running on that platform.
This also cleans up the media detection a bit, putting the result in a
`enable-media` variable and moving some of the logic into the build
scripts themselves rather than the platform module.
It's often the case (especially with the taplo installation and on
Windows) that bootstrap is doing lots of stuff in the background for a
long amount of time. Without output it's hard to tell what exactly is
going on. This change adds more output to this process as well as
removing some Pythong 2.x era code.
- Upgrade the version of GStreamer for Windows
This upgrades the Windows build to use the most recent version of
GStreamer. This is necessary to upgrade our GStreamer dependency.
- Stop shipping GStreamer binaries on Linux
The binary bundle of GStreamer that we package is not used to compile --
only to run layout tests. It's too old for the APIs that we are using
(as evidenced by needed 1.18 for WebRTC) and nowadays Linux
distributions carry a new version so it's unecessary for our build
machines. No longer using this binary bundle will allow us to upgrade
our GStreamer dependency -- which now has stricter checks that we
are using at least version 1.18.
- Upgrade media to use newer versions of GStreamer / GLib dependencies
1. Make the tidy output easier to follow
2. Integrate the WPT manifest cleanliness step into tidy
itself and don't run it if nothing has changed in the WPT
directory.
3. Fix an issue where Python test requirements were not installed,
which could cause issues with some modules not being found.
Fixes#30002.
hyper_serde changes very infrequently and typically only in order to
upgrade Servo dependencies. crates.io lists hyper_serde as having no
dependents, and its integration will not prevent releasing new versions.
Integrating it will both reduce the number of repositories we have to
maintain as well as making it easier to upgrade Servo dependencies.
* Replace virtualenv with Python's built-in venv.
* Apply Delan's suggestions and make a couple small fixes
- Fix a tidy warning about directories that don't exist
- Use shutil instead of the redundant get_exec_path
- Miscellaneous cleanups
* Fix typo in environment variable
* fix bug where pip still tries to the wrong site-packages
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Delan Azabani <dazabani@igalia.com>
This completes the transition to compiling Servo with rust stable. Some
nightly-only features are still used when compiling the `script` and
`crown` crates, as well as for some style unit tests. These will likely
break with newer compiler versions, but `crown` can be disabled for them
conditionally. This is just the first step.
This has some caveats:
1. We need to disable setting up the special linker on Linux. The -Z
option isn't supported with stable rust so using this is out --
meanwhile we can't be sure that lld is installed on most systems.
2. `cargo fmt` still uses some unstable options, so we need to rely on
the unstable toolchain just for running `fmt`. The idea is to fix this
gradually.
Rust uses a version of ThinLTO by default now [1]. This can be tweaked
by adjusting rust compiler flags, which is probably a better way of
controlling this than a custom servo configuration considering:
1. We want to remove the custom servo configuration eventually.
2. The -Z option that this configuration currently uses is unsupported
by stable rust.
1. https://blog.rust-lang.org/inside-rust/2020/06/29/lto-improvements.html
* Remove script_plugins
* Use crown instead of script_plugins
* crown_is_not_used
* Use crown in command base
* bootstrap crown
* tidy happy
* disable sccache
* Bring crown in tree
* Install crown from tree
* fix windows ci
* fix warning
* fix mac
libscript_plugins.dylib is not available anymore
* Update components/script/lib.rs
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Update for nightly-2023-03-18
Mostly just based off https://github.com/servo/servo/pull/30630
* Always install crown
it's slow only when there is new version
* Run crown test with `mach test-unit`
* Small fixups; better trace_in_no_trace tests
* Better doc
* crown in config.toml
* Fix tidy for real
* no sccache on rustc_wrapper
* document rustc overrides
* fixup of compiletest
* Make a few minor comment adjustments
* Fix a typo in python/servo/platform/base.py
Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
* Proper test types
* Ignore tidy on crown/tests
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
The version of `mozdebug` installable via pip is two years old and
Mozilla is slow to release new versions. It also uses `distutils` which
doesn't work on newer Python versions. Vendor it and stop using
`distutils` there.
* mach: use `importlib` module instead of `imp`
`imp` module has been deprecated since python 3.4
and has been removed in 3.12. The recommended alternative
is to use the `importlib` module that was introduced in
python 3.1
This is required to fix the CI failures in macos builds
since GitHub runner images for macos-13 now use python 3.12
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* mach: use `importlib` module instead of `imp`
`imp` module has been deprecated since python 3.4
and has been removed in 3.12. The recommended alternative
is to use the `importlib` module that was introduced in
python 3.1
This is required to fix the CI failures in macos builds
since GitHub runner images for macos-13 now use python 3.12
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
---------
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Run main and try jobs with debug assertions
* use single quotes in workflow expressions
* set force-debug-assertions in main.yml
* set force-debug-assertions as part of decision job
* fix typo in MachCommands.build
* fix more hardcoded profile names
* fix tidy
* split cargo_profile_option on windows
* Fix running servoshell and unit tests through a symlink
* rename steps to make them less confusing
* fix more hardcoded cargo profile options
* fix missing inputs in linux-wpt and mac-wpt
* make filename an inherent method of Resource
* rework release-with-debug-assertions profile to production profile
* rework resource logic to eliminate std_test_override
* set production flag in nightly release builds
* clean up servobuild.example and windows.yml
* oops forgot to check in embedder_traits/build.rs
* fix mach test-unit behaviour through symlink
* unit tests only need current_dir and ancestors
* fix macOS package smoketest breakage
* expect css/css-color/currentcolor-003 to crash under layout 2013
* fix more references to {force,release-with}-debug-assertions
* fix local build failures under --profile production
These need to be installed in order to build so we can install them via
Homebrew. Do this by simply restoring the Homebrew bootstrapping logic
we had in place previously.
Fixes#27171.
Upstream wpt script has bug where 'product' defaults to
'firefox' and this causes import of uninstalled python
modules specific to firefox runners.
Fixes#30452
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Update mozjs
* moztools4 in bootstrap
* no autoconf
* tidy
* switch to servo-build-deps
* update mozjs for real
* glue mozjs
* fmt
* move to servo/mozjs
* cleanup and move user input logix into servoshell
* fix fmt
* moves test from servoshell file
* move command-line args into servoshell
* remove feature media-gstreamer
* fix fmt
* move user input logic code into lib to make it more testable
* remove opts_matches in fn instead get it from main2
* remove pub and fix import
* add licence in new file
* revert passing Matches, instead pass Option String
* review update, also move sanitize fn to parser file
* fmt fix
* review fix: remove extra line