aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/platform/linux.py
Commit message (Collapse)AuthorAgeFilesLines
* bootstrap: Make unknown distro instructions more helpful (#31750)Martin Robinson2024-03-191-2/+3
| | | | | It doesn't make sense to ask everyone to file a bug if their distribution is unsupported. We have manual build instructions for some distributions and we can add instructions for more easily.
* Add gstreamer plugins good/ugly for better codec support (#31687)Delan Azabani2024-03-151-3/+5
| | | | | * NixOS: add gst-plugins-{good,ugly} for better codec support * Add gstreamer plugins good/ugly to all other package lists
* install libudev-dev required by gamepad API (#31376)Mukilan Thiyagarajan2024-02-191-1/+1
| | | | | | | | | | | | | | Ubuntu 20.04 does not have libudev-dev causing build failure when compiling libudev-sys, which is in-turn needed by gilrs-core. Similarly, nix build also needs the udev C library. On Ubuntu 22.04, we don't see the build failures since the build dependency 'libgstreamer-plugins-base-1.0-dev' transitively pulls in libudev-dev. Fixes #31373 Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* bootstrap: More resiliently install Deiban-like platform dependencies (#31281)Martin Robinson2024-02-071-8/+10
| | | | | | | | 1. First check to see if a package is available before trying to install it. This means that we always do our best to install everything, but don't fail if we cannot. 2. Install crown and taplo first. This means that if the platform-specific bits fail, we still install Servo-specific dependencies.
* Remove duplicate pkg in APT_PKGS (#31280)atbrakhi2024-02-071-1/+0
| | | | We have `libgstreamer-plugins-base1.0-dev` twice in APT_PKGS, looks like a duplicate, this PR removes the duplicated pkg.
* Fix ./mach bootstrap failure in debian (#31276)atbrakhi2024-02-071-1/+7
| | | | Do not install `libgstreamer-plugins-good1.0-dev` on debian, install only on ubuntu.
* Update build script to support asahi linux (#31207)arrynfr2024-01-281-1/+2
|
* tests: Add GStreamer library directory to DYLD_LIBRARY_PATH (#31163)Martin Robinson2024-01-241-3/+0
| | | | | | | This fixes an issue where the dylib for harfbuzz cannot be found when running unit tests on some systems, because unit tests don't get their rpaths adjusted during build. This is quite likely an issue with dylib dependency management. We just need a bit more exploration of how this is traditionally handled.
* Fix the build on Ubuntu 20.04 (#31019)Martin Robinson2024-01-071-14/+1
| | | | | | | | 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.
* Upgrade media / GStreamer / GLib (#30750)Martin Robinson2024-01-051-19/+14
| | | | | | | | | | | | | | | | | | - 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
* Compile Servo with the latest version of rust stable (#30831)Martin Robinson2023-12-061-11/+0
| | | | | | | | | | | | | | | | 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.
* bootstrap: Alphabetize and add 'm4' Ubuntu dependency (#30727)Martin Robinson2023-11-131-9/+10
| | | It looks like `m4` is now required for builds on Debian-like systems.
* Add support for EndeavourOS (#30513)bc-universe2023-10-061-0/+1
|
* fix WebGPU runtime dependencies on linux (#30407)Delan Azabani2023-09-221-4/+24
|
* Add TUXEDO OS to mach bootstrap (#30363)Carlos Bentzen2023-09-151-1/+1
| | | Signed-off-by: Carlos Bentzen <cadubentzen@gmail.com>
* Use MozTools 4 and update mozjs (#30326)Samson2023-09-111-4/+4
| | | | | | | | | | | | | | | | | | | * Update mozjs * moztools4 in bootstrap * no autoconf * tidy * switch to servo-build-deps * update mozjs for real * glue mozjs * fmt * move to servo/mozjs
* Add Raspbian GNU/Linux distro for mach bootstrap (#30223)Manuel Rego Casasnovas2023-08-281-1/+2
|
* Use system lld on NixOS instead of rust-lld (#30123)Mukilan Thiyagarajan2023-08-181-0/+11
| | | | | | | | | | | | | | | | The -Zgcc-ld=lld flag makes rust use the rust-lld linker that is distributed as part of rust toolchain. However, this flag doesn't work on nixos correctly as 1) rust-lld needs to be patched to have the correct rpath to find libz.so 2) the bin/gcc-ld/ld.lld wrapper which calls rust-lld also needs to be patched to use the correct dynamic loader 3) rust-lld doesn't respect NIX_LDFLAGS which contains the additional search path derived from buildInputs. The system linkers on nixos are wrapped so that NIX_LDFLAGS is added as the rpath to the final binary. Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Switch to rustls and webpki-roots (#30025)Martin Robinson2023-08-081-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change replaces OpenSSL with rustls and also the manually curated CA certs file with webpki-roots (effectively the same thing, but as a crate). Generally speaking the design of the network stack is the same. Changes: - Code around certificate overrides needed to be refactored to work with rustls so the various thread-safe list of certificates is refactored into `CertificateErrorOverrideManager` - hyper-rustls takes care of setting ALPN protocols for HTTP requests, so for WebSockets this is moved to the WebSocket code. - The safe set of cypher suites is chosen, which seem to correspond to the "Modern" configuration from [1]. This can be adjusted later. - Instead of passing a string of PEM CA certificates around, an enum is used that includes parsed Certificates (or the default which reads them from webpki-roots). - Code for starting up an SSL server for testing is cleaned up a little, due to the fact that the certificates need to be overriden explicitly now. This is due to the fact that the `webpki` crate is more stringent with self-signed certificates than SSL (CA certificates cannot used as end-entity certificates). [2] 1. https://wiki.mozilla.org/Security/Server_Side_TLS 2. https://github.com/briansmith/webpki/issues/114 Fixes #7888. Fixes #13749. Fixes #26835. Fixes #29291.
* Windows bootstrap supportMartin Robinson2023-07-031-1/+1
|
* recognize artix as valid distribution65432023-06-011-0/+1
|
* Remove more Python 2 compatibility codeMartin Robinson2023-05-291-3/+2
| | | | | | - os.environ is always `str` in Python 3. - The only string type is `str` so we can stop using `six.str_types`. - `iteritems()` isn't necessary because dicts have the `items()` method.
* Implement `bootstrap-gstreamer` for all platformsMartin Robinson2023-05-251-12/+41
| | | | | | | | | | | | | | | | | | This change makes it so that the Platform classes can now handle installing GStreamer dependencies and properly setting up the environment including when cross-compiling. For Windows and Linux is now installed into `target/dependencies/gstreamer` when not installed system-wide. In addition: 1. Creating and moving existing environment path append helpers to `util.py`. 2. Combining the `set_run_env` and `build_dev` functions and moving some outside code into them so that it can be shared. Now code that used to call `set_run_env` calls `build_dev` and then `os.environ.update(...)`. 3. Adding Python typing information in many places. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
* Start organizing platform-specific Python codeMartin Robinson2023-05-191-0/+171
This starts to split platform-specific Python code into its own module, which should help to tidy up our mach commands and make things more reusable.