diff --git a/docker/Dockerfile.aarch64-linux-android b/docker/Dockerfile.aarch64-linux-android index 935716025..a4771986e 100644 --- a/docker/Dockerfile.aarch64-linux-android +++ b/docker/Dockerfile.aarch64-linux-android @@ -10,7 +10,7 @@ COPY xargo.sh / RUN /xargo.sh COPY android-ndk.sh / -RUN /android-ndk.sh arm64 21 +RUN /android-ndk.sh arm64 28 ENV PATH=$PATH:/android-ndk/bin COPY android-system.sh / @@ -19,7 +19,7 @@ RUN /android-system.sh arm64 COPY qemu.sh / RUN /qemu.sh aarch64 -RUN cp /android-ndk/sysroot/usr/lib/libz.so /system/lib/ +RUN cp /android-ndk/sysroot/usr/lib/aarch64-linux-android/28/libz.so /system/lib/ # Libz is distributed in the android ndk, but for some unknown reason it is not # found in the build process of some crates, so we explicit set the DEP_Z_ROOT diff --git a/docker/Dockerfile.arm-linux-androideabi b/docker/Dockerfile.arm-linux-androideabi index bc8ed9032..35ff0821d 100644 --- a/docker/Dockerfile.arm-linux-androideabi +++ b/docker/Dockerfile.arm-linux-androideabi @@ -10,7 +10,7 @@ COPY xargo.sh / RUN /xargo.sh COPY android-ndk.sh / -RUN /android-ndk.sh arm 21 +RUN /android-ndk.sh arm 28 ENV PATH=$PATH:/android-ndk/bin COPY android-system.sh / @@ -19,7 +19,7 @@ RUN /android-system.sh arm COPY qemu.sh / RUN /qemu.sh arm -RUN cp /android-ndk/sysroot/usr/lib/libz.so /system/lib/ +RUN cp /android-ndk/sysroot/usr/lib/arm-linux-androideabi/28/libz.so /system/lib/ # Libz is distributed in the android ndk, but for some unknown reason it is not # found in the build process of some crates, so we explicit set the DEP_Z_ROOT diff --git a/docker/Dockerfile.armv7-linux-androideabi b/docker/Dockerfile.armv7-linux-androideabi index 79a900da4..8fbeb41b5 100644 --- a/docker/Dockerfile.armv7-linux-androideabi +++ b/docker/Dockerfile.armv7-linux-androideabi @@ -10,7 +10,7 @@ COPY xargo.sh / RUN /xargo.sh COPY android-ndk.sh / -RUN /android-ndk.sh arm 21 +RUN /android-ndk.sh arm 28 ENV PATH=$PATH:/android-ndk/bin COPY android-system.sh / @@ -19,7 +19,7 @@ RUN /android-system.sh arm COPY qemu.sh / RUN /qemu.sh arm -RUN cp /android-ndk/sysroot/usr/lib/libz.so /system/lib/ +RUN cp /android-ndk/sysroot/usr/lib/arm-linux-androideabi/28/libz.so /system/lib/ # Libz is distributed in the android ndk, but for some unknown reason it is not # found in the build process of some crates, so we explicit set the DEP_Z_ROOT diff --git a/docker/Dockerfile.i686-linux-android b/docker/Dockerfile.i686-linux-android index be8f68e6c..04ae6777e 100644 --- a/docker/Dockerfile.i686-linux-android +++ b/docker/Dockerfile.i686-linux-android @@ -10,7 +10,7 @@ COPY xargo.sh / RUN /xargo.sh COPY android-ndk.sh / -RUN /android-ndk.sh x86 21 +RUN /android-ndk.sh x86 28 ENV PATH=$PATH:/android-ndk/bin COPY android-system.sh / @@ -26,7 +26,7 @@ RUN /android-system.sh x86 COPY qemu.sh / RUN /qemu.sh i386 -RUN cp /android-ndk/sysroot/usr/lib/libz.so /system/lib/ +RUN cp /android-ndk/sysroot/usr/lib/i686-linux-android/28/libz.so /system/lib/ # Libz is distributed in the android ndk, but for some unknown reason it is not # found in the build process of some crates, so we explicit set the DEP_Z_ROOT diff --git a/docker/Dockerfile.x86_64-linux-android b/docker/Dockerfile.x86_64-linux-android index b46e7a27a..5e72462d7 100644 --- a/docker/Dockerfile.x86_64-linux-android +++ b/docker/Dockerfile.x86_64-linux-android @@ -10,7 +10,7 @@ COPY xargo.sh / RUN /xargo.sh COPY android-ndk.sh / -RUN /android-ndk.sh x86_64 21 +RUN /android-ndk.sh x86_64 28 ENV PATH=$PATH:/android-ndk/bin COPY android-system.sh / @@ -20,7 +20,7 @@ RUN /android-system.sh x86_64 COPY qemu.sh / RUN /qemu.sh x86_64 -RUN cp /android-ndk/sysroot/usr/lib/libz.so /system/lib/ +RUN cp /android-ndk/sysroot/usr/lib/x86_64-linux-android/28/libz.so /system/lib/ # Libz is distributed in the android ndk, but for some unknown reason it is not # found in the build process of some crates, so we explicit set the DEP_Z_ROOT diff --git a/docker/android-ndk.sh b/docker/android-ndk.sh index 34182e718..b24d28e8a 100755 --- a/docker/android-ndk.sh +++ b/docker/android-ndk.sh @@ -3,7 +3,7 @@ set -x set -euo pipefail -NDK_URL=https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip +NDK_URL=https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip main() { local arch="${1}" \ diff --git a/docker/android-system.sh b/docker/android-system.sh index db1c43475..9abc65df3 100755 --- a/docker/android-system.sh +++ b/docker/android-system.sh @@ -15,10 +15,13 @@ main() { gcc-multilib git g++-multilib + libncurses5 + libtinfo5 make openssh-client python python3 + xz-utils ) # fake java and javac, it is not necessary for what we build, but the build @@ -57,41 +60,78 @@ EOF # this is the minimum set of modules that are need to build bionic # this was created by trial and error - python3 ./repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r1 + python3 ./repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r1 + + python3 ./repo sync -c art python3 ./repo sync -c bionic - python3 ./repo sync -c build + python3 ./repo sync -c build/make + python3 ./repo sync -c build/blueprint + python3 ./repo sync -c build/soong + python3 ./repo sync -c external/clang python3 ./repo sync -c external/compiler-rt + python3 ./repo sync -c external/elfutils python3 ./repo sync -c external/jemalloc python3 ./repo sync -c external/libcxx python3 ./repo sync -c external/libcxxabi - python3 ./repo sync -c external/libselinux + python3 ./repo sync -c external/libunwind + python3 ./repo sync -c external/libunwind_llvm + python3 ./repo sync -c external/llvm + python3 ./repo sync -c external/lzma python3 ./repo sync -c external/mksh - python3 ./repo sync -c external/openssl - python3 ./repo sync -c external/stlport - python3 ./repo sync -c prebuilts/clang/linux-x86/host/3.5 + python3 ./repo sync -c external/safe-iop + python3 ./repo sync -c external/valgrind + python3 ./repo sync -c external/vixl + python3 ./repo sync -c external/zlib + python3 ./repo sync -c frameworks/hardware/interfaces + python3 ./repo sync -c hardware/interfaces + python3 ./repo sync -c libnativehelper + python3 ./repo sync -c prebuilts/build-tools + python3 ./repo sync -c prebuilts/clang/host/linux-x86 + python3 ./repo sync -c prebuilts/clang-tools + #python3 ./repo sync -c prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 + #python3 ./repo sync -c prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 + python3 ./repo sync -c prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 + python3 ./repo sync -c prebuilts/go/linux-x86 + python3 ./repo sync -c prebuilts/misc + python3 ./repo sync -c prebuilts/sdk python3 ./repo sync -c system/core + python3 ./repo sync -c system/libhidl + python3 ./repo sync -c system/tools/hidl + case "${arch}" in arm) - python3 ./repo sync prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8 + python3 ./repo sync prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 ;; arm64) - python3 ./repo sync prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8 + python3 ./repo sync prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 python3 ./repo sync prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 ;; x86) - python3 ./repo sync prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8 + python3 ./repo sync prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9 ;; x86_64) - python3 ./repo sync prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8 + python3 ./repo sync prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9 ;; esac # avoid build tests - rm bionic/linker/tests/Android.mk bionic/tests/Android.mk bionic/benchmarks/Android.mk + rm bionic/linker/tests/Android.mk + rm bionic/tests/Android.mk + rm bionic/tests/Android.bp + rm bionic/benchmarks/Android.bp + rm bionic/tests/libs/Android.bp + rm bionic/tests/headers/Android.bp + rm bionic/tests/headers/posix/Android.bp + + sed -i -z -e 's/cc_test {.*}//g' bionic/libc/malloc_debug/Android.bp + sed -i -z -e 's/cc_test {.*}//g' bionic/libc/malloc_hooks/Android.bp + sed -i -z -e 's/cc_test_host {.*}//g' bionic/tools/relocation_packer/Android.bp + + export ALLOW_MISSING_DEPENDENCIES=true # patch the linker to avoid the error # FATAL: kernel did not supply AT_SECURE - sed -i -e 's/if (!kernel_supplied_AT_SECURE)/if (false)/g' bionic/linker/linker_environ.cpp + #sed -i -e 's/if (!kernel_supplied_AT_SECURE)/if (false)/g' bionic/linker/linker_environ.cpp set +u # shellcheck disable=SC1091 @@ -109,9 +149,9 @@ EOF fi # list from https://elinux.org/Android_toolbox - for tool in cat chmod chown cmp cp ctrlaltdel date dd df dmesg du getevent \ - getprop grep hd id ifconfig iftop insmod ioctl ionice kill ln log ls \ - lsmod lsof lsusb md5 mkdir mount mv nandread netstat newfs_msdos notify \ + for tool in cat chmod chown cmp cp ctrlaltdel date df dmesg du \ + hd id ifconfig iftop insmod ioctl ionice kill ln log ls \ + lsmod lsof lsusb md5 mkdir mount mv nandread netstat notify \ printenv ps reboot renice rm rmdir rmmod route schedtop sendevent \ setconsole setprop sleep smd start stop sync top touch umount \ uptime vmstat watchprops wipe; do