# syntax=docker/dockerfile:1.7.0-labs ARG TAG=24.04 FROM ubuntu:${TAG} AS build ### Build stage ARG GHC=9.6.3 ARG CABAL=3.10.1.0 ARG JAVA=17 ENV TZ=Etc/UTC \ DEBIAN_FRONTEND=noninteractive # Install curl, git and and simplex-chat dependencies RUN apt-get update && \ apt-get install -y curl \ libpq-dev \ git \ sqlite3 \ libsqlite3-dev \ build-essential \ libgmp3-dev \ zlib1g-dev \ llvm \ cmake \ llvm-dev \ libnuma-dev \ libssl-dev \ desktop-file-utils \ patchelf \ ca-certificates \ zip \ wget \ fuse3 \ file \ appstream \ gpg \ unzip &&\ ln -s /bin/fusermount /bin/fusermount3 || : # Install Java Coretto # Required, because official Java in Ubuntu # depends on libjpeg.so.8 and liblcms2.so.2 which are NOT copied into final # /usr/lib/runtime/lib directory and I do not have time to figure out gradle.kotlin # to fix this :( RUN curl --proto '=https' --tlsv1.2 -sSf 'https://apt.corretto.aws/corretto.key' | gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg &&\ echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" > /etc/apt/sources.list.d/corretto.list &&\ apt update &&\ apt install -y java-${JAVA}-amazon-corretto-jdk # Specify bootstrap Haskell versions ENV BOOTSTRAP_HASKELL_GHC_VERSION=${GHC} ENV BOOTSTRAP_HASKELL_CABAL_VERSION=${CABAL} # Do not install Stack ENV BOOTSTRAP_HASKELL_INSTALL_NO_STACK=true ENV BOOTSTRAP_HASKELL_INSTALL_NO_STACK_HOOK=true # Install ghcup RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 sh # Adjust PATH ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH" # Set both as default RUN ghcup set ghc "${GHC}" && \ ghcup set cabal "${CABAL}" #===================== # Install Android SDK #===================== ARG SDK_VERSION=13114758 ENV SDK_VERSION=$SDK_VERSION \ ANDROID_HOME=/root RUN curl -L -o tools.zip "https://dl.google.com/android/repository/commandlinetools-linux-${SDK_VERSION}_latest.zip" && \ unzip tools.zip && rm tools.zip && \ mv cmdline-tools tools && mkdir "$ANDROID_HOME/cmdline-tools" && mv tools "$ANDROID_HOME/cmdline-tools/" && \ ln -s "$ANDROID_HOME/cmdline-tools/tools" "$ANDROID_HOME/cmdline-tools/latest" ENV PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/cmdline-tools/tools/bin" # https://askubuntu.com/questions/885658/android-sdk-repositories-cfg-could-not-be-loaded RUN mkdir -p ~/.android ~/.gradle && \ touch ~/.android/repositories.cfg && \ echo 'org.gradle.console=plain' > ~/.gradle/gradle.properties &&\ yes | sdkmanager --licenses >/dev/null ENV PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools WORKDIR /project