From c32341c8889acbb33541b35ea14cfa2409a01c5b Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Sat, 22 Aug 2026 22:28:24 +0800 Subject: [PATCH] ci+fixtures: UCRT64 msys2 env; fix remaining fixture paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ci (Windows): the runner's msys2 shell starts as the base MSYS environment (MSYSTEM=MSYS), which install-deps.sh rejects. Set the job-level MSYSTEM=UCRT64 env and prepend /ucrt64/bin to PATH in every Windows step, so pacman installs and the toolchain resolve against the mingw-w64-ucrt-x86_64 packages. fixtures: the restructured workspace moved the media fixtures into crates/oak-app/tests; the remaining references pointed at the old repo-root tests/ — oak-codec realmedia_tests + hwdecode, oak-node serializer golden, oak-worker procpool integration. All point at ../oak-app/tests now (oak-app's own tests/demo.mp4 references were already correct after the move). --- .gitea/workflows/ci.yml | 9 +++++++++ crates/oak-codec/src/hwdecode.rs | 2 +- crates/oak-codec/src/realmedia_tests.rs | 2 +- crates/oak-node/tests/serializer_test.rs | 2 +- crates/oak-worker/tests/procpool_integration.rs | 2 +- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index bcd370a0a..77d116285 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -182,6 +182,10 @@ jobs: windows: name: Build & test (Windows) runs-on: oak-windows-2025 + env: + # The runner's msys2 shell starts as the base MSYS environment; the + # build needs the UCRT64 one (mingw-w64-ucrt-x86_64-* toolchain). + MSYSTEM: UCRT64 defaults: run: shell: msys2 {0} @@ -198,6 +202,7 @@ jobs: - name: Install system dependencies run: | cd "$GITHUB_WORKSPACE" + export PATH="/ucrt64/bin:$PATH" bash ./tooling/install-deps.sh pacman -S --needed --noconfirm \ mingw-w64-ucrt-x86_64-cmake \ @@ -212,6 +217,7 @@ jobs: - name: Configure build environment run: | cd "$GITHUB_WORKSPACE" + export PATH="/ucrt64/bin:$PATH" echo "OCIO_RS_ENABLE_REAL=1" >> "$GITHUB_ENV" echo "OCIO_INSTALL_DIR=/ucrt64" >> "$GITHUB_ENV" echo "OCIO_RS_LINK=dynamic" >> "$GITHUB_ENV" @@ -260,6 +266,7 @@ jobs: - name: Build project FFmpeg run: | cd "$GITHUB_WORKSPACE" + export PATH="/ucrt64/bin:$PATH" bash tooling/ffmpeg/build-ffmpeg.sh echo "FFMPEG_DIR=$(cygpath -m "$PWD/.cache/ffmpeg")" >> "$GITHUB_ENV" @@ -269,6 +276,7 @@ jobs: - name: Build run: | cd "$GITHUB_WORKSPACE" + export PATH="/ucrt64/bin:$PATH" # The runner's job hook injects the MSVC INCLUDE/LIB into every # step; clear them in-step (they poison the MinGW compiles with # MSVC SDK headers). @@ -284,6 +292,7 @@ jobs: - name: Test run: | cd "$GITHUB_WORKSPACE" + export PATH="/ucrt64/bin:$PATH" unset INCLUDE LIB # See Build (Windows): trailing -lmsvcrt for the mingw-w64 # _assert/__msvcrt_assert link-order breakage. diff --git a/crates/oak-codec/src/hwdecode.rs b/crates/oak-codec/src/hwdecode.rs index a0a542645..5603ca5cf 100644 --- a/crates/oak-codec/src/hwdecode.rs +++ b/crates/oak-codec/src/hwdecode.rs @@ -229,7 +229,7 @@ mod tests { #[cfg(target_os = "macos")] #[test] fn videotoolbox_device_opens_for_h264() { - let mut input = ffmpeg::format::input(&"../../tests/demo.mp4".to_string()) + let mut input = ffmpeg::format::input(&"../oak-app/tests/demo.mp4".to_string()) .expect("open demo.mp4"); let fstream = input.stream(0).expect("stream 0"); let params = fstream.parameters(); diff --git a/crates/oak-codec/src/realmedia_tests.rs b/crates/oak-codec/src/realmedia_tests.rs index a6927a4ea..1448f257b 100644 --- a/crates/oak-codec/src/realmedia_tests.rs +++ b/crates/oak-codec/src/realmedia_tests.rs @@ -40,7 +40,7 @@ use std::sync::Arc; /// `tests/demo.mp4` at the repository root. fn demo_path() -> std::path::PathBuf { - std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../../tests/demo.mp4") + std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../oak-app/tests/demo.mp4") } fn video_params(stream: CodecStream, time: Rational) -> RetrieveVideoParams { diff --git a/crates/oak-node/tests/serializer_test.rs b/crates/oak-node/tests/serializer_test.rs index cbd8d8d4b..b68e3ca38 100644 --- a/crates/oak-node/tests/serializer_test.rs +++ b/crates/oak-node/tests/serializer_test.rs @@ -155,7 +155,7 @@ fn golden_project_with_footage_loads() { let xml = std::fs::read_to_string(concat!( env!("CARGO_MANIFEST_DIR"), - "/../../tests/project_with_footage.ove" + "/../oak-app/tests/project_with_footage.ove" )) .unwrap(); let project = oak_node::serializer::load(&xml).unwrap(); diff --git a/crates/oak-worker/tests/procpool_integration.rs b/crates/oak-worker/tests/procpool_integration.rs index 605d8c595..250a65873 100644 --- a/crates/oak-worker/tests/procpool_integration.rs +++ b/crates/oak-worker/tests/procpool_integration.rs @@ -282,7 +282,7 @@ fn crash_isolation_restarts_worker_and_frame_still_renders() { #[test] fn worker_decodes_real_footage_into_slot() { let _guard = lock_test(); - let demo = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../../tests/demo.mp4"); + let demo = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../oak-app/tests/demo.mp4"); assert!(demo.exists(), "repo fixture tests/demo.mp4 missing"); let dispatcher = ProcessDispatcher::new(config(1, 4)).expect("dispatcher config");