Commit graph

112 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
Timothy Flynn
f79401bf9c CI: Change vcpkg cache key to depend on vcpkg.json
The vcpkg cache should rarely change - only when new dependencies are
added or a version changes. Both of these events involve modifying the
vcpkg.json file. So instead of uploading duplicated vcpkg caches in each
workflow, let's only upload changed caches.
2026-04-10 07:26:05 -04:00
Timothy Flynn
9524d92a9f CI: Remove quotes from cache keys
These get tricky with nested quotes when adding a hashFiles invocation.
Let's remove quotes from all keys to keep them consistent.
2026-04-10 07:26:05 -04:00
Timothy Flynn
a2fc4c1e10 CI: Remove always-true conditions from cache actions
After 80517124a4, we must always provide
these paths now.
2026-04-10 07:26:05 -04:00
Jelle Raaijmakers
80517124a4 CI: Make input variables to cache actions mandatory
Cache variables should always be explicit, and we already pass them in
everywhere. This makes it easier to spot errors in our cache setup.
2026-04-08 09:24:39 -04:00
Jelle Raaijmakers
3003930c8d CI: Remove runner_labels from custom cache actions
These were originally introduced to make it possible to discern between
GitHub's and Blacksmith's caches. This is no longer necessary since
Blacksmith resolved some issues _and_ switched to transparently
proxying GitHub cache actions to their own caches.
2026-04-08 09:24:39 -04:00
Jelle Raaijmakers
84a977d5f0 CI: Remove ccache_version input from cache-restore action
This went unused. Its intention is to bust our caches, but we can simply
restore this whenever we need that. No need to keep it around for now.
2026-04-08 09:24:39 -04: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
85c6264323 CI: Remove download_cache_path argument from cache restore action
It used to be for CLDR, UCD, etc. downloads. But it is now unused.
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
ayeteadoe
da2969008b CI: Enable compiler cache for Windows 2025-08-04 22:05:47 +02:00
Jelle Raaijmakers
86c8dbbf90 CI: Restore cache action checks on inputs.ccache_path
These got removed by accident.
2025-06-18 18:58:00 +02:00
Jelle Raaijmakers
573696b10f CI: Use GitHub's actions cache instead of Blacksmith's for now
We were seeing lower ccache hitrates using Blacksmith's cache, and after
some investigation it turned out that actions running on our `master`
branch were pulling the caches from PRs. Blacksmith is looking into
this - for now revert to GitHub's cache until the issue is resolved.
2025-06-18 12:39:45 -04: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
Jelle Raaijmakers
c5a08e946a CI: Standardize usage of runner_labels across workflows
This is now always a JSON array of runner labels, inside a string. We
need it to be a string because `workflow_call` works with inputs that
do not natively support an array type.

No functional changes.
2025-06-06 12:03:57 +02:00
Timothy Flynn
9d0c307341 CI: Add a quoteless cache restore key for GitHub runners
The way we echo the cache keys for output variables strips these quotes.
So when we save the caches at the end of CI, the keys are sans quotes.

This patch adds an extra cache restore key without quotes to allow jobs
to fetch their own caches again. This will become moot once all runners
are able to use the Blacksmith cache action.
2025-05-30 09:03:35 -04: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