mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 16:35:33 +00:00
This adds the documentation how to build Keyman Web as well as Keyman for Android on Linux. and adds the dependencies to the `Dockerfile` so that it's now also possible to build Keyman Web and Keyman for Android with Docker.
86 lines
3.9 KiB
Docker
86 lines
3.9 KiB
Docker
# Copyright (c) 2022-2023 SIL International. All rights reserved.
|
|
#
|
|
# builder image for a linux build
|
|
# see ../docs/build/linux-ubuntu.md
|
|
|
|
FROM --platform=amd64 ubuntu:latest
|
|
LABEL org.opencontainers.image.authors="SIL International."
|
|
LABEL org.opencontainers.image.url="https://github.com/keymanapp/keyman.git"
|
|
LABEL org.opencontainers.image.title="Keyman Linux Build Image"
|
|
|
|
# We will switch to a build user after some installation
|
|
USER root
|
|
ENV HOME /home/build
|
|
RUN useradd -c "Build user" --home-dir $HOME --create-home --shell /usr/bin/bashwrapper build
|
|
VOLUME /home/build/build
|
|
WORKDIR /home/build/build
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
ENV DEBIAN_PRIORITY critical
|
|
ENV DEBCONF_NOWARNINGS yes
|
|
|
|
# Update to the latest
|
|
RUN apt-get -q -y update && \
|
|
apt-get -q -y install devscripts equivs meson python3 python3-setuptools software-properties-common curl && \
|
|
add-apt-repository ppa:keymanapp/keyman && \
|
|
add-apt-repository ppa:keymanapp/keyman-alpha
|
|
RUN apt-get -q -y update && \
|
|
apt-get -q -y upgrade
|
|
|
|
# Install dependencies
|
|
ADD debian/control /tmp/control
|
|
# Answer 'yes' to install questions
|
|
RUN (yes | mk-build-deps --install /tmp/control) || true && \
|
|
rm /tmp/control
|
|
|
|
# Install Node
|
|
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash && \
|
|
apt-get -q -y install nodejs
|
|
|
|
# Install emscripten
|
|
RUN cd /usr/share && \
|
|
git clone https://github.com/emscripten-core/emsdk.git && \
|
|
cd emsdk && \
|
|
./emsdk install latest && \
|
|
./emsdk activate latest && \
|
|
echo "#!/bin/bash" > /usr/bin/bashwrapper && \
|
|
echo "export EMSCRIPTEN_BASE=/usr/share/emsdk/upstream/emscripten" >> /usr/bin/bashwrapper
|
|
|
|
# Keyman Web
|
|
RUN curl --output google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
|
|
apt-get -q -y install ./google-chrome-stable_current_amd64.deb && \
|
|
rm google-chrome-stable_current_amd64.deb && \
|
|
echo "export CHROME_BIN=/opt/google/chrome/chrome" >> /usr/bin/bashwrapper
|
|
|
|
# Keyman for Android
|
|
RUN apt-get -q -y install gradle maven pandoc sdkmanager jq && \
|
|
sdkmanager platform-tools && \
|
|
yes | sdkmanager --licenses && \
|
|
chown -R build:build /opt/android-sdk/ && \
|
|
echo "export ANDROID_HOME=/opt/android-sdk" >> /usr/bin/bashwrapper && \
|
|
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" >> /usr/bin/bashwrapper
|
|
|
|
# Finish bashwrapper script and adjust permissions
|
|
RUN echo "\${@:-bash}" >> /usr/bin/bashwrapper && \
|
|
chmod +x /usr/bin/bashwrapper && \
|
|
chown -R build:build $HOME
|
|
|
|
# now, switch to build user
|
|
USER build
|
|
|
|
# Pre-install gradle. This will put files in ~/.gradle which will speed up builds.
|
|
RUN mkdir -p $HOME/tmp/gradle/wrapper && \
|
|
# KMEA uses gradle-7.5.1-bin
|
|
curl --location --output $HOME/tmp/gradle/wrapper/gradle-wrapper.jar https://raw.githubusercontent.com/keymanapp/keyman/master/android/KMEA/gradle/wrapper/gradle-wrapper.jar && \
|
|
curl --location --output $HOME/tmp/gradle/wrapper/gradle-wrapper.properties https://raw.githubusercontent.com/keymanapp/keyman/master/android/KMEA/gradle/wrapper/gradle-wrapper.properties && \
|
|
curl --location --output $HOME/tmp/gradlew https://raw.githubusercontent.com/keymanapp/keyman/master/android/KMEA/gradlew && \
|
|
chmod +x $HOME/tmp/gradlew && \
|
|
$HOME/tmp/gradlew --quiet && \
|
|
# Some projects use gradle-7.5.1-all, so we pre-install that as well
|
|
curl --location --output $HOME/tmp/gradle/wrapper/gradle-wrapper.jar https://raw.githubusercontent.com/keymanapp/keyman/master/android/Samples/KMSample1/gradle/wrapper/gradle-wrapper.jar && \
|
|
curl --location --output $HOME/tmp/gradle/wrapper/gradle-wrapper.properties https://raw.githubusercontent.com/keymanapp/keyman/master/android/Samples/KMSample1/gradle/wrapper/gradle-wrapper.properties && \
|
|
curl --location --output $HOME/tmp/gradlew https://raw.githubusercontent.com/keymanapp/keyman/master/android/Samples/KMSample1/gradlew && \
|
|
chmod +x $HOME/tmp/gradlew && \
|
|
$HOME/tmp/gradlew --quiet && \
|
|
rm -rf $HOME/tmp
|
|
|
|
ENTRYPOINT [ "/usr/bin/bashwrapper" ]
|