You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As part of #84356 the Emscripten cache was frozen, and a subset of the ports was included in the NuGet (limited because of NuGet package size limits?). This subset doesn't include SDL/SDL2, both of which are essential for graphical applications.
Additionally, because FROZEN_CACHE is forced on as part of the build task, there is no easy way for a project to allow local development machines to download the extra ports.
Project fails to build with the Python error (from emcc):
Exception: Attempt to lock the cache but FROZEN_CACHE is set
Regression?
No response
Known Workarounds
Projects can build SDL2 via Emscripten, or get the binary from the Emscripten Ports/elsewhere, and include it as a <NativeFileReference> in the csproj. This allows projects to build successfully and is simple to revert once the ports are provided via NuGet.
Projects can override the cache path and/or force FROZEN_CACHE to be cleared, or attempt to point at a different EMSDK install with a populated cache. This all requires an overriding target which is likely to break during workload upgrades. Example:
Developers can populate the cache locally, but this will break when workload repair is run, or if the workload upgrades.
Configuration
.NET 8
All WebAssembly builds
Build issue so all browsers
Other information
I understood that the cache was frozen due to lack of guarantee of being able to write to the cache folder, and SDL ports were removed from the frozen cache because of NuGet size limits. If the size limit isn't a major concern, then re-adding SDL2 would be the simplest option. Offering MSBuild options to allow unfreezing/moving the cache is another option.
The text was updated successfully, but these errors were encountered:
ghost
added
the
untriaged
New issue has not been triaged by the area owner
label
Mar 1, 2024
Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.
Issue Details
Description
As part of #84356 the Emscripten cache was frozen, and a subset of the ports was included in the NuGet (limited because of NuGet package size limits?). This subset doesn't include SDL/SDL2, both of which are essential for graphical applications.
Additionally, because FROZEN_CACHE is forced on as part of the build task, there is no easy way for a project to allow local development machines to download the extra ports.
Project fails to build with the Python error (from emcc):
Exception: Attempt to lock the cache but FROZEN_CACHE is set
Regression?
No response
Known Workarounds
Projects can build SDL2 via Emscripten, or get the binary from the Emscripten Ports/elsewhere, and include it as a <NativeFileReference> in the csproj. This allows projects to build successfully and is simple to revert once the ports are provided via NuGet.
Projects can override the cache path and/or force FROZEN_CACHE to be cleared, or attempt to point at a different EMSDK install with a populated cache. This all requires an overriding target which is likely to break during workload upgrades. Example:
Developers can populate the cache locally, but this will break when workload repair is run, or if the workload upgrades.
Configuration
.NET 8
All WebAssembly builds
Build issue so all browsers
Other information
I understood that the cache was frozen due to lack of guarantee of being able to write to the cache folder, and SDL ports were removed from the frozen cache because of NuGet size limits. If the size limit isn't a major concern, then re-adding SDL2 would be the simplest option. Offering MSBuild options to allow unfreezing/moving the cache is another option.
Description
As part of #84356 the Emscripten cache was frozen, and a subset of the ports was included in the NuGet (limited because of NuGet package size limits?). This subset doesn't include SDL/SDL2, both of which are essential for graphical applications.
Additionally, because
FROZEN_CACHE
is forced on as part of the build task, there is no easy way for a project to allow local development machines to download the extra ports.Reproduction Steps
wasmbrowser
template<PropertyGroup>
:Expected behavior
Project builds without errors.
Actual behavior
Project fails to build with the Python error (from
emcc
):Exception: Attempt to lock the cache but FROZEN_CACHE is set
Regression?
No response
Known Workarounds
<NativeFileReference>
in the csproj. This allows projects to build successfully and is simple to revert once the ports are provided via NuGet.FROZEN_CACHE
to be cleared, or attempt to point at a different EMSDK install with a populated cache. This all requires an overriding target which is likely to break during workload upgrades. Example:workload repair
is run, or if the workload upgrades.Configuration
Other information
I understood that the cache was frozen due to lack of guarantee of being able to write to the cache folder, and SDL ports were removed from the frozen cache because of NuGet size limits. If the size limit isn't a major concern, then re-adding SDL2 would be the simplest option. Offering MSBuild options to allow unfreezing/moving the cache is another option.
The text was updated successfully, but these errors were encountered: