Hi,
this looks like a regression in the Mono-side runtime registration path
after the old mono-gac / cli-common integration was dropped.
I investigated this while reproducing #1133410 in a clean unstable
schroot with a freshly built repetier-host_0.85+dfsg-6.
The user-visible failure there is:
System.TypeLoadException: Could not load file or assembly 'OpenTK,
Version=1.1.0.0, ...'
The key point is that this does not appear to be just a repetier-host
dependency issue.
In the failing sid environment:
- libopentk1.1-cil is installed
- cli-common is installed
- the OpenTK assemblies are present on disk under /usr/lib/cli/OpenTK-*
- but "gacutil -l OpenTK" reports no installed items
So the assemblies are present, but the normal package installation path
does not make them usable through the expected GAC resolution path.
The strongest evidence is a direct A/B test in the sid chroot.
Without any /usr/share/cli-common/runtimes.d/mono hook:
- removing OpenTK from the GAC
- ensuring /usr/share/cli-common/runtimes.d/mono is absent
- rerunning the real libopentk1.1-cil.postinst unchanged
leaves the GAC empty, and repetier-host still fails immediately with the
same OpenTK TypeLoadException.
After adding a temporary compatibility hook at:
/usr/share/cli-common/runtimes.d/mono
and rerunning the same libopentk1.1-cil.postinst unchanged:
- cli-common installs OpenTK, OpenTK.GLControl, and
OpenTK.Compatibility into the GAC
- "gacutil -l" then shows those assemblies
- the original TypeLoadException disappears
- repetier-host gets further into WinForms / OpenTK startup and then
fails later for a different reason
That strongly suggests the original loader failure is caused by the
missing cli-common runtime backend, not by GTK and not by a mere missing
Depends line in repetier-host.
The likely regression boundary seems to be the packaging transition that
reached unstable in mono 6.14.1+ds-4:
- 6.14.1+ds-3 merged several packages into mono-runtime
- 6.14.1+ds-4 explicitly dropped integration with cli-common
In trixie, mono-gac shipped:
/usr/share/cli-common/runtimes.d/mono
In current sid:
- mono-runtime ships gacutil
- libopentk1.1-cil still invokes
/usr/share/cli-common/gac-package-install in postinst
- but /usr/share/cli-common/runtimes.d/ is empty
So cli-common is still being asked to perform GAC registration, but it no
longer has any Mono runtime backend to invoke.
At least one concrete reproducer is #1133410 (repetier-host), but this
may affect other CLI packages using the same registration path.
I have not tried to propose a patch yet because I first wanted to report
the regression with a clear reproducer and the A/B evidence above.
Relevant bug:
- #1133410: repetier-host: Could not load file or assembly
Possible fix directions seem to be either:
- restore /usr/share/cli-common/runtimes.d/mono, or
- provide an equivalent supported mechanism so cli-common-driven GAC
registration still works for packages such as libopentk1.1-cil
Regards,
James