mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-03-29 05:49:55 +00:00
* ci/reproducible builds: pin Java version * ci/reproducible builds: fix aarch64 builds * ci/reproducible builds: chech java hash
112 lines
4.0 KiB
Docker
112 lines
4.0 KiB
Docker
# 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.2.0
|
|
ARG JAVA_VER=17.0.17.10.1
|
|
ARG JAVA_HASH_AMD64=e3e11daa5c22a45153bbeff1a0c21bf08631791e4e8d8ed14deba31c7cf9af1a
|
|
ARG JAVA_HASH_ARM64=2b460859b681757b33a7591b6238ecaf51569d05d2684984e5f0a89c6514acbc
|
|
|
|
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 \
|
|
strip-nondeterminism \
|
|
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 export JAVA_FILENAME='java-corretto.deb' \
|
|
JAVA_VER_MAJOR=$(printf "${JAVA_VER}" | awk -F. '{print $1}') \
|
|
JAVA_VER_DEB=$(printf "${JAVA_VER}" | sed 's/\.1$/-1/') && \
|
|
case "$(uname -m)" in \
|
|
x86_64) export JAVA_ARCH='amd64' JAVA_HASH="$JAVA_HASH_AMD64" ;; \
|
|
aarch64) export JAVA_ARCH='arm64' JAVA_HASH="$JAVA_HASH_ARM64" ;; \
|
|
*) echo "unknown arch $(uname -m)" && exit 1 ;; \
|
|
esac && \
|
|
curl --proto '=https' --tlsv1.2 -sSf \
|
|
"https://corretto.aws/downloads/resources/${JAVA_VER}/java-${JAVA_VER_MAJOR}-amazon-corretto-jdk_${JAVA_VER_DEB}_${JAVA_ARCH}.deb" \
|
|
-o "${JAVA_FILENAME}" && \
|
|
if echo "${JAVA_HASH} ${JAVA_FILENAME}" | sha256sum -c -; then \
|
|
if apt install -y ./"${JAVA_FILENAME}"; then \
|
|
rm ./"${JAVA_FILENAME}"; \
|
|
else \
|
|
echo "Failed to install Java Corretto" && exit 1; \
|
|
fi \
|
|
else \
|
|
echo "Checksum mismatch" && exit 1; \
|
|
fi
|
|
|
|
# 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
|