Commit graph

89 commits

Author SHA1 Message Date
Jelle Raaijmakers
fe33a2f66e CI: Update actions/cache to @v5 2026-06-19 10:40:43 +02:00
sideshowbarker
b6bd191531 CI: Use the image-provided wasm-tools on the Linux jobs
Bump the workflow image pin to the 2026.06.14 tag that bakes in
wasm-tools. And keep the wasm-tools download/caching steps for the macOS
and Windows jobs — but skip those steps on Linux. So, the Linux jobs use
the wasm-tools copy the image installs.

Follow-up to https://github.com/LadybirdBrowser/ladybird/pull/9972
2026-06-19 09:02:57 +02:00
sideshowbarker
1484686c70 CI: Add caching and retries to the wasm-tools download
Cache the wasm-tools binary rather than doing (trying) a re-fetch of it
on every build job. And when we ever do need to re-download it (after a
cache miss), then do it with some sensible retry-with-backoff-and-wait.

Otherwise, a single network hiccup when trying to download wasm-tools
was failing multiple CI jobs at once — before their builds even started.
2026-06-18 22:44:40 +02:00
Timothy Flynn
c5bb98bcf0 Meta: Revert to a stable rust compiler
Let's not depend on a nightly pre-release, especially not just for a
linting option. We can enable the linter option once it lands in the
stable release.
2026-06-02 20:12:41 +02:00
sideshowbarker
c440b8667b CI: Avoid in-place nightly toolchain update in lint setup
Problem: A new upstream nightly Rust release made all CI lint code
checks fail in the Set Up Environment step

Cause: CI runs “rustup toolchain install nightly --component rustfmt”.
The runner container ships nightly with rustfmt and clippy preinstalled.
But “rustup toolchain install” treats an existing channel as an upgrade
target, and tries to refresh it whenever a newer nightly is available.
The refresh removes the old clippy component first, renaming
/opt/rustup/toolchains/.../share/doc/clippy into /opt/rustup/tmp/, and
those two directories live on different overlayfs mounts in the
container — so the rename fails with EXDEV.

Fix: Replace “rustup toolchain install nightly --component rustfmt” with
“rustup component add rustfmt --toolchain nightly”. That adds the
component to the existing toolchain without checking for or applying a
channel update — so the cross-mount-rename path is never reached.
Because the container already provisions rustfmt + clippy at build time,
the new command is effectively a no-op on healthy containers, and fails
loudly only if a future container loses the nightly toolchain.
2026-05-29 07:39:30 -04:00
Vanand Gasparyan
f3a3488cda Rust: Set import granularity to Item
By default, `rustfmt` persists the import granularity. In practice, most
Rust code has import granularity "Module" due to LSP's actions.

"Item" gets rid of import groupings and achieves cleaner diffs and
better conflict resolution. Better greppability is a positive side
effect.

Note: it's an unstable rustfmt feature. `cargo +nightly fmt` must be
used instead of `cargo fmt`.
2026-05-28 06:52:18 +02:00
Zaggy1024
5aa0d13a99 Meta+CI: Add pyright type checking to lint_python.sh 2026-05-13 08:13:51 -05:00
Jelle Raaijmakers
2134ff7812 CI: Use CI build image for Linux jobs
This means running the build inside a Docker container based on a (more)
stable build image.

  * The setup action is now largely simplified for Linux.

  * We hardcode llvm@21 for macOS since it allows us to get rid of
    specifying llvm_version as an input variable. Since we no longer
    support switching the LLVM version on Linux via that variable, this
    seems like the best course of action.

