Skip to content

Migrated the container to a wine 11 base without .NET Framework - #35

Open
chambm wants to merge 1 commit into
masterfrom
Skyline/work/20260902_wine11_net10
Open

Migrated the container to a wine 11 base without .NET Framework#35
chambm wants to merge 1 commit into
masterfrom
Skyline/work/20260902_wine11_net10

Conversation

@chambm

@chambm chambm commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

Migrates the container to a plain wine 11 base, dropping the custom wine-dotnet
image and its .NET Framework / winetricks layers.

  • wine/Dockerfile (new base)ubuntu:24.04 + winehq-stable 11.0. The OS bump
    is forced, not cosmetic: WineHQ's focal builds stop at 10.6, which is why the old
    base was pinned there. Wine 11 is published for jammy and noble only.
  • No .NET Framework, no VC++ redistributables. The net10 payload carries its own
    runtime, and pwiz-sharp deploys the vendor SDKs' VC runtimes app-local. MFC140 was
    the one wine has no builtin for, and was the reason Shimadzu silently returned zero
    spectra without winetricks vcrun2019.
  • corefonts kept — that is Skyline font rendering, not a runtime dependency.
  • UTF-8 locale set in the base, which clears the CJK Shimadzu failure.
  • App image repointed at the new base and at the net10 SkylineTester.zip, which
    carries Skyline, msconvert and the runtime in one artifact; the C++ pwiz-bin tarball
    is dropped since msconvert is now the managed port.

Image is 4.52 GB vs 5.74 GB for wine-dotnet — 1.2 GB smaller.

Two traps worth knowing, both fixed here and both silent:

  • wineboot hangs forever on prefix creation because the Mono/Gecko offer is a GUI
    dialog with nobody to answer it. The old base never hit it because winetricks dotnet48 set mscoree to native first. The suppression is scoped to that one RUN
    on purpose: left as a persistent ENV it breaks the payload, which then dies with
    FileNotFoundException ... System.Runtime.dll ... Module not found on every input
    even though the runtime is present and complete.
  • wineserver -w after winetricks hangs the build (it waits for a process winetricks
    leaves behind); -k is deterministic.

Test plan

  • Base builds; wine-11.0, 31 corefonts incl. Arial, LANG/LC_ALL=C.UTF-8, no
    WINEDLLOVERRIDES persisted into the image env
  • App image builds on the new base
  • 43-pair vendor sweep inside the built image: 43/43 converted, 40/43 matching
    reference spectrum + chromatogram counts. Validated on counts, never exit codes —
    the failure mode is a structurally valid mzML with no spectrumList
  • Shimadzu 10nmol = 150 spectra (the case that returned 0 without the VC runtimes)
  • Shimadzu CJK-named fixture matches (UTF-8 locale)
  • The 3 count mismatches (2x Mobilion, 1x Waters) are the pre-existing
    reference-generation differences, not regressions

Notes for review

  • The payload was exercised with a stand-in SkylineTester.zip built from the current
    msconvert-sharp output plus a bundled .NET 10 runtime; it needs one build against a
    real net10 CI artifact to confirm DOTNET_ROOT=C:\pwiz\skyline\dotnet matches the
    layout the zip actually ships.
  • dotnet/Dockerfile is left in place rather than deleted so the old base stays
    buildable; it is unused by this Dockerfile and can be removed once the new base is
    published.
  • pwiz-sharp has no msdiff (only MsConvert and MsBenchmark), so any validation
    that shells out to msdiff needs either a port or the C++ tool kept alongside.

Co-Authored-By: Claude noreply@anthropic.com

* Added wine/Dockerfile on ubuntu 24.04: WineHQ's focal builds stop at 10.6, which is
  why the old base was pinned there, so wine 11 requires jammy or noble
* Dropped .NET Framework and the VC++ redistributables; the net10 payload carries its
  own runtime, and pwiz-sharp deploys the vendor SDKs' VC runtimes app-local
* Scoped the Mono/Gecko suppression to prefix creation; left set, it breaks the payload
  with a System.Runtime.dll "Module not found" on every input
* Repointed the app image at the new base and at the net10 SkylineTester.zip, which now
  carries Skyline, msconvert and the runtime in one artifact
* 43/43 vendor fixtures convert in the built image, 40/43 matching reference counts

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant