From 64f5d63d2e2da82e39d15f6cdc6c9636edea2288 Mon Sep 17 00:00:00 2001 From: +shyfire131 <116033104+shyfire-131@users.noreply.github.com> Date: Mon, 13 Mar 2023 14:00:34 -0600 Subject: [PATCH] Support for building ARM docker images (#679) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add llvm to build stage running docker build on Apple Sillicon would result in this error: #14 49.39 : error: #14 49.39 Warning: Couldn't figure out LLVM version! #14 49.39 Make sure you have installed LLVM between [9 and 13) I assume it can’t find llvm/clang? * install using unattended helper script the current haskell is hardcoded to x86, so switch to using haskell’s official helper script which supports arm also need to bump up setting the path, since ghcup is no longer in /usr/bin reference: https://www.haskell.org/ghcup/guide/#continuous-integration * add numa headers/libs docker build (specifically haskell install step) would fail with : #7 107.2 utils/ghc-cabal/dist-install/build/tmp/ghc-cabal: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory I think this is because numa isn’t installed on arm instances of focal by default, but it is in later versions anyway this fixes that * also add numa to final The image builds at this point! But it fails to boot on arm - again with a numa error. This fixes that. * don’t specify llvm version --------- Co-authored-by: +shyfire131 --- build.Dockerfile | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/build.Dockerfile b/build.Dockerfile index c8cf42928..a7d670e25 100644 --- a/build.Dockerfile +++ b/build.Dockerfile @@ -4,16 +4,14 @@ FROM ubuntu:focal AS build ### Build stage # Install curl and git and smp-related dependencies -RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev +RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm llvm-dev libnuma-dev # Install ghcup -RUN curl https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup -o /usr/bin/ghcup && \ - chmod +x /usr/bin/ghcup +RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=8.10.7 BOOTSTRAP_HASKELL_CABAL_VERSION=3.6.2.0 sh + +# Adjust PATH +ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH" -# Install ghc -RUN ghcup install ghc 8.10.7 -# Install cabal -RUN ghcup install cabal # Set both as default RUN ghcup set ghc 8.10.7 && \ ghcup set cabal @@ -21,9 +19,6 @@ RUN ghcup set ghc 8.10.7 && \ COPY . /project WORKDIR /project -# Adjust PATH -ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH" - # Compile smp-server RUN cabal update RUN cabal install @@ -33,7 +28,7 @@ RUN cabal install FROM final # Install OpenSSL dependency -RUN apt-get update && apt-get install -y openssl +RUN apt-get update && apt-get install -y openssl libnuma-dev # Copy compiled smp-server from build stage COPY --from=build /root/.cabal/bin/smp-server /usr/bin/smp-server