|
@@ -0,0 +1,80 @@
|
|
|
|
|
+FROM ubuntu
|
|
|
|
|
+
|
|
|
|
|
+RUN apt update
|
|
|
|
|
+RUN apt install -yq openjdk-19-jre-headless openjdk-19-jdk-headless
|
|
|
|
|
+RUN apt install -yq wget unzip cmake
|
|
|
|
|
+
|
|
|
|
|
+RUN cd /tmp/ && \
|
|
|
|
|
+ wget -O install-rustup.sh https://sh.rustup.rs && \
|
|
|
|
|
+ sh install-rustup.sh -yq --default-toolchain none && \
|
|
|
|
|
+ rm install-rustup.sh
|
|
|
|
|
+ENV PATH "${PATH}:/root/.cargo/bin/"
|
|
|
|
|
+RUN rustup default nightly
|
|
|
|
|
+RUN rustup target add aarch64-linux-android
|
|
|
|
|
+#RUN rustup target add armv7-linux-androideabi
|
|
|
|
|
+#RUN rustup target add i686-linux-android
|
|
|
|
|
+#RUN rustup target add x86_64-linux-android
|
|
|
|
|
+
|
|
|
|
|
+# Install Android SDK
|
|
|
|
|
+ENV ANDROID_HOME /opt/android-sdk/
|
|
|
|
|
+RUN mkdir ${ANDROID_HOME} && \
|
|
|
|
|
+ cd ${ANDROID_HOME} && \
|
|
|
|
|
+ wget -O cmdline-tools.zip -q https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip && \
|
|
|
|
|
+ unzip cmdline-tools.zip && \
|
|
|
|
|
+ rm cmdline-tools.zip
|
|
|
|
|
+# Required by SDKManager
|
|
|
|
|
+RUN cd ${ANDROID_HOME}/cmdline-tools/ && \
|
|
|
|
|
+ mkdir latest && \
|
|
|
|
|
+ mv bin lib latest
|
|
|
|
|
+RUN yes | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --licenses
|
|
|
|
|
+RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platform-tools"
|
|
|
|
|
+RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platforms;android-34"
|
|
|
|
|
+RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "ndk-bundle"
|
|
|
|
|
+RUN ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0"
|
|
|
|
|
+
|
|
|
|
|
+RUN echo '[target.aarch64-linux-android] \n\
|
|
|
|
|
+ar = "/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar" \n\
|
|
|
|
|
+linker = "/opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang" \n\
|
|
|
|
|
+' > /root/.cargo/config
|
|
|
|
|
+
|
|
|
|
|
+# Needed by the ring dependency
|
|
|
|
|
+ENV TARGET_AR /opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar
|
|
|
|
|
+ENV TARGET_CC /opt/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang
|
|
|
|
|
+
|
|
|
|
|
+# Make sqlite3
|
|
|
|
|
+RUN apt install -yq file
|
|
|
|
|
+RUN cd /tmp/ && \
|
|
|
|
|
+ wget -O sqlite.zip https://www.sqlite.org/2023/sqlite-amalgamation-3430000.zip && \
|
|
|
|
|
+ unzip sqlite.zip && \
|
|
|
|
|
+ rm sqlite.zip && \
|
|
|
|
|
+ mv sqlite* sqlite && \
|
|
|
|
|
+ cd sqlite && \
|
|
|
|
|
+ mkdir build && \
|
|
|
|
|
+ mv *.c *.h build/ && \
|
|
|
|
|
+ mkdir jni && \
|
|
|
|
|
+ echo '\
|
|
|
|
|
+APP_ABI := arm64-v8a \n\
|
|
|
|
|
+APP_CPPFLAGS += -fexceptions -frtti \n\
|
|
|
|
|
+APP_STL := c++_shared' > jni/Application.mk && \
|
|
|
|
|
+ echo '\
|
|
|
|
|
+LOCAL_PATH := $(call my-dir) \n\
|
|
|
|
|
+include $(CLEAR_VARS) \n\
|
|
|
|
|
+LOCAL_MODULE := sqlite3-a \n\
|
|
|
|
|
+LOCAL_MODULE_FILENAME := libsqlite3 \n\
|
|
|
|
|
+LOCAL_SRC_FILES := ../build/sqlite3.c \n\
|
|
|
|
|
+LOCAL_C_INCLUDES := ../build \n\
|
|
|
|
|
+LOCAL_EXPORT_C_INCLUDES := ../build \n\
|
|
|
|
|
+LOCAL_CFLAGS := -DSQLITE_THREADSAFE=1 \n\
|
|
|
|
|
+include $(BUILD_STATIC_LIBRARY)' > jni/Android.mk && \
|
|
|
|
|
+ /opt/android-sdk/ndk-bundle/ndk-build
|
|
|
|
|
+ENV RUSTFLAGS "-L/tmp/sqlite/obj/local/arm64-v8a/"
|
|
|
|
|
+
|
|
|
|
|
+# Bug in cargo
|
|
|
|
|
+# https://blog.rust-lang.org/2023/01/09/android-ndk-update-r25.html
|
|
|
|
|
+# https://github.com/rust-lang/rust/pull/85806#issuecomment-1096266946
|
|
|
|
|
+RUN find ${ANDROID_HOME} -name "libunwind.a" -execdir bash -c 'echo "INPUT(-lunwind)" > libgcc.a' \;
|
|
|
|
|
+
|
|
|
|
|
+# Make directory for user code
|
|
|
|
|
+RUN mkdir /root/src
|
|
|
|
|
+WORKDIR /root/src/bin/darkirc/
|
|
|
|
|
+
|