Meta: Replace the Android BuildLagomTools.sh script with Python code

There weren't many changes required to integrate it with ladybird.py
and that seems much cleaner.
This commit is contained in:
Undefine
2026-03-29 16:03:46 +02:00
committed by Andrew Kaster
parent 1ea9c00f7c
commit 61c9e819bb
Notes: github-actions[bot] 2026-04-20 22:43:22 +00:00
5 changed files with 34 additions and 53 deletions

View File

@@ -95,6 +95,22 @@
"ENABLE_FUZZERS_LIBFUZZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON"
}
},
{
"hidden": true,
"name": "Host_Tools_base",
"displayName": "Host Tools Config",
"description": "Host tools build",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/host-tools-build",
"cacheVariables": {
"package": "LagomTools",
"BUILD_SHARED_LIBS": "OFF",
"CMAKE_BUILD_TYPE": "Release",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/distribution-triplets",
"LAGOM_TOOLS_ONLY": "ON",
"INSTALL_LAGOM_TOOLS": "ON",
"CMAKE_INSTALL_PREFIX": "$env{LADYBIRD_SOURCE_DIR}/Build/host-tools"
}
}
],
"buildPresets": [

View File

@@ -55,6 +55,13 @@
"unix_base",
"All_Debug_base"
]
},
{
"name": "Host_Tools",
"inherits": [
"unix_base",
"Host_Tools_base"
]
}
],
"buildPresets": [

View File

@@ -264,6 +264,7 @@ def configure_build_env(platform: Platform, preset: str) -> tuple[Path, Path]:
"Distribution": build_root_dir / "distribution",
"Release": build_root_dir / "release",
"Sanitizer": build_root_dir / "sanitizers",
"Host_Tools": build_root_dir / "host-tools-build",
}
build_preset_dir = known_presets.get(preset, None)
@@ -281,6 +282,11 @@ def configure_build_env(platform: Platform, preset: str) -> tuple[Path, Path]:
# build and use its own pinned versions of gn, meson and pkg-config.
os.environ["VCPKG_FORCE_SYSTEM_BINARIES"] = "1"
if "XDG_CACHE_HOME" not in os.environ:
# vcpkg requires this variable to set and in some cases like the Android build environment it might
# not be present, so we need to ensure that it is set
os.environ["XDG_CACHE_HOME"] = str(ladybird_source_dir / "Build" / "caches")
return ladybird_source_dir, build_preset_dir

View File

@@ -1,46 +0,0 @@
#!/usr/bin/env bash
set -eo pipefail
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LADYBIRD_SOURCE_DIR="$(realpath "${DIR}"/../..)"
# shellcheck source=/dev/null
. "${LADYBIRD_SOURCE_DIR}/Meta/shell_include.sh"
# shellcheck source=/dev/null
. "${LADYBIRD_SOURCE_DIR}/Meta/find_compiler.sh"
pick_host_compiler
BUILD_DIR=${BUILD_DIR:-"${LADYBIRD_SOURCE_DIR}/Build"}
CACHE_DIR=${CACHE_DIR:-"${BUILD_DIR}/caches"}
# HACK: This export of XDG_CACHE_HOME is required to make vcpkg happy.
# This is because vcpkg tries to find a cache directory by:
# 1) checking $XDG_CACHE_HOME
# 2) appending "/.cache" to $HOME
# The problem is, in the Android build environment, neither of those environment variables are set.
# This causes vcpkg to fail; so, we set a dummy $XDG_CACHE_HOME, ensuring that vcpkg is happy.
# (Note that vcpkg appends "/vcpkg" to the cache directory we give it.)
# (And this also works on macOS, despite the fact that $XDG_CACHE_HOME is a Linux-ism.)
export XDG_CACHE_HOME="$CACHE_DIR"
"$LADYBIRD_SOURCE_DIR"/Meta/ladybird.py vcpkg
cmake -S "${LADYBIRD_SOURCE_DIR}" -B "$BUILD_DIR/lagom-tools" \
-GNinja -Dpackage=LagomTools \
-DCMAKE_INSTALL_PREFIX="$BUILD_DIR/lagom-tools-install" \
-DCMAKE_C_COMPILER="$CC" \
-DCMAKE_CXX_COMPILER="$CXX" \
-DLADYBIRD_CACHE_DIR="$CACHE_DIR" \
-DBUILD_SHARED_LIBS=OFF \
-DLAGOM_TOOLS_ONLY=ON \
-DINSTALL_LAGOM_TOOLS=ON \
-DCMAKE_TOOLCHAIN_FILE="$LADYBIRD_SOURCE_DIR/Build/vcpkg/scripts/buildsystems/vcpkg.cmake" \
-DVCPKG_INSTALL_OPTIONS="--no-print-usage" \
-DVCPKG_OVERLAY_TRIPLETS="$LADYBIRD_SOURCE_DIR/Meta/CMake/vcpkg/release-triplets" \
-DVCPKG_ROOT="$LADYBIRD_SOURCE_DIR/Build/vcpkg" \
-DVCPKG_MANIFEST_DIR="$LADYBIRD_SOURCE_DIR"
ninja -C "$BUILD_DIR/lagom-tools" install

View File

@@ -9,16 +9,14 @@ var buildDir = layout.buildDirectory.get()
var cacheDir = System.getenv("LADYBIRD_CACHE_DIR") ?: "$buildDir/caches"
var sourceDir = layout.projectDirectory.dir("../../").toString()
task<Exec>("buildLagomTools") {
commandLine = listOf("./BuildLagomTools.sh")
task<Exec>("buildHostTools") {
commandLine = listOf("$sourceDir/Meta/ladybird.py", "install", "--preset", "Host_Tools")
environment = mapOf(
"BUILD_DIR" to buildDir,
"CACHE_DIR" to cacheDir,
"PATH" to System.getenv("PATH")!!
)
}
tasks.named("preBuild").dependsOn("buildLagomTools")
tasks.named("prepareKotlinBuildScriptModel").dependsOn("buildLagomTools")
tasks.named("preBuild").dependsOn("buildHostTools")
tasks.named("prepareKotlinBuildScriptModel").dependsOn("buildHostTools")
android {
namespace = "org.serenityos.ladybird"
@@ -38,7 +36,7 @@ android {
cmake {
cppFlags += "-std=c++23"
arguments += listOf(
"-DLagomTools_DIR=$buildDir/lagom-tools-install/share/LagomTools",
"-DLagomTools_DIR=$buildDir/host-tools/share/LagomTools",
"-DANDROID_STL=c++_shared",
"-DLADYBIRD_CACHE_DIR=$cacheDir",
"-DVCPKG_ROOT=$sourceDir/Build/vcpkg",