Skip to content

Commit dad35d3

Browse files
committed
Updates and fixes for build with docker process.
1 parent 9834b20 commit dad35d3

File tree

5 files changed

+42
-28
lines changed

5 files changed

+42
-28
lines changed

README.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,8 @@ Make sure you're running the commands below from the root of the project.
5151
Ensure ANDROID_SDK is set to the path to your SDK.
5252

5353
```bash
54-
export ANDROID_SDK=${HOME}/Android/Sdk
5554
echo "USER_UID=$(id -u)" > docker/.env
5655
echo "USER_GID=$(id -g)" >> docker/.env
57-
echo "ANDROID_SDK=${ANDROID_SDK}" >> docker/.env
5856
echo "CURRENT_WORKING_DIR=$(pwd)" >> docker/.env
5957
docker-compose -f docker/docker-compose.yml up
6058
```
@@ -64,7 +62,7 @@ docker-compose -f docker/docker-compose.yml up
6462
Building from scratch and working in Android Studio.
6563

6664
- Install some packages. On Ubuntu:
67-
apt install gnome-common gobject-introspection nasm gtk-doc-tools
65+
apt install gnome-common gobject-introspection nasm gtk-doc-tools python-is-python3
6866

6967
- On Linux, install Android Studio
7068
- Install Android SDK from Tools -> SDK Tools
@@ -87,7 +85,7 @@ Building from scratch and working in Android Studio.
8785

8886
- Accept all licenses (repeat if you see an error during build)
8987

90-
${ANDROID_SDK}/tools/bin/sdkmanager --licenses
88+
${ANDROID_SDK}/cmdline-tools/bin/sdkmanager --licenses
9189

9290
- Then, run the build script which takes hours to run. E.g.:
9391

docker/Dockerfile

+30-18
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,49 @@
1-
FROM ubuntu:bionic
1+
FROM ubuntu:focal
22

33
ARG USER_UID
44
ARG USER_GID
55
ARG CURRENT_WORKING_DIR
6-
ARG ANDROID_SDK
6+
ARG DEBIAN_FRONTEND=noninteractive
77

8-
RUN apt update && \
9-
apt install -yy gnome-common gobject-introspection nasm openjdk-8-jdk build-essential git python-setuptools python3-setuptools wget curl unzip sudo rsync && \
10-
apt clean && apt autoclean
8+
ENV ANDROID_SDK=/home/remote-clients/android-sdk
119

12-
# This layer is needed by cerbero to avoid an interactive sudo apt-get failing, needs to be update with subsequent cerbero versions
13-
RUN sudo apt -yy install autotools-dev automake autoconf libtool g++ autopoint make cmake bison flex yasm pkg-config gtk-doc-tools \
14-
libxv-dev libx11-dev libpulse-dev python3-dev texinfo gettext build-essential pkg-config doxygen curl libxext-dev libxi-dev \
15-
x11proto-record-dev libxrender-dev libgl1-mesa-dev libxfixes-dev libxdamage-dev libxcomposite-dev libasound2-dev libxml-simple-perl \
16-
dpkg-dev debhelper build-essential devscripts fakeroot transfig gperf libdbus-glib-1-dev wget glib-networking libxtst-dev libxrandr-dev \
17-
libglu1-mesa-dev libegl1-mesa-dev git subversion xutils-dev intltool ccache python3-setuptools python3-pip libssl-dev chrpath libfuse-dev
10+
# This layer is needed by cerbero to avoid an interactive sudo apt-get failing, needs to be updated with subsequent cerbero versions
11+
RUN apt update && \
12+
apt install -yy gnome-common gobject-introspection nasm openjdk-17-jdk build-essential git python-setuptools python3-setuptools wget curl unzip sudo rsync \
13+
autotools-dev automake autoconf libtool g++ autopoint make cmake bison flex yasm pkg-config gtk-doc-tools python-is-python3 libx11-xcb-dev \
14+
libxv-dev libx11-dev libpulse-dev python3-dev texinfo gettext build-essential pkg-config doxygen curl libxext-dev libxi-dev python3-distro \
15+
x11proto-record-dev libxrender-dev libgl1-mesa-dev libxfixes-dev libxdamage-dev libxcomposite-dev libasound2-dev libxml-simple-perl help2man \
16+
dpkg-dev debhelper build-essential devscripts fakeroot transfig gperf libdbus-glib-1-dev wget glib-networking libxtst-dev libxrandr-dev \
17+
libglu1-mesa-dev libegl1-mesa-dev git subversion xutils-dev intltool ccache python3-setuptools python3-pip libssl-dev chrpath libfuse-dev \
18+
libncurses6 libtinfo6 \
19+
&& apt clean && apt autoclean
20+
21+
RUN ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
22+
RUN ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
1823

1924
# This layer is needed to install spice-gtk dependencies, requires pyparsing
20-
RUN python3 -m pip install pyparsing==2.4.7
25+
RUN python3 -m pip install pyparsing==2.4.7 setuptools
2126

27+
RUN mkdir -p $ANDROID_SDK
2228

23-
RUN mkdir -p $ANDROID_SDK $CURRENT_WORKING_DIR
24-
25-
RUN groupadd -g $USER_GID remote-clients
29+
RUN groupadd -g $USER_GID remote-clients || true
2630
RUN useradd -u $USER_UID -g $USER_GID -m remote-clients
2731
RUN git config --global protocol.file.allow always
2832

33+
RUN chown remote-clients -R /home/remote-clients
2934
RUN echo "remote-clients ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
3035

3136
USER remote-clients
3237
WORKDIR ${CURRENT_WORKING_DIR}
3338
RUN git config --global protocol.file.allow always
3439