We use a trick to optionally introduce a container image: `fromJSON()`
allows `null` as a return value, which causes the job to execute on the
runner directly. We need this for macOS and Windows jobs.
2026-05-04 14:16:41 +02:00
Andrew Kaster
a942da16ce CI+Devcontainer: Add Gtk UI dependencies to the CI and Devcontainer 2026-04-23 20:07:40 -06:00
Timothy Flynn
ce7b69ff31 Meta: Move utility scripts to a subfolder
The idea is that scripts directly under Meta are meant to be run by
people. Scripts that are only imported or run by other scripts are
moved to a subdirectory.
2026-04-23 12:36:08 -04:00
Timothy Flynn
b1d708dd16 Meta: Move BuildVcpkg script to the Meta directory
It was the only thing left in the Toolchain directory.
2026-04-20 13:17:06 -04:00
Timothy Flynn
5d461d3fb0 CI: Point lld at the explicitly installed version
It appears CI is currently not using lld as a linker.
2026-04-20 12:22:16 -04:00
Jelle Raaijmakers
aca463883f CI: Install libtool in setup action
This was missing in some build environments. Installation of libtool is
in our build instructions, so let's include it here as well.
2026-04-14 18:31:26 +02:00
Jelle Raaijmakers
908219afd4 CI: Use dearmored key for LLVM repo in setup action 2026-04-14 18:31:26 +02:00
Zaggy1024
5063507fbb CI: Start PulseAudio for Linux tests 2026-03-30 20:57:04 -05:00
InvalidUsernameException
8c57fa780f CI: Remove redundant set -e calls
Shell scripts running in GitHub Actions workflows have `set -e` enabled
by default:
https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsshell

To avoid confusion, remove the redundant calls present in some of the
workflow script steps.
2026-02-25 10:08:23 +01:00
Timothy Flynn
5224eb8db6 CI: Switch back to Linux for code linting
We switched to macOS since it was easier to install swift-format in CI.
With that removed, let's switch back to Linux, as macOS runners tend to
have higher contention.

To do so, this makes more use of the setup action. This way, the setup
action is the only place that needs to know how to install the apt repos
we need (LLVM in particular).
2026-02-24 14:33:22 -05:00
Andreas Kling
c736c4adb5 CI: Install Rust toolchain in setup action
The Rust-based LibJS codegen is now enabled by default on non-Windows
platforms, so CI runners need rustc and cargo available. Add the
dtolnay/rust-toolchain action to install a stable Rust toolchain.
2026-02-24 09:39:42 +01:00
Timothy Flynn
5a916940e2 Revert "CI: Ensure lsb-release is installed on Ubuntu"
This reverts commit c813505450.

This did not work on the dedicated test262 runner. And we are looking
into switching to blacksmith runners instead.
2026-02-18 12:22:04 -05:00
Timothy Flynn
81d5ad9777 CI: Use setup-python@v6 in the setup action 2026-02-18 10:10:07 -05:00
Timothy Flynn
a2515c0705 CI: Ensure pip itself is up to date
Our test262 runner already does this, and we do see out-of-date messages
in users of the setup action.
2026-02-18 10:10:07 -05:00
Timothy Flynn
c813505450 CI: Ensure lsb-release is installed on Ubuntu
Our test262 runner does not have it.
2026-02-18 10:10:07 -05:00
Timothy Flynn
372c7b9822 CI: Update the Clang pipeline to Clang 21 2026-02-18 08:02:45 -05:00
Timothy Flynn
f200920a6c CI: Simplify upgrading toolchain versions in CI
Set the gcc and llvm versions as variables, and use them anywhere we
install a specific version. We then export these as outputs so that any
interested caller can retrieve the installed versions.

Our check for llvm.list also will have prevented us from upgrading llvm
versions. We now check that it contains the exact version we expect.
2026-02-18 08:02:45 -05:00
Andreas Kling
e87f889e31 Everywhere: Abandon Swift adoption
After making no progress on this for a very long time, let's acknowledge
it's not going anywhere and remove it from the codebase.
2026-02-17 10:48:09 -05:00
Jelle Raaijmakers
2bd6bf69ac CI: Select Xcode version 26.2
This is the version we have installed on our macOS runners.
2025-12-22 20:19:25 -05:00
Jelle Raaijmakers
c8d797797d CI: Move Windows build to ci.yml using new Blacksmith runners 2025-12-18 12:19:36 +01:00
Jelle Raaijmakers
6c6fdad47a CI: Support wasm-tools download for Windows and arm64
We don't use wasm-tools there yet, but let's at least not do weird
things like download the aarch64 macOS version on Windows x86_64.
2025-12-16 15:18:21 +01:00
Ali Mohammad Pur
0d097e1d6a Meta: Pull wasm-tools in CI instead of wabt
We'll be using wasm-tools for Wasm testsuite generation in the next few
commits.
2025-12-12 19:12:53 +01:00
Timothy Flynn
b7ecdad685 CI: Use same versions of wabt on Linux and macOS 2025-10-31 18:10:45 -04:00
InvalidUsernameException
a975988f9c Meta: Update vcpkg baseline 2025-09-25 21:14:29 -04:00
ayeteadoe
4fa8238a46 Meta: Install qtbase and qtmultimedia vcpkg ports on Windows 2025-08-23 16:04:36 -06:00
ayeteadoe
ee3c033de2 LibWebView: Enable in Windows CI 2025-08-23 16:04:36 -06:00
Erik Kurzinger
dc3cb2122d CI: Add libdrm-dev dependency
We need the drm_fourcc.h header to use the dma-bufs in LibGfx
2025-08-19 00:30:22 +02:00
Jelle Raaijmakers
a64cee528c CI: Update to Xcode 16.4
Our current macOS runners have Xcode 16.4 installed.
2025-08-11 18:25:34 +02:00
Andrew Kaster
0b7a6ef4c9 Meta: Record desired swift toolchain version in .swift-version
This makes it easier to ensure everyone is using the same version of
Swift when building the project, especially for CI environments.

