tDockerfile - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
tDockerfile (6175B)
---
1 # based on https://github.com/kivy/python-for-android/blob/master/Dockerfile
2
3 FROM ubuntu:20.04
4
5 ENV DEBIAN_FRONTEND=noninteractive
6
7 ENV ANDROID_HOME="/opt/android"
8
9 # configure locale
10 RUN apt update -qq > /dev/null && apt install -qq --yes --no-install-recommends \
11 locales && \
12 locale-gen en_US.UTF-8
13 ENV LANG="en_US.UTF-8" \
14 LANGUAGE="en_US.UTF-8" \
15 LC_ALL="en_US.UTF-8"
16
17 RUN apt -y update -qq \
18 && apt -y install -qq --no-install-recommends curl unzip ca-certificates \
19 && apt -y autoremove
20
21
22 ENV ANDROID_NDK_HOME="${ANDROID_HOME}/android-ndk"
23 ENV ANDROID_NDK_VERSION="19c"
24 ENV ANDROID_NDK_HOME_V="${ANDROID_NDK_HOME}-r${ANDROID_NDK_VERSION}"
25
26 # get the latest version from https://developer.android.com/ndk/downloads/index.html
27 ENV ANDROID_NDK_ARCHIVE="android-ndk-r${ANDROID_NDK_VERSION}-linux-x86_64.zip"
28 ENV ANDROID_NDK_DL_URL="https://dl.google.com/android/repository/${ANDROID_NDK_ARCHIVE}"
29
30 # download and install Android NDK
31 RUN curl --location --progress-bar \
32 "${ANDROID_NDK_DL_URL}" \
33 --output "${ANDROID_NDK_ARCHIVE}" \
34 && mkdir --parents "${ANDROID_NDK_HOME_V}" \
35 && unzip -q "${ANDROID_NDK_ARCHIVE}" -d "${ANDROID_HOME}" \
36 && ln -sfn "${ANDROID_NDK_HOME_V}" "${ANDROID_NDK_HOME}" \
37 && rm -rf "${ANDROID_NDK_ARCHIVE}"
38
39
40 ENV ANDROID_SDK_HOME="${ANDROID_HOME}/android-sdk"
41
42 # get the latest version from https://developer.android.com/studio/index.html
43 ENV ANDROID_SDK_TOOLS_VERSION="6514223"
44 ENV ANDROID_SDK_BUILD_TOOLS_VERSION="29.0.3"
45 ENV ANDROID_SDK_TOOLS_ARCHIVE="commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip"
46 ENV ANDROID_SDK_TOOLS_DL_URL="https://dl.google.com/android/repository/${ANDROID_SDK_TOOLS_ARCHIVE}"
47 ENV ANDROID_SDK_MANAGER="${ANDROID_SDK_HOME}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_HOME}"
48
49 # download and install Android SDK
50 RUN curl --location --progress-bar \
51 "${ANDROID_SDK_TOOLS_DL_URL}" \
52 --output "${ANDROID_SDK_TOOLS_ARCHIVE}" \
53 && mkdir --parents "${ANDROID_SDK_HOME}" \
54 && unzip -q "${ANDROID_SDK_TOOLS_ARCHIVE}" -d "${ANDROID_SDK_HOME}" \
55 && rm -rf "${ANDROID_SDK_TOOLS_ARCHIVE}"
56
57 # update Android SDK, install Android API, Build Tools...
58 RUN mkdir --parents "${ANDROID_SDK_HOME}/.android/" \
59 && echo '### User Sources for Android SDK Manager' \
60 > "${ANDROID_SDK_HOME}/.android/repositories.cfg"
61
62 # accept Android licenses (JDK necessary!)
63 RUN apt -y update -qq \
64 && apt -y install -qq --no-install-recommends openjdk-13-jdk \
65 && apt -y autoremove
66 RUN yes | ${ANDROID_SDK_MANAGER} --licenses > /dev/null
67
68 # download platforms, API, build tools
69 RUN ${ANDROID_SDK_MANAGER} "platforms;android-24" > /dev/null && \
70 ${ANDROID_SDK_MANAGER} "platforms;android-29" > /dev/null && \
71 ${ANDROID_SDK_MANAGER} "build-tools;${ANDROID_SDK_BUILD_TOOLS_VERSION}" > /dev/null && \
72 ${ANDROID_SDK_MANAGER} "extras;android;m2repository" > /dev/null && \
73 chmod +x "${ANDROID_SDK_HOME}/tools/bin/avdmanager"
74
75 # download ANT
76 ENV APACHE_ANT_VERSION="1.9.4"
77 ENV APACHE_ANT_ARCHIVE="apache-ant-${APACHE_ANT_VERSION}-bin.tar.gz"
78 ENV APACHE_ANT_DL_URL="http://archive.apache.org/dist/ant/binaries/${APACHE_ANT_ARCHIVE}"
79 ENV APACHE_ANT_HOME="${ANDROID_HOME}/apache-ant"
80 ENV APACHE_ANT_HOME_V="${APACHE_ANT_HOME}-${APACHE_ANT_VERSION}"
81
82 RUN curl --location --progress-bar \
83 "${APACHE_ANT_DL_URL}" \
84 --output "${APACHE_ANT_ARCHIVE}" \
85 && tar -xf "${APACHE_ANT_ARCHIVE}" -C "${ANDROID_HOME}" \
86 && ln -sfn "${APACHE_ANT_HOME_V}" "${APACHE_ANT_HOME}" \
87 && rm -rf "${APACHE_ANT_ARCHIVE}"
88
89
90 ENV USER="user"
91 ENV HOME_DIR="/home/${USER}"
92 ENV WORK_DIR="${HOME_DIR}/wspace" \
93 PATH="${HOME_DIR}/.local/bin:${PATH}"
94
95 # install system/build dependencies
96 # https://github.com/kivy/buildozer/blob/master/docs/source/installation.rst#android-on-ubuntu-2004-64bit
97 RUN apt -y update -qq \
98 && apt -y install -qq --no-install-recommends \
99 python3 \
100 python3-dev \
101 python3-pip \
102 python3-setuptools \
103 wget \
104 lbzip2 \
105 patch \
106 sudo \
107 software-properties-common \
108 git \
109 zip \
110 unzip \
111 build-essential \
112 ccache \
113 openjdk-13-jdk \
114 autoconf \
115 libtool \
116 pkg-config \
117 zlib1g-dev \
118 libncurses5-dev \
119 libncursesw5-dev \
120 libtinfo5 \
121 cmake \
122 libffi-dev \
123 libssl-dev \
124 automake \
125 gettext \
126 libltdl-dev \
127 && apt -y autoremove \
128 && apt -y clean
129
130
131 # prepare non root env
132 RUN useradd --create-home --shell /bin/bash ${USER}
133
134 # with sudo access and no password
135 RUN usermod -append --groups sudo ${USER}
136 RUN echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
137
138
139 WORKDIR ${WORK_DIR}
140
141 # user needs ownership/write access to these directories
142 RUN chown --recursive ${USER} ${WORK_DIR} ${ANDROID_SDK_HOME}
143 RUN chown ${USER} /opt
144 USER ${USER}
145
146
147 RUN python3 -m pip install --user --upgrade pip
148 RUN python3 -m pip install --user --upgrade wheel
149 RUN python3 -m pip install --user --upgrade cython==0.29.19
150 RUN python3 -m pip install --user --pre kivy
151 RUN python3 -m pip install --user image
152
153 # prepare git
154 RUN git config --global user.name "John Doe" \
155 && git config --global user.email johndoe@example.com
156
157 # install buildozer
158 RUN cd /opt \
159 && git clone https://github.com/kivy/buildozer \
160 && cd buildozer \
161 && git remote add sombernight https://github.com/SomberNight/buildozer \
162 && git fetch --all \
163 # commit: kivy/buildozer "1.2.0" tag
164 && git checkout "94cfcb8d591c11d6ad0e11f129b08c1e27a161c5^{commit}" \
165 && python3 -m pip install --user -e .
166
167 # install python-for-android
168 RUN cd /opt \
169 && git clone https://github.com/kivy/python-for-android \
170 && cd python-for-android \
171 && git remote add sombernight https://github.com/SomberNight/python-for-android \
172 && git fetch --all \
173 # commit: from branch sombernight/electrum_20200703
174 && git checkout "0dd2ce87a8f380d20505ca5dc1e2d2357b4a08fc^{commit}" \
175 && python3 -m pip install --user -e .
176
177 # build env vars
178 ENV USE_SDK_WRAPPER=1
179 ENV GRADLE_OPTS="-Xmx1536M -Dorg.gradle.jvmargs='-Xmx1536M'"