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");