From 51101a93e2a9197f6a5f787ef475a32cc6f914a2 Mon Sep 17 00:00:00 2001 From: pepaskopec-blip Date: Sun, 11 Oct 2026 11:24:17 +0200 Subject: [PATCH] Fix the Windows build by printing content logs as UTF-8. The content step crashed on cp1252 because the summary line contains Czech characters. Co-authored-by: Cursor --- android/app/build.gradle.kts | 2 ++ android/desktop/build.gradle.kts | 2 ++ scripts/build-content.py | 15 +++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index fcd2ef9..cc049fb 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -93,6 +93,8 @@ dependencies { val buildContent = tasks.register("buildContent") { workingDir = rootProject.projectDir.parentFile + environment("PYTHONUTF8", "1") + environment("PYTHONIOENCODING", "utf-8") commandLine("python3", "scripts/build-content.py") inputs.dir(rootProject.projectDir.parentFile.resolve("content")) inputs.file(rootProject.projectDir.parentFile.resolve("scripts/build-content.py")) diff --git a/android/desktop/build.gradle.kts b/android/desktop/build.gradle.kts index bbbbd11..7f36eac 100644 --- a/android/desktop/build.gradle.kts +++ b/android/desktop/build.gradle.kts @@ -41,6 +41,8 @@ val buildContent = tasks.register("buildContent") { workingDir = repoRoot val python = System.getenv("PYTHON")?.takeIf { it.isNotBlank() } ?: if (System.getProperty("os.name").startsWith("Windows")) "python" else "python3" + environment("PYTHONUTF8", "1") + environment("PYTHONIOENCODING", "utf-8") commandLine(python, "scripts/build-content.py", "--out", out.path) inputs.dir(repoRoot.resolve("content")) inputs.file(repoRoot.resolve("scripts/build-content.py")) diff --git a/scripts/build-content.py b/scripts/build-content.py index c8e8b0d..fe5fbcf 100644 --- a/scripts/build-content.py +++ b/scripts/build-content.py @@ -14,6 +14,21 @@ import unicodedata from dataclasses import dataclass, field from pathlib import Path + +def _force_utf8_stdio() -> None: + """Windows defaults stdout to cp1252, which cannot print Czech logs.""" + for stream in (sys.stdout, sys.stderr): + reconfigure = getattr(stream, "reconfigure", None) + if reconfigure is None: + continue + try: + reconfigure(encoding="utf-8", errors="replace") + except (OSError, ValueError): + pass + + +_force_utf8_stdio() + ROOT = Path(__file__).resolve().parents[1] CONTENT = ROOT / "content" OUTS = [ROOT / "android" / "app" / "src" / "main" / "assets" / "content.json"]