[Debian-med-packaging] Bug#703332: If they are API compatible you MUST generate and install a GAC policy file!

Mathieu Malaterre malat at debian.org
Mon Mar 18 15:28:15 UTC 2013


Package: libactiviz.net-cil


---------- Forwarded message ----------
From: Jo Shields <directhex at apebox.org>
Date: Mon, Mar 18, 2013 at 4:20 PM
Subject: Re: Invalid dependencies (Re: Unhandled Exception:
Mono.CSharp.InternalErrorException)
To: Mathieu Malaterre <malat at debian.org>
Cc: debian-cli at lists.debian.org


On Mon, 2013-03-18 at 16:08 +0100, Mathieu Malaterre wrote:
> On Mon, Mar 18, 2013 at 3:49 PM, Jo Shields <directhex at apebox.org> wrote:
> > On Mon, 2013-03-18 at 15:34 +0100, Mathieu Malaterre wrote:
> >> Using monodis, I finally found out the issue. libactiviz.net-cil
> >> 1:1.0~git20111214-1 on amd64 is build against an older mummy release.
> >> Therefore we have:
> >>
> >> $ monodis --assemblyref /usr/lib/cli/ActiViz.NET/Kitware.VTK.dll
> >> [...]
> >> 2: Version=1.0.2.599
> >>       Name=Kitware.mummy.Runtime
> >>       Flags=0x00000000
> >>       Public Key:
> >>
> >>
> >> While, if one recompiles+install, we get:
> >>
> >> $ monodis --assemblyref /usr/lib/cli/ActiViz.NET/Kitware.VTK.dll
> >> [...]
> >> 2: Version=1.0.3.599
> >>       Name=Kitware.mummy.Runtime
> >>       Flags=0x00000000
> >>       Public Key:
> >>
> >>
> >> So the short solution is to request a binNMU of libactiviz.net-cil.
> >> But the long solution would be to have proper dependencies checking.
> >>
> >> Could some C# gurus let me know if there is anything missing in my
> >> activiz.net and/or mummy package to generate proper dependencies (and
> >> therefore have a btter long term solution) ?
> >>
> >> Thanks *very* much !
> >
> > The first question is "are the two versions ABI-compatible?" - if the
> > ABI hasn't actually been broken (i.e. there are no removed methods or
> > properties) then you can include a GAC policy file which maps all
> > applications looking for the old ABI to the new ABI. For example, apps
> > with a moduleref for Mono.Addins 0.2.0.0, 0.3.0.0, 0.4.0.0, or 0.5.0.0
> > will still work with our 0.6.0.0 packages, thanks to policy files. The
> > command "mono-api-check" can be used to compare two assemblies to see if
> > their ABIs are compatible or not; the man page for dh_cligacpolicy shows
> > how to write a cligacpolicy file to do policy mapping, if appropriate.
> >
>
> $ mono-api-check ./sid/usr/lib/cli/ActiViz.NET/Kitware.VTK.dll
> ./loc/usr/lib/cli/ActiViz.NET/Kitware.VTK.dll
> Error: mono-api-info on ./sid/usr/lib/cli/ActiViz.NET/Kitware.VTK.dll failed!
> $ man mono-api-check
> No manual entry for mono-api-check
> See 'man 7 undocumented' for help when manual pages are not available.
>
> Same goes with .deb package:
>
>
> $ mono-api-check ./sid/libactiviz.net-cil_1.0~git20111214-1_amd64.deb
> ./libactiviz.net-cil_1.0~git20111214-1_amd64.deb
> Library:              /usr/lib/cli/ActiViz.NET/Kitware.VTK.dll
> Error: mono-api-info on
> /tmp/mono-api-check-1192-7700/usr/lib/cli/ActiViz.NET/Kitware.VTK.dll
> failed!
>
> Any extra information on how to use this tool also very appreciated !

$ mono-api-check
a/usr/lib/cli/Kitware.mummy.Runtime-1.0/Kitware.mummy.Runtime.dll
b/usr/lib/cli/Kitware.mummy.Runtime-1.0/Kitware.mummy.Runtime.dll

CLI API Check
Assembly Name:          Kitware.mummy.Runtime
Missing Interfaces:     0
Additional Interfaces:  0

The assembly versions do NOT MATCH!
If they are API compatible you MUST generate and install a GAC policy
file!




Seems compatible to me!

This is a pretty basic upstream error - the assembly version should be
treated as an ABI version declaration, not something to bump ad hoc, for
precisely the reasons you've run into. There is no difference between
the version 1.0.2 build revision 599 ABI, and version 1.0.3 build
revision 599 ABI which would require bumping this ABI version. Using GAC
policy is a simple way to work around this kind of stupidity (MySQL's
bindings do the same)



More information about the Debian-med-packaging mailing list