Changeset View
Changeset View
Standalone View
Standalone View
system-images/android/sdk/Dockerfile-clang
1 | FROM ubuntu:16.04 | 1 | FROM ubuntu:16.04 | ||
---|---|---|---|---|---|
2 | 2 | | |||
3 | # inspired by rabits/qt which we use for the gcc toolkit | 3 | # inspired by rabits/qt which we use for the gcc toolkit | ||
4 | MAINTAINER Aleix Pol <aleixpol@kde.org> | 4 | MAINTAINER Aleix Pol <aleixpol@kde.org> | ||
5 | 5 | | |||
6 | ARG QT_VERSION=5.12.0 | 6 | ARG QT_VERSION=5.12.0 | ||
7 | ARG QT_TAG=5.12.0 | 7 | ARG QT_TAG=v5.12.0 | ||
8 | ARG NDK_VERSION=r18b | 8 | ARG NDK_VERSION=r18b | ||
9 | ARG SDK_PLATFORM=android-21 | 9 | ARG SDK_PLATFORM=android-21 | ||
nicolasfella: Is there a particular reason why SDK level is still 21 instead of something recent-ish? | |||||
Doesn't seem to matter on the Java side at least, Gradle pulls in 28 for KNotification (therefore the need to have write access to the SDK location I guess). I suspect this is used also to define the minimum API level too though? vkrause: Doesn't seem to matter on the Java side at least, Gradle pulls in 28 for KNotification… | |||||
10 | ARG SDK_BUILD_TOOLS=28.0.2 | 10 | ARG SDK_BUILD_TOOLS=28.0.2 | ||
11 | ARG SDK_PACKAGES="tools platform-tools" | 11 | ARG SDK_PACKAGES="tools platform-tools" | ||
12 | 12 | | |||
13 | ENV DEBIAN_FRONTEND noninteractive | 13 | ENV DEBIAN_FRONTEND noninteractive | ||
14 | ENV QT_PATH /opt/Qt | 14 | ENV QT_PATH /opt/Qt | ||
15 | ENV QT_ANDROID ${QT_PATH}/${QT_VERSION}/android_armv7 | 15 | ENV QT_ANDROID ${QT_PATH}/${QT_VERSION}/android_armv7 | ||
16 | ENV ANDROID_HOME /opt/android-sdk | 16 | ENV ANDROID_HOME /opt/android-sdk | ||
17 | ENV ANDROID_SDK_ROOT ${ANDROID_HOME} | 17 | ENV ANDROID_SDK_ROOT ${ANDROID_HOME} | ||
▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Line(s) | 31 | RUN dpkg --add-architecture i386 && apt update && apt full-upgrade -y && apt install -y --no-install-recommends \ | |||
60 | gperf gettext \ | 60 | gperf gettext \ | ||
61 | python3 python3-paramiko python3-lxml python3-yaml \ | 61 | python3 python3-paramiko python3-lxml python3-yaml \ | ||
62 | bison flex \ | 62 | bison flex \ | ||
63 | ruby wget \ | 63 | ruby wget \ | ||
64 | #for dbus/expat | 64 | #for dbus/expat | ||
65 | automake libtool autoconf autoconf-archive pkg-config \ | 65 | automake libtool autoconf autoconf-archive pkg-config \ | ||
66 | #for translations | 66 | #for translations | ||
67 | subversion gnupg2 \ | 67 | subversion gnupg2 \ | ||
68 | && apt-get -qq clean | 68 | && apt-get -qq clean \ | ||
69 | && locale-gen en_US.UTF-8 && dpkg-reconfigure locales | ||||
69 | 70 | | |||
70 | # Download & unpack android SDK | 71 | # Download & unpack android SDK | ||
71 | RUN curl -Lo /tmp/sdk-tools.zip 'https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip' \ | 72 | RUN curl -Lo /tmp/sdk-tools.zip 'https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip' \ | ||
72 | && mkdir -p /opt/android-sdk && unzip -q /tmp/sdk-tools.zip -d /opt/android-sdk && rm -f /tmp/sdk-tools.zip \ | 73 | && mkdir -p /opt/android-sdk && unzip -q /tmp/sdk-tools.zip -d /opt/android-sdk && rm -f /tmp/sdk-tools.zip \ | ||
73 | && yes | sdkmanager --licenses && sdkmanager --verbose "platforms;${SDK_PLATFORM}" "build-tools;${SDK_BUILD_TOOLS}" ${SDK_PACKAGES} | 74 | && yes | sdkmanager --licenses && sdkmanager --verbose "platforms;${SDK_PLATFORM}" "build-tools;${SDK_BUILD_TOOLS}" ${SDK_PACKAGES} | ||
74 | 75 | | |||
75 | # Download & unpack android NDK | 76 | # Download & unpack android NDK | ||
76 | RUN mkdir /tmp/android && cd /tmp/android && curl -Lo ndk.zip "https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip" \ | 77 | RUN mkdir /tmp/android && cd /tmp/android && curl -Lo ndk.zip "https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip" \ | ||
77 | && unzip -q ndk.zip && mv android-ndk-* $ANDROID_NDK_ROOT && chmod -R +rX $ANDROID_NDK_ROOT \ | 78 | && unzip -q ndk.zip && mv android-ndk-* $ANDROID_NDK_ROOT && chmod -R +rX $ANDROID_NDK_ROOT \ | ||
78 | && rm -rf /tmp/android | 79 | && rm -rf /tmp/android | ||
79 | 80 | | |||
80 | RUN cd && git clone git://code.qt.io/qt/qt5.git --single-branch --branch ${QT_TAG} && \ | 81 | ########################## | ||
81 | cd qt5 && \ | | |||
82 | ./init-repository && \ | | |||
83 | ./configure -xplatform android-clang --disable-rpath -nomake tests -nomake examples -android-ndk /opt/android-ndk -android-sdk /opt/android-sdk -skip qttranslations -skip qtserialport -skip qtwebengine -no-warnings-are-errors -opensource -confirm-license -c++std c++14 -prefix $QT_ANDROID && \ | | |||
84 | make -j`nproc` && \ | | |||
85 | make -j`nproc` install && \ | | |||
86 | cd .. && rm -rf qt5 | | |||
87 | 82 | | |||
88 | # Reconfigure locale | 83 | RUN chmod a+w /opt/ | ||
89 | RUN locale-gen en_US.UTF-8 && dpkg-reconfigure locales | | |||
90 | 84 | | |||
91 | # Add group & user | 85 | # Add group & user | ||
92 | RUN groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user | 86 | RUN groupadd -r user && useradd --create-home --gid user user && echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/user | ||
93 | 87 | | |||
94 | ########################## | | |||
95 | | ||||
96 | RUN chmod a+w /opt/ | | |||
97 | | ||||
98 | USER user | 88 | USER user | ||
99 | WORKDIR /home/user | 89 | WORKDIR /home/user | ||
100 | ENV HOME /home/user | 90 | ENV HOME /home/user | ||
101 | 91 | | |||
92 | ########################## | ||||
93 | | ||||
102 | RUN mkdir /opt/kdeandroid-deps | 94 | RUN mkdir /opt/kdeandroid-deps | ||
95 | COPY build-openssl-uptodate /opt/helpers/ | ||||
96 | RUN bash /opt/helpers/build-openssl-uptodate | ||||
97 | | ||||
98 | RUN export OPENSSL_LIBS='-L/opt/kdeandroid-deps/lib -lssl -lcrypto' && \ | ||||
99 | cd && git clone git://code.qt.io/qt/qt5.git --single-branch --branch ${QT_TAG} && \ | ||||
100 | cd qt5 && \ | ||||
101 | ./init-repository && \ | ||||
102 | ./configure -xplatform android-clang --disable-rpath -openssl-linked -nomake tests -nomake examples -android-ndk /opt/android-ndk -android-sdk /opt/android-sdk -skip qttranslations -skip qtserialport -skip qtwebengine -no-warnings-are-errors -opensource -confirm-license -c++std c++14 -prefix $QT_ANDROID -I/opt/kdeandroid-deps/include && \ | ||||
103 | make -j`nproc` && \ | ||||
104 | make -j`nproc` install && \ | ||||
105 | cd .. && rm -rf qt5 | ||||
106 | | ||||
107 | ########################## | ||||
108 | | ||||
103 | RUN mkdir /opt/nativetooling | 109 | RUN mkdir /opt/nativetooling | ||
104 | 110 | | |||
105 | ENV ANDROID_NDK $ANDROID_NDK_ROOT | 111 | ENV ANDROID_NDK $ANDROID_NDK_ROOT | ||
106 | COPY gitconfig $HOME/.gitconfig | 112 | COPY gitconfig $HOME/.gitconfig | ||
107 | 113 | | |||
108 | RUN mkdir -p /opt/cmake \ | 114 | RUN mkdir -p /opt/cmake \ | ||
109 | && curl -Lo /tmp/cmake.sh https://cmake.org/files/v3.12/cmake-3.12.4-Linux-x86_64.sh \ | 115 | && curl -Lo /tmp/cmake.sh https://cmake.org/files/v3.12/cmake-3.12.4-Linux-x86_64.sh \ | ||
110 | && bash /tmp/cmake.sh --skip-license --prefix=/opt/cmake --exclude-subdir \ | 116 | && bash /tmp/cmake.sh --skip-license --prefix=/opt/cmake --exclude-subdir \ | ||
Show All 32 Lines | |||||
143 | RUN cd && git clone https://github.com/libexpat/libexpat.git --single-branch && cd libexpat/expat \ | 149 | RUN cd && git clone https://github.com/libexpat/libexpat.git --single-branch && cd libexpat/expat \ | ||
144 | && /opt/helpers/build-standalone "./buildconf.sh && ./configure --prefix=/opt/kdeandroid-deps --host=${ANDROID_NDK_TOOLCHAIN_PREFIX} && cd lib && make -j`nproc` && make install" \ | 150 | && /opt/helpers/build-standalone "./buildconf.sh && ./configure --prefix=/opt/kdeandroid-deps --host=${ANDROID_NDK_TOOLCHAIN_PREFIX} && cd lib && make -j`nproc` && make install" \ | ||
145 | && cd ../.. && rm -rf libexpat | 151 | && cd ../.. && rm -rf libexpat | ||
146 | 152 | | |||
147 | #build dbus | 153 | #build dbus | ||
148 | RUN EXTRA_CMAKE_SUBDIR=cmake GIT_EXTRA="--branch dbus-1.12.10" /opt/helpers/build-cmake dbus git://anongit.freedesktop.org/git/dbus/dbus -DEXPAT_INCLUDE_DIR=/opt/kdeandroid-deps/include -DEXPAT_LIBRARY=/opt/kdeandroid-deps/lib/libexpat.so | 154 | RUN EXTRA_CMAKE_SUBDIR=cmake GIT_EXTRA="--branch dbus-1.12.10" /opt/helpers/build-cmake dbus git://anongit.freedesktop.org/git/dbus/dbus -DEXPAT_INCLUDE_DIR=/opt/kdeandroid-deps/include -DEXPAT_LIBRARY=/opt/kdeandroid-deps/lib/libexpat.so | ||
149 | 155 | | |||
150 | #build qtdbus | 156 | #build qtdbus | ||
151 | RUN unset ANDROID_NDK_TOOLCHAIN_VERSION \ | 157 | RUN sudo sed -i.bak "s|#define QT_NO_DBUS|//#define QT_NO_DBUS //we install it separate from the SDK|g" $QT_ANDROID/include/QtCore/qconfig.h \ | ||
152 | && sudo sed -i.bak "s|#define QT_NO_DBUS|//#define QT_NO_DBUS //we install it separate from the SDK|g" $QT_ANDROID/include/QtCore/qconfig.h \ | | |||
153 | && sudo sed -i.bak "s/QT_FEATURE_dbus -1/QT_FEATURE_dbus 1/g" $QT_ANDROID/include/QtCore/${QT_VERSION}/QtCore/private/qconfig_p.h \ | 158 | && sudo sed -i.bak "s/QT_FEATURE_dbus -1/QT_FEATURE_dbus 1/g" $QT_ANDROID/include/QtCore/${QT_VERSION}/QtCore/private/qconfig_p.h \ | ||
154 | && sudo sed -i.bak "s/QT_FEATURE_dbus_linked -1/QT_FEATURE_dbus_linked 1/g" $QT_ANDROID/include/QtCore/${QT_VERSION}/QtCore/private/qconfig_p.h \ | 159 | && sudo sed -i.bak "s/QT_FEATURE_dbus_linked -1/QT_FEATURE_dbus_linked 1/g" $QT_ANDROID/include/QtCore/${QT_VERSION}/QtCore/private/qconfig_p.h \ | ||
155 | && cd && git clone git://code.qt.io/qt/qtbase.git --single-branch --branch ${QT_TAG} && cd qtbase/src/dbus && qmake && make -j`nproc` && sudo make install && cd && rm -rf qtbase \ | 160 | && cd && git clone git://code.qt.io/qt/qtbase.git --single-branch --branch ${QT_TAG} && cd qtbase/src/dbus && qmake && make -j`nproc` && sudo make install && cd && rm -rf qtbase \ | ||
156 | && sudo ln -s /opt/nativetooling/bin/qdbusxml2cpp $QT_ANDROID/bin/ \ | 161 | && sudo ln -s /opt/nativetooling/bin/qdbusxml2cpp $QT_ANDROID/bin/ \ | ||
157 | && sudo ln -s /opt/nativetooling/bin/qdbuscpp2xml $QT_ANDROID/bin/ | 162 | && sudo ln -s /opt/nativetooling/bin/qdbuscpp2xml $QT_ANDROID/bin/ | ||
158 | 163 | | |||
159 | # needs to be after building qt, otherwise it breaks weirdly | 164 | # needs to be after building qt, otherwise it breaks weirdly | ||
160 | ENV QMAKESPEC android-clang | 165 | ENV QMAKESPEC android-clang | ||
161 | 166 | | |||
162 | COPY build-qt build-generic build-eigen build-poppler build-openssl target-from-manifest.py target-from-appdata.py skip /opt/helpers/ | 167 | COPY build-qt build-generic build-eigen build-poppler target-from-manifest.py target-from-appdata.py skip /opt/helpers/ | ||
163 | RUN /opt/helpers/build-cmake libintl-lite https://github.com/j-jorge/libintl-lite.git | 168 | RUN /opt/helpers/build-cmake libintl-lite https://github.com/j-jorge/libintl-lite.git | ||
164 | 169 | | |||
165 | USER user | | |||
166 | WORKDIR /home/user | | |||
167 | ENV HOME /home/user | | |||
168 | | ||||
169 | ENV LANG=en_US.UTF-8 | 170 | ENV LANG=en_US.UTF-8 | ||
170 | ENV LANGUAGE=en_US.UTF-8 | 171 | ENV LANGUAGE=en_US.UTF-8 | ||
171 | ENV LC_ALL=en_US.UTF-8 | 172 | ENV LC_ALL=en_US.UTF-8 |
Is there a particular reason why SDK level is still 21 instead of something recent-ish?