Bug#889925: valac is unusable for cross-compilation

Simon McVittie smcv at debian.org
Wed Jul 3 08:50:05 BST 2019


On Thu, 08 Feb 2018 at 21:26:14 +0100, Helmut Grohne wrote:
> So we'd also need a
> new binary package (probably called "valac-bin"), move /usr/bin/valac to
> that new package, add a dependency from valac to the new package and
> mark the new package Multi-Arch: foreign. That's not fully correct as
> valac is still architecture-dependent, but anyone wanting a particular
> architecture's behaviour can and should simply run
> ${DEB_HOST_GNU_TYPE}-valac. We do the same for pkg-config and that
> appears to work fairly well. Consumers need to add this prefix of course
> and I sent a patch for AM_PROG_VALAC (#889920) already.

Would it work to move /usr/bin/valac to /usr/libexec/valac in the new,
Multi-Arch: foreign valac-bin package, and have these scripts in valac?

    /usr/bin/valac:
    #!/bin/sh
    exec /usr/libexec/valac --cc="${CC:-cc}" --pkg-config="${PKG_CONFIG:-pkg-config}" "$@"

    /usr/bin/@DEB_HOST_GNU_TYPE at -valac:
    #!/bin/sh
    exec /usr/libexec/valac --cc="${CC:- at DEB_HOST_GNU_TYPE@-gcc}" --pkg-config="${PKG_CONFIG:- at DEB_HOST_GNU_TYPE@-pkg-config}" "$@"

And then #889920 would still be helpful, but not a blocker, because
in practice most packages that compile Vala code (and in particular
those that use Autotools) will already export an appropriate $CC and
$PKG_CONFIG?

(In fact valac is just a symlink to valac-0.42, so we'd probably want to
move this indirection down to valac-0.42, vapigen-0.42 etc., which would
help to make it clearer that valac-bin is an implementation detail,
because it wouldn't contain any command-line APIs that were stable
between versions at all.)

However, this is not the only Multi-Arch issue with valac:

vapigen would also need checking for Multi-Arch suitability. It is used
directly in many packages.

/usr/lib/*/vala-*/gen-introspect-* would also need checking for Multi-Arch
suitability, and /usr/bin/vala-gen-introspect is a shell script wrapper
around /usr/lib/*/vala-*/gen-introspect-* which hard-codes pkg-config. It
should at least use ${PKG_CONFIG}. This is used directly in the geary and
libdmapsharing packages.

    smcv



More information about the pkg-gnome-maintainers mailing list