Expand Android platform build coverage

This commit is contained in:
2026-06-05 00:14:04 +02:00
parent 841fbac8eb
commit 2feeffd6c8
8 changed files with 88 additions and 29 deletions

View File

@@ -1,6 +1,6 @@
[CmdletBinding()]
param(
[string[]]$Presets = @("android-arm64"),
[string[]]$Presets = @("android-arm64", "android-x64", "android-quest-arm64", "android-focus-arm64"),
[string[]]$Targets = @(
"pp_foundation",
"pp_assets",

View File

@@ -1,29 +1,44 @@
#!/usr/bin/env sh
set -u
preset="${1:-android-arm64}"
presets="${1:-android-arm64 android-x64 android-quest-arm64 android-focus-arm64}"
shift || true
targets="${*:-pp_foundation pp_assets pp_paint pp_document pp_renderer_api pp_renderer_gl pp_paint_renderer pp_ui_core pp_platform_api pp_app_core pano_cli pp_foundation_binary_stream_tests pp_foundation_event_tests pp_foundation_log_tests pp_foundation_parse_tests pp_foundation_task_queue_tests pp_foundation_trace_tests pp_assets_brush_package_tests pp_assets_image_format_tests pp_assets_image_metadata_tests pp_assets_image_pixels_tests pp_assets_ppi_header_tests pp_assets_settings_document_tests pp_paint_brush_tests pp_paint_blend_tests pp_paint_stroke_tests pp_paint_stroke_script_tests pp_document_tests pp_document_ppi_import_tests pp_document_ppi_export_tests pp_renderer_api_tests pp_renderer_gl_capabilities_tests pp_renderer_gl_command_plan_tests pp_paint_renderer_compositor_tests pp_platform_api_tests pp_ui_core_color_tests pp_ui_core_layout_value_tests pp_ui_core_layout_xml_tests pp_app_core_about_menu_tests pp_app_core_app_preferences_tests pp_app_core_app_startup_tests pp_app_core_app_status_tests pp_app_core_brush_package_export_tests pp_app_core_brush_package_import_tests pp_app_core_brush_ui_tests pp_app_core_canvas_hotkey_tests pp_app_core_canvas_tool_ui_tests pp_app_core_document_animation_tests pp_app_core_document_canvas_tests pp_app_core_document_cloud_tests pp_app_core_document_export_tests pp_app_core_document_import_tests pp_app_core_document_layer_tests pp_app_core_document_platform_io_tests pp_app_core_document_recording_tests pp_app_core_document_resize_tests pp_app_core_document_route_tests pp_app_core_document_sharing_tests pp_app_core_document_session_tests pp_app_core_file_menu_tests pp_app_core_grid_ui_tests pp_app_core_history_ui_tests pp_app_core_main_toolbar_tests pp_app_core_quick_ui_tests pp_app_core_tools_menu_tests}"
start="$(date +%s)"
cmake --preset "$preset"
configure_exit="$?"
if [ "$configure_exit" -ne 0 ]; then
end="$(date +%s)"
elapsed_ms="$(( (end - start) * 1000 ))"
printf '{"command":"platform-build","preset":"%s","stage":"configure","exitCode":%s,"elapsedMs":%s}\n' "$preset" "$configure_exit" "$elapsed_ms"
exit "$configure_exit"
fi
overall_exit=0
results=""
first_result=1
build_args=""
for target in $targets; do
build_args="$build_args --target $target"
done
# shellcheck disable=SC2086
cmake --build --preset "$preset" $build_args
build_exit="$?"
normalized_presets="$(printf '%s' "$presets" | tr ',' ' ')"
for preset in $normalized_presets; do
cmake --preset "$preset"
configure_exit="$?"
if [ "$configure_exit" -ne 0 ]; then
[ "$overall_exit" -eq 0 ] && overall_exit="$configure_exit"
result="$(printf '{"preset":"%s","stage":"configure","exitCode":%s}' "$preset" "$configure_exit")"
else
# shellcheck disable=SC2086
cmake --build --preset "$preset" $build_args
build_exit="$?"
[ "$build_exit" -ne 0 ] && [ "$overall_exit" -eq 0 ] && overall_exit="$build_exit"
result="$(printf '{"preset":"%s","stage":"build","targets":"%s","exitCode":%s}' "$preset" "$targets" "$build_exit")"
fi
if [ "$first_result" -eq 1 ]; then
results="$result"
first_result=0
else
results="$results,$result"
fi
done
end="$(date +%s)"
elapsed_ms="$(( (end - start) * 1000 ))"
printf '{"command":"platform-build","preset":"%s","targets":"%s","exitCode":%s,"elapsedMs":%s}\n' "$preset" "$targets" "$build_exit" "$elapsed_ms"
exit "$build_exit"
printf '{"command":"platform-build","exitCode":%s,"elapsedMs":%s,"results":[%s]}\n' "$overall_exit" "$elapsed_ms" "$results"
exit "$overall_exit"

View File

@@ -23,6 +23,13 @@ REQUIRED_COMPONENT_TARGETS = [
"pano_cli",
]
REQUIRED_ANDROID_PRESETS = [
"android-arm64",
"android-x64",
"android-quest-arm64",
"android-focus-arm64",
]
def repo_root() -> Path:
return Path(__file__).resolve().parents[2]
@@ -52,6 +59,14 @@ def powershell_default_targets(root: Path) -> list[str]:
return sorted(set(targets))
def powershell_default_presets(root: Path) -> list[str]:
script = (root / "scripts" / "automation" / "platform-build.ps1").read_text(encoding="utf-8")
match = re.search(r"\[string\[\]\]\$Presets\s*=\s*@\((.*?)\)", script, re.S)
if not match:
raise RuntimeError("Could not find default presets in platform-build.ps1")
return sorted(set(re.findall(r'"([^"]+)"', match.group(1))))
def shell_default_targets(root: Path) -> list[str]:
script = root / "scripts" / "automation" / "platform-build.sh"
text = script.read_text(encoding="utf-8")
@@ -61,6 +76,14 @@ def shell_default_targets(root: Path) -> list[str]:
return sorted(set(match.group(1).split()))
def shell_default_presets(root: Path) -> list[str]:
script = (root / "scripts" / "automation" / "platform-build.sh").read_text(encoding="utf-8")
match = re.search(r'presets="\$\{[^:]+:-(.*)\}"', script)
if not match:
raise RuntimeError("Could not find default presets in platform-build.sh")
return sorted(set(match.group(1).split()))
def missing(expected: list[str], actual: list[str]) -> list[str]:
actual_set = set(actual)
return [target for target in expected if target not in actual_set]
@@ -71,15 +94,24 @@ def main() -> int:
expected = sorted(set(REQUIRED_COMPONENT_TARGETS + cmake_test_targets(root)))
ps_targets = powershell_default_targets(root)
sh_targets = shell_default_targets(root)
ps_presets = powershell_default_presets(root)
sh_presets = shell_default_presets(root)
result = {
"ok": True,
"expectedTargetCount": len(expected),
"powershellTargetCount": len(ps_targets),
"shellTargetCount": len(sh_targets),
"expectedAndroidPresets": REQUIRED_ANDROID_PRESETS,
"defaultPresets": {
"platform-build.ps1": ps_presets,
"platform-build.sh": sh_presets,
},
"missing": {
"platform-build.ps1": missing(expected, ps_targets),
"platform-build.sh": missing(expected, sh_targets),
"platform-build.ps1.targets": missing(expected, ps_targets),
"platform-build.sh.targets": missing(expected, sh_targets),
"platform-build.ps1.presets": missing(REQUIRED_ANDROID_PRESETS, ps_presets),
"platform-build.sh.presets": missing(REQUIRED_ANDROID_PRESETS, sh_presets),
},
}
result["ok"] = all(not values for values in result["missing"].values())