`swiftly install` will automatically read this file and install the
specified version if it is not already installed. It also tells swiftly
what version to use for the project, independent of the global default
version.
2025-06-11 11:54:52 -06:00
Andrew Kaster
a94605febe CI: Bump swift toolchain to main-snapshot-2025-05-26 2025-05-27 20:33:42 -06:00
Andrew Kaster
e90a0dc69c CI: Update alternatives for llvm-symbolizer on Ubuntu jobs
Swift jobs were failing a test due to the llvm-symbolizer not being
available in the default location next to the clang binary. swift.org
toolchains don't ship this tool, so LSAN suppressions were not being
applied, failing TestWOFF2.

This was hard to reproduce locally, because I have always had a set of
alternatives set up for the full suite of LLVM tools on my machine.
2025-05-27 20:33:42 -06:00
Jelle Raaijmakers
9f044cb547 CI: Only add LLVM repository if it is missing
For our js-benchmarks and libjs-test262 workflow runs, we already know
that they're provisioned with these repositories and can skip adding the
key and repo altogether.
2025-05-15 15:13:55 +02:00
Jelle Raaijmakers
44db17f273 CI: Switch from wget to curl
We were using both wget and curl arbitrarily; use curl exclusively since
that is installed by default on our machines and containers. Fixes the
js-benchmarks workflow.
2025-05-15 14:22:38 +02:00
Andrew Kaster
09ed4bd265 CI: Manually add apt repo for llvm 20 to all relevant jobs 2025-05-14 19:43:52 -04:00
Timothy Flynn
70d2b0b6f3 CI: Update the Clang pipeline to Clang 20 2025-05-14 02:01:59 -06:00
Timothy Flynn
a65bbae4c9 CI: Update the GCC pipeline to GCC 14
Although GCC 15 is released, it is not available on Ubuntu 22.04 LTS via
the ubuntu-toolchain-r/test PPA.
2025-05-14 02:01:59 -06:00
Andrew Kaster
fc6237325b CI: Install clang-tools-19 to ensure clang-scan-deps is available 2025-05-12 03:22:23 -06:00
Andrew Kaster
ac6b99800b CI: Bump swift snapshot to main-snapshot-2025-04-30 2025-05-09 23:14:27 -06:00
rmg-x
d64e6abe08 CI+Toolchain: Remove unnecessary BuildVcpkg.sh
This script was rewritten in Python in commit:
c92d9cce42

Since it just executes the Python anyway, remove it and do that in CI
ourselves.
2025-04-29 16:34:24 +01:00
Andrew Kaster
3c45d155a6 CI: Bump swiftly toolchain version to main-snapshot-2025-04-12
The latest snapshot includes some bug fixes that are required in order
to include LibWeb-Swift.h in our C++ files.
2025-04-16 09:02:27 -06:00
Jelle Raaijmakers
458c96727c CI: Install pkg-config in setup
We have this package listed in our build instructions but did not
install it for CI, causing some errors on new/clean runners.
2025-04-14 14:15:49 +02:00
Jelle Raaijmakers
4014930278 CI: Select XCode 16.3 for macOS builds
This is the version running on our self-hosted Mac runner.
2025-04-14 14:15:49 +02:00
Andrew Kaster
345cd6b9c9 CI: Add setup steps to install swift toolchain from swiftly
Now that swiftly 1.0.0 is available, we can use it to install main
snapshot toolchains on both Linux and macOS.
2025-04-03 16:47:48 -06:00