Skip to content

Stop running vcpkg's app-local step on the tools a tests build makes - #590

Merged
RyeMutt merged 2 commits into
developfrom
rye/test-utils-no-applocal
Oct 27, 2026
Merged

RyeMutt merged 2 commits into
developfrom
rye/test-utils-no-applocal

Conversation

@RyeMutt

@RyeMutt RyeMutt commented Oct 27, 2026

Copy link
Copy Markdown
Member

Fixes the build (windows-11-vs2026-arm, release, arm64, Tests) link failure, "The process cannot access the file because it is being used by another process". It hit xui_translate_repair on #581 and #584 and llui_libtest on #578.

Cause

The step that fails is vcpkg's post-link vcpkg z-applocal. vcpkg's toolchain adds it to every executable declared while VCPKG_APPLOCAL_DEPS is on. The three llui utilities are ready at the same moment, so they link together.

Their shared directory, sharedlibs/<config>, is not the cause. On Windows the spell checker is the system's, so the utilities import no port's DLL and z-applocal copies nothing. Launching 80 copies of vcpkg.exe at once, 8 rounds:

Command Failures
z-applocal, each into its own directory 3 of 640
z-applocal, all into one directory 5 of 640
vcpkg version 6 of 640

Starting vcpkg.exe while another one starts sometimes fails. d5095f9 found the same thing for the test binaries.

Commits

  1. Format llui/utils and llcorehttp's CMake files with gersemi. Formatting only, so the fix diff stays small.

  2. Stop running vcpkg's app-local step on the tools a tests build makes. These now set VCPKG_APPLOCAL_DEPS OFF, as al_add_test_binary does for tests:

    • the three llui utilities;
    • http_texture_load, the other executable in sharedlibs/<config>;
    • llimage_libtest.

    Each exists only in a tests build and runs from the build tree. xui_overlay_check's ctest entry still runs with AL_TEST_ENVIRONMENT's PATH. Serializing the steps instead would leave them racing every other vcpkg.exe launch in the build, and a Ninja job pool does nothing under MSBuild.

Not covered

  • A tests-on configure still runs z-applocal on five projects: alchemy-bin, dullahan_host, media_plugin_cef, media_plugin_libvlc and template_verifier. They can still race each other.
  • With AL_USE_WINSPELLCHECK=OFF, llui links Hunspell's DLL. llui_libtest and xui_translate_repair no longer copy it into sharedlibs/<config>, so the llui tests would need vcpkg's bin directory on their PATH. No CI row builds that way.

Testing

On a fresh Windows vs2026-os configure with -DAL_BUILD_TESTS=ON:

  • none of the five changed targets' projects has the z-applocal step;
  • the three utilities build in Release, with no vcpkg.exe launch in the log;
  • ctest -R xui_overlay_check passes;
  • llui_libtest and xui_translate_repair start.

Not yet run on ARM64. This PR's CI run is the first check there.

🤖 Generated with Claude Code

RyeMutt and others added 2 commits October 27, 2026 03:49
Whitespace and one wrapped call only, so the change that follows reads
on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Windows ARM Tests build stopped at the link of xui_translate_repair
(#581, #584) and of llui_libtest (#578) with "The process cannot access
the file because it is being used by another process." The half of the
command that failed is the POST_BUILD "vcpkg z-applocal" that vcpkg's
toolchain hangs on every executable declared while VCPKG_APPLOCAL_DEPS
is on, and the three llui utilities, ready at the same moment, link
together.

The directory they share, sharedlibs/<config>, is not what fails. They
import no port's DLL on Windows, where the spell checker is the
system's, so z-applocal copies nothing. Eighty concurrent z-applocal
runs, each into a directory of its own, fail the same way 3 times in
640, and eighty concurrent "vcpkg version" runs 6 times in 640: a start
of vcpkg.exe beside another fails now and then, as d5095f9 found for
the test binaries.

So these are declared with the step off, as al_add_test_binary declares
a test: the three utilities, http_texture_load (the other executable in
sharedlibs/<config>) and llimage_libtest. Each exists only in a tests
build and runs from the build tree; xui_overlay_check's ctest entry
still runs with AL_TEST_ENVIRONMENT's PATH. Serializing them instead
would leave them racing every other launch of vcpkg.exe in the build,
and a Ninja job pool does nothing under MSBuild.

With AL_USE_WINSPELLCHECK turned off, llui links Hunspell's DLL, which
llui_libtest and xui_translate_repair no longer copy into
sharedlibs/<config>; the llui tests, whose PATH names that directory,
would then need vcpkg's bin directory on it. No CI row builds that way.

Proof: a tests-on vs2026-os configure leaves z-applocal on five
projects, alchemy-bin, dullahan_host, media_plugin_cef,
media_plugin_libvlc and template_verifier, and on none of these; the
three utilities build in Release and ctest -R xui_overlay_check passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 32 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4f8dbb0b-ce62-4f7b-b092-3bf316b7d887
Commits

Reviewing files that changed from the base of the PR and between c32de66 and acd9a2e.

Files selected for processing: 3
  • indra/integration_tests/llimage_libtest/CMakeLists.txt
  • indra/llcorehttp/CMakeLists.txt
  • indra/llui/utils/CMakeLists.txt
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@RyeMutt
RyeMutt merged commit da5a827 into develop Oct 27, 2026
7 checks passed
@RyeMutt
RyeMutt deleted the rye/test-utils-no-applocal branch October 27, 2026 11:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant