• Bug#1085254: mark hyprwayland-scanner Multi-Arch: foreign

    From Helmut Grohne@21:1/5 to Helmut Grohne on Wed Apr 23 07:40:01 2025
    On Wed, Oct 16, 2024 at 08:03:14PM +0200, Helmut Grohne wrote:
    hyprland fails to cross build from source with an "Exec format error"
    when running hyprwayland-scanner. The most common way to fix this is
    marking the originating package Multi-Arch: foreign. That is hyprwayland-scanner in this case, but before doing so it must be
    considered whether such a marking is actually correct. First and
    foremost, the question is whether the hyprwayland-scanner exhibits architecture-dependent behaviour. There are two strong clues against.
    One is that it deals with textual input and output formats. It
    effectively translates between different forms of source. The other clue
    is that it has a similar job to wayland-scanner and that is contained in
    a binary packaged marked Multi-Arch: foreign (and thus deemed to not
    have any architecture-dependent behaviour). To me this is sufficient
    ground to move forward. Do you agree? But then, hyprwayland-scanner also contains a .pc file and cmake support files. Those are installed into architecture-dependent paths and that clearly violates Multi-Arch:
    foreign. I looked into those files and they don't have architecture
    dependent content (beyond the cmake files where the filename is
    normalized for the /usr-merge). It should be feasible to install those
    files into /usr/share instead of /usr/lib. Both cmake and pkgconf search those corresponding locations and in doing so, the
    architecture-dependent path goes (and the violation of Multi-Arch:
    foreign) goes missing. Once moved, I think the Multi-Arch: foreign
    marking is technically correct. Building hyprland succeeded with a thus modified hyprwayland-scanner and a cross build of hyprland proceeded
    quite a bit further. Please consider applying the attached patch.

    The cmake files now gained bit-dependent content. We can tell cmake to
    stop doing that. I'm attaching an additional patch to truly make the
    cmake stuff architecture-independent.

    Helmut

    --- hyprwayland-scanner-0.4.2.orig/CMakeLists.txt
    +++ hyprwayland-scanner-0.4.2/CMakeLists.txt
    @@ -51,6 +51,7 @@
    write_basic_package_version_file(
    "hyprwayland-scanner-config-version.cmake"
    VERSION "${VERSION}"
    + ARCH_INDEPENDENT
    COMPATIBILITY AnyNewerVersion)

    # Installation

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)