Bug#885019: reconsider placement of glib-compile-resources

Helmut Grohne helmut at subdivi.de
Sat Dec 23 13:11:38 UTC 2017


Hi Simon,

thank you for taking the time.

On Fri, Dec 22, 2017 at 11:08:58PM +0000, Simon McVittie wrote:
> As far as I can tell from skim-reading its source code, this tool has
> non-architecture-dependent output, so it should live in libglib2.0-bin or
> libglib2.0-dev-bin (optionally with symlinks in all the arch-dependent
> places shipped in for libglib2.0-{0,dev} for backwards compat, if there
> might be packages that hard-code this Debianism rather than using either
> PATH or pkg-config). I suspect the arch-dependent symlinks wouldn't be
> needed, assuming we stop patching the .pc file to refer to them.

Matches my evaluation. Let me try to turn that into actions:
 * move glib-compile-resources to libglib2.0-dev-bin (in /usr/bin)
 * Turn the triplet-location into a symlink.
 * Update the .pc files to refer to the /usr/bin instance.
 * Ensure tight enough dependencies and work out breaks/replaces.

Do you agree with this plan? I'd try to come up with a patch for that.

> I can't explain that. It seems to be in the same category as
> gdbus-codegen: a tool to be run by other packages at build-time.
> Some of those packages are architecture-independent and might not
> "naturally" pull in GLib development headers (gnome-sound-recorder is
> a good example), but making those build-depend on libglib2.0-dev-bin
> wouldn't be disastrous IMO.

I think breaking rdeps now (from a release cycle pov) is fairly
reasonable. Also shrinking libglib2.0-0 should be welcome as it has
relatively high popcon.

> The maintainer who packaged it that way might have mixed it up with
> the older glib-compile-schemas, which genuinely does need to be run on
> non-developer systems (it's used in maintainer scripts).

I admit that I am bewildered by the frequent "Exec format error" from
glib-compile-schemas that I see when configuring glib-ish packages for
foreign architectures. I am yet unsure whether I should be more
concerned about the "Exec format error" or the fact the postinst
succeeds anyway. Something is very wrong here as well, but thus far I
couldn't connect it to any cross build failures so maybe it really is
harmless.

> glib-compile-schemas and gio-querymodules have the same theoretical policy
> violation, but they have to be included in libglib2.0-0 because if they
> weren't, there would be a circular dependency between libglib2.0-0 and
> whatever package they were shipped in. (Those tools need GLib libraries,
> and the GLib libraries maintain registries of schemas and modules that
> need to run those tools in their triggers.)

Well, I suggested relaxing the policy wording to a "should", but a
non-representative survey on #debian-devel seemed in favour of keeping
it a "must". I'm unsure where to draw the line. Soname bumps of things
like glib or glibc are extremely unlikely, yet the policy wording
requires taking care of this possibility with a "must" language. From my
pov, it seems that policy is out of touch with reality. At the same
time, we know that packages do violate this and with every other
transition we see how painful it is to have shared libraries with
different sonames conflict. So general relaxing likely is not the best
answer.

I also contend that while circular dependencies are discouraged
multiarch occasionally makes them unavoidable. Sometimes a library
depends on a tool and the tool depends on the library. While the library
should be in a M-A:same package, the tool usually should be in a
M-A:foreign package. The only way to achieve this is a circular
dependency. Essentially, the design of multiarch incurs such 1-cycles.

Helmut



More information about the pkg-gnome-maintainers mailing list