Daniel P. Berrangé berrange@redhat.com writes:
The traditional way is for developers to update the dependancies to have an explicit version against the library they require. eg if libvirt requires some symbol introduced in nettle x.y, the maintainer would add
Requires: nettle >= x.y
the problem is that humans are fallible and so these versioned dependancies frequently get missed, because package maintainers don't often have accurate info on which min version is needed by a build.
I agree it's going to be a bit brittle to do that manually. E.g., in the example at hand, the package source code only used the old nettle_hashes symbol, but the new version of nettle headers turned that into a macro calling a new function.
What I would suggest is filling out the >= x.y automatically based on the version of nettle header files actually used when compiling the package. As far as I see, that should be both reliable and fairly easy (get the version either from package metadata, or from nettle/version.h, whatever fits the package building tools best). It might sometimes produce an unnecessarily strict dependency (specifying a version higher than really necessary), but I think that's a lot better then erring in the other direction.
The only scope for errors here is when the nettle developers are creating the symbol version file,
That's me... And I imagine we'll get into the territory of subtle breakages the first time I mess up an update to that file.
and this is pretty minor IME maintaining such version files for libvirt.
How do you write testcases to verify that the version list is correct?
Regards, /Niels