35-
CMD export PROJECT=libs && export ANDROID_SDK=$ANDROID_SDK && export PATH=$PATH:$ANDROID_SDK/platform-tools/ && export PATH=$PATH:$ANDROID_SDK/tools && \
36-
yes | $ANDROID_SDK/tools/bin/sdkmanager --licenses && \
37-
./bVNC/prepare_project.sh libs $ANDROID_SDK
40+
RUN cd ${HOME} && curl -o ${HOME}/commandlinetools-linux.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip && \
41+
unzip ${HOME}/commandlinetools-linux.zip && cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_SDK "platforms;android-34"
42+
43+
CMD export PROJECT=libs && \
44+
export ANDROID_SDK=$ANDROID_SDK && \
45+
export PATH=$PATH:$ANDROID_SDK/platform-tools/ && \
46+
export PATH=$PATH:$ANDROID_SDK/tools && \
47+
export PATH=$PATH:$ANDROID_SDK/cmdline-tools/bin && \
48+
yes | $HOME/cmdline-tools/bin/sdkmanager --sdk_root=$ANDROID_SDK --licenses && \
49+
./bVNC/prepare_project.sh libs $ANDROID_SDK

docker/docker-compose.yml

-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ services:
99
args:
1010
- USER_UID
1111
- USER_GID
12-
- ANDROID_SDK
1312
- CURRENT_WORKING_DIR
1413
volumes:
15-
- ${ANDROID_SDK}:${ANDROID_SDK}:cached
1614
- ${CURRENT_WORKING_DIR}:${CURRENT_WORKING_DIR}:cached

remoteClientLib/jni/libs/build-deps.conf

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ nettle_ver="3.4.1"
2727
# Tarball URLs
2828
configguess_url="http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=${configguess_ver}"
2929
configsub_url="http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;h=${configsub_ver}"
30-
openssl_url="http://www.openssl.org/source/openssl-${openssl_ver}.tar.gz"
30+
openssl_url="https://github.com/openssl/openssl/releases/download/OpenSSL_$(echo $openssl_ver | sed 's/\./_/g')/openssl-${openssl_ver}.tar.gz"
3131
spicegtk_url="http://www.spice-space.org/download/gtk/spice-gtk-${spicegtk_ver}.tar.bz2"
3232
spiceprotocol_url="http://www.spice-space.org/download/releases/spice-protocol-${spiceprotocol_ver}.tar.bz2"
3333
gstreamer_armeabi_url="http://gstreamer.freedesktop.org/data/pkg/android/${gstreamer_ver}/gstreamer-1.0-android-universal-${gstreamer_ver}.tar.xz"

remoteClientLib/jni/libs/build-deps.sh

+9-3
Original file line numberDiff line numberDiff line change
@@ -483,12 +483,14 @@ build() {
483483
popd
484484
rsync -avP recipes/ cerbero/recipes/
485485

486-
sed -i "s/version = '1.1.1.*'/version = '${openssl_ver}'/" cerbero/recipes/openssl.recipe
486+
sed -i "s/version = '.*'/version = '${openssl_ver}'/" cerbero/recipes/openssl.recipe
487+
sed -i "s/ftp.openssl.org\/source/github.com\/openssl\/openssl\/releases\/download\/OpenSSL_$(echo ${openssl_ver} | sed 's/\./_/g')/" cerbero/recipes/openssl.recipe
487488
sed -i "s/0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1/cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8/" cerbero/recipes/openssl.recipe
488489

489490
echo "Running cerbero build for $1 in $(pwd)"
490491
cerbero/cerbero-uninstalled -c cerbero/config/cross-android-universal.cbc build \
491-
gstreamer-1.0 glib glib-networking libxml2 pixman libsoup openssl cairo json-glib gst-android-1.0 gst-plugins-bad-1.0 gst-plugins-good-1.0 gst-plugins-base-1.0 gst-plugins-ugly-1.0 gst-libav-1.0 spiceglue
492+
libjpeg-turbo pyparsing tiff gstreamer-1.0 glib glib-networking libxml2 pixman libsoup openssl \
493+
cairo json-glib gst-android-1.0 gst-plugins-bad-1.0 gst-plugins-good-1.0 gst-plugins-base-1.0 gst-plugins-ugly-1.0 gst-libav-1.0 spiceglue
492494

493495
echo "Copying spice-gtk header files that it does not install automatically"
494496
SPICEDIR=$(ls -d1 cerbero/build/sources/android_universal/${gstarch}/spice-gtk-* | tail -n 1)
@@ -633,9 +635,13 @@ build_freerdp() {
633635
export OPENH264_NDK=$(install_ndk ../../ ${freerdp_openh264_ndk_version})
634636
echo "Android NDK version for FreeRDP ${ndk_version} is installed at ${ANDROID_NDK}"
635637
echo "Installing cmake ${freerdp_cmake_version} for FreeRDP build compatibility"
636-
export CMAKE_PATH=$(install_cmake ../../ ${freerdp_cmake_version})/bin
638+
export CMAKE_DIR=$(install_cmake ../../ ${freerdp_cmake_version})
639+
export CMAKE_PATH=${CMAKE_DIR}/bin
637640
export PATH=${CMAKE_PATH}:${PATH}
638641
export CMAKE_PROGRAM=${CMAKE_PATH}/cmake
642+
643+
rm -rf "${ANDROID_SDK}"/cmake
644+
cp -a "${CMAKE_DIR}" "${ANDROID_SDK}"/cmake
639645
./scripts/android-build-freerdp.sh
640646

641647
# Prepare the FreeRDPCore project for use as a library

0 commit comments

Comments
 (0)