mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-25 17:25:08 +02:00
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:
Notes:
github-actions[bot]
2026-04-20 22:43:22 +00:00
Author: https://github.com/cqundefine Commit: https://github.com/LadybirdBrowser/ladybird/commit/61c9e819bb7 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/8674 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/konradekk
@@ -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": [
|
||||
|
||||
@@ -55,6 +55,13 @@
|
||||
"unix_base",
|
||||
"All_Debug_base"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Host_Tools",
|
||||
"inherits": [
|
||||
"unix_base",
|
||||
"Host_Tools_base"
|
||||
]
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user