summaryrefslogtreecommitdiff
path: root/Dockerfile.debian-arm64
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2018-10-30 13:22:15 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2018-10-31 10:58:15 +0100
commitf882a542a3eb24e78e51aa6410a3a67c0efb4e97 (patch)
tree77bf1242b18cd9366923e740d70e0a43025b4668 /Dockerfile.debian-arm64
parent445c205139f4b0986bc4f56ad94494275fe68e59 (diff)
gitlab-ci: arm64 cross compiling
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: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'Dockerfile.debian-arm64')
-rw-r--r--Dockerfile.debian-arm6446
1 files changed, 46 insertions, 0 deletions
diff --git a/Dockerfile.debian-arm64 b/Dockerfile.debian-arm64
new file mode 100644
index 00000000..20c2e8b3
--- /dev/null
+++ b/Dockerfile.debian-arm64
@@ -0,0 +1,46 @@
+FROM debian:stretch-backports
+
+RUN apt-get update
+RUN apt-get install -y \
+ flex \
+ bison \
+ pkg-config \
+ x11proto-dri2-dev \
+ python-docutils \
+ valgrind \
+ peg
+
+RUN dpkg --add-architecture arm64
+RUN apt-get update
+RUN apt-get install -y \
+ gcc-aarch64-linux-gnu \
+ libpciaccess-dev:arm64 \
+ libkmod-dev:arm64 \
+ libprocps-dev:arm64 \
+ libunwind-dev:arm64 \
+ libdw-dev:arm64 \
+ zlib1g-dev:arm64 \
+ liblzma-dev:arm64 \
+ libssl-dev:arm64 \
+ libcairo-dev:arm64 \
+ libpixman-1-dev:arm64 \
+ libudev-dev:arm64 \
+ libgsl-dev:arm64 \
+ libasound2-dev:arm64 \
+ libjson-c-dev:arm64 \
+ libcurl4-openssl-dev:arm64 \
+ libxrandr-dev:arm64 \
+ libxv-dev:arm64
+
+RUN apt-get install -t stretch-backports -y \
+ meson \
+ libdrm-dev:arm64 \
+ qemu-user
+
+# autotools build deps
+RUN apt-get install -y \
+ autoconf \
+ automake \
+ xutils-dev \
+ libtool \
+ make