docker: add zipalign to support compiling Android apps in release mode
[nit.git] / misc / docker / full / Dockerfile
index 91c467b..db369df 100644 (file)
@@ -5,7 +5,8 @@ FROM nitlang/nit:latest
 MAINTAINER Jean Privat <jean@pryen.org>
 
 # Dependencies for more libs and tests
-RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+RUN dpkg --add-architecture i386 \
+       && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
                # Packages needed for lib/
                libcurl4-openssl-dev \
                libegl1-mesa-dev \
@@ -13,29 +14,62 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-ins
                libgles1-mesa-dev \
                libgles2-mesa-dev \
                libgtk-3-dev \
+               libgmp-dev \
                libncurses5-dev \
                libpq-dev \
+               libreadline-dev \
                libsdl-image1.2-dev \
                libsdl-ttf2.0-dev \
                libsdl1.2-dev \
                libsdl2-dev \
+               libsdl2-image-dev \
+               libsdl2-mixer-dev \
                libsqlite3-dev \
                libx11-dev \
                libxdg-basedir-dev \
                postgresql \
-               # Packages needed for platforms and FFI
+               # Packages needed for contrib, platforms and FFI
+               ant \
+               clang \
+               cmake \
                default-jdk \
+               file \
+               inkscape \
                libopenmpi-dev \
-               clang \
-               # TODO neo4j android emscripten test_glsl_validation
+               unzip \
+               zipalign \
+               # Android
+               libc6:i386 \
+               libstdc++6:i386 \
+               zlib1g:i386 \
+               # TODO neo4j emscripten test_glsl_validation
        && rm -rf /var/lib/apt/lists/*
 
-# Run tests
-RUN cd /root/nit/tests \
-       && ./testfull.sh || true \
-       && rm -rf out/ alt/*.nit \
-       && ccache -C
-# TODO: nitunits
+# Install android sdk/ndk
+RUN mkdir -p /opt \
+       && cd /opt \
+       # Android SDK
+       && curl https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -o android-sdk-linux.zip \
+       && unzip android-sdk-linux.zip -d android-sdk-linux \
+       && rm android-sdk-linux.zip \
+       && chmod -R a+X /opt \
+       && yes | android-sdk-linux/tools/bin/sdkmanager --licenses \
+       && android-sdk-linux/tools/bin/sdkmanager "build-tools;27.0.0" "cmake;3.6.4111459" ndk-bundle platform-tools tools
+
+# Download gradlew and bdwgc for Android
+RUN /nit/share/android-gradlew/gradlew \
+       && /nit/share/android-bdwgc/setup.sh
+
+# Install OpenGL validator
+RUN git clone https://github.com/KhronosGroup/glslang.git \
+       && mkdir -p glslang/build \
+       && cd glslang/build \
+       && cmake .. \
+       && make \
+       && make
 
-WORKDIR /root/nit
-ENTRYPOINT [ "bash" ]
+# Setup environment variables
+ENV ANDROID_HOME=/opt/android-sdk-linux/
+ENV JAVA_HOME=/usr/lib/jvm/default-java/
+ENV JNI_LIB_PATH=$JAVA_HOME/jre/lib/amd64/server/
+ENV LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server/