File: Dockerfile

package info (click to toggle)
keyman 18.0.246-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,316 kB
  • sloc: python: 52,784; cpp: 21,289; sh: 7,633; ansic: 4,823; xml: 3,617; perl: 959; makefile: 139; javascript: 138
file content (69 lines) | stat: -rw-r--r-- 3,181 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Keyman is copyright (C) SIL Global. MIT License.

ARG BASE_VERSION=default
FROM keymanapp/keyman-base-ci:${BASE_VERSION}
LABEL org.opencontainers.image.authors="SIL Global."
LABEL org.opencontainers.image.url="https://github.com/keymanapp/keyman.git"
LABEL org.opencontainers.image.title="Keyman Android Build Image"

# Keyman for Android
SHELL ["/bin/bash", "-c"]

# Starting with Ubuntu 24.04 sdkmanager is no longer available, instead
# a version dependent package allows to install the cmdline tools
ARG JAVA_VERSION=11
RUN <<EOF
  OS_VER=$(lsb_release -r -s 2>/dev/null)
  echo "OS_VER=${OS_VER}"
  if (( ${OS_VER%%.*} > 22 )); then
    PKG_SDKMANAGER=google-android-cmdline-tools-13.0-installer
    DIR_SDK=/usr/lib/android-sdk
  else
    PKG_SDKMANAGER=sdkmanager
    DIR_SDK=/opt/android-sdk
  fi
  apt-get update
  apt-get -q -y install gradle maven pandoc $PKG_SDKMANAGER jq openjdk-${JAVA_VERSION}-jdk
  sdkmanager platform-tools
  yes | sdkmanager --licenses
  chown -R build:build $DIR_SDK
  echo "export ANDROID_HOME=$DIR_SDK" >> /usr/bin/bashwrapper
  echo "export JAVA_HOME_${JAVA_VERSION}=/usr/lib/jvm/java-${JAVA_VERSION}-openjdk-amd64" >> /usr/bin/bashwrapper
EOF

# Finish bashwrapper script and adjust permissions
RUN <<EOF cat >> /usr/bin/bashwrapper

if [[ "\$@" =~ test ]] && [ -f /usr/bin/run-tests.sh ]; then
  /usr/bin/run-tests.sh "\${@:-bash}"
else
  "\${@:-bash}"
fi
EOF

# now, switch to build user
USER build

VOLUME /home/build/build
WORKDIR /home/build/build

# Pre-install gradle. This will put files in ~/.gradle which will speed up builds.
# Note it would be safer to copy these files directly from our repo rather than
# getting it over the Internet, but Docker doesn't allow us to copy files
# from outside the current directory when building the image.
RUN mkdir -p $HOME/tmp/gradle/wrapper && \
  # KMEA uses gradle-7.6.4-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.6.4-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" ]