• Daniel Vetter's avatar
    gitlab-ci: arm64 cross compiling · f882a542
    Daniel Vetter authored
    First I tried to build in a full sysroot, but I didn't figure out why
    ld never found the libraries (this was on fedora, which might have
    been part of the problem - if you just need a toolchain for kernel
    corss-building fedora is perfectly fine).
    
    Then I tried using debian's multiarch stuff, which worked a lot
    better, except there's some minor gotchas:
    - some libraries conflict and can't be multi-arch installed
    - some libraries are buggy and cause conflicts when installing
    - pkgconfig and ld get confused with some other libraries and pick the
      first one they find (i.e. the x86_64 one, not the arm64 one).
    That means we need a new docker image with just the cross libaries
    installed as -dev packages, and none of the native ones.
    
    Next up I tried to run the tests. Meson has really nice support for an
    exe wrapper, and qemu happily runs arm64 on x86_64. With that I
    managed to run some tests successfully (it's not even that slow!). But
    most are run through a script, and the script doesn't know about the
    exe wrapper and hence fails miserably. I discussed this a bit with
    Dylan and he filed an upstream meson issue:
    
    https://github.com/mesonbuild/meson/issues/4427#issuecomment-433553689
    
    Another option would be to use binfmt-misc handling (which works
    neatly locally), but on the runners we have I can't control that.
    Maybe I can beg Daniel Stone ...
    
    For not let's just mark this stage as optional and that failures are
    allowed.
    
    v2: Use the new gitlab 1.4 feature to rebuild docker images when
    necessary.
    
    Cc: Sean Paul <sean@poorly.run>
    Cc: Eric Anholt <eric@anholt.net>
    Cc: Dylan Baker <dylan@pnwbakers.com>
    Cc: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Eric Anholt <eric@anholt.net> (v1)
    Reviewed-by: Petri Latvala <petri.latvala@intel.com> (v1)
    Signed-off-by: 's avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    f882a542