ci/android: move sdk version and ndk to a job variable
authorHelen Koike <helen.koike@collabora.com>
Fri, 2 Dec 2022 14:30:44 +0000 (11:30 -0300)
committerHelen Koike <helen.koike@collabora.com>
Wed, 25 Jan 2023 11:58:25 +0000 (08:58 -0300)
make it easier to update sdk version and ndk without the need to make
changes all over the code.

Suggested-by: David Heidelberg <david.heidelberg@collabora.com>
Signed-off-by: Helen Koike <helen.koike@collabora.com>
Reviewed-by: Sergi Blanch Torné <sergi.blanch.torne@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20019>

.gitlab-ci/container/create-android-cross-file.sh
.gitlab-ci/container/create-android-ndk-pc.sh
.gitlab-ci/container/debian/android_build.sh
.gitlab-ci/container/gitlab-ci.yml

index 303b6ae..98ab89a 100644 (file)
@@ -5,9 +5,10 @@ arch=$2
 cpu_family=$3
 cpu=$4
 cross_file="/cross_file-$arch.txt"
+sdk_version=$5
 
 # armv7 has the toolchain split between two names.
-arch2=${5:-$2}
+arch2=${6:-$2}
 
 # Note that we disable C++ exceptions, because Mesa doesn't use exceptions,
 # and allowing it in code generation means we get unwind symbols that break
@@ -16,8 +17,8 @@ arch2=${5:-$2}
 cat > "$cross_file" <<EOF
 [binaries]
 ar = '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/$arch-ar'
-c = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}29-clang', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables']
-cpp = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}29-clang++', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables']
+c = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}${sdk_version}-clang', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables']
+cpp = ['ccache', '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch2}${sdk_version}-clang++', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables']
 c_ld = 'lld'
 cpp_ld = 'lld'
 strip = '$ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/$arch-strip'
index 91987b5..69a9289 100644 (file)
@@ -10,6 +10,7 @@ pc="$2"
 cflags="$3"
 libs="$4"
 version="$5"
+sdk_version="$6"
 
 sysroot=$ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot
 
@@ -24,7 +25,7 @@ for arch in \
     cat >$pcdir/$pc <<EOF
 prefix=$sysroot
 exec_prefix=$sysroot
-libdir=$sysroot/usr/lib/$arch/29
+libdir=$sysroot/usr/lib/$arch/$sdk_version
 sharedlibdir=$sysroot/usr/lib/$arch
 includedir=$sysroot/usr/include
 
@@ -33,7 +34,7 @@ Description: zlib compression library
 Version: $version
 
 Requires:
-Libs: -L$sysroot/usr/lib/$arch/29 $libs
+Libs: -L$sysroot/usr/lib/$arch/$sdk_version $libs
 Cflags: -I$sysroot/usr/include $cflags
 EOF
 done
index 5198076..88c7f1f 100644 (file)
@@ -12,23 +12,23 @@ EPHEMERAL="\
 apt-get install -y --no-remove $EPHEMERAL
 
 # Fetch the NDK and extract just the toolchain we want.
-ndk=android-ndk-r21d
+ndk=$ANDROID_NDK
 curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
   -o $ndk.zip https://dl.google.com/android/repository/$ndk-linux-x86_64.zip
 unzip -d / $ndk.zip "$ndk/toolchains/llvm/*"
 rm $ndk.zip
 # Since it was packed as a zip file, symlinks/hardlinks got turned into
 # duplicate files.  Turn them into hardlinks to save on container space.
-rdfind -makehardlinks true -makeresultsfile false /android-ndk-r21d/
+rdfind -makehardlinks true -makeresultsfile false /${ndk}/
 # Drop some large tools we won't use in this build.
-find /android-ndk-r21d/ -type f | grep -E -i "clang-check|clang-tidy|lldb" | xargs rm -f
+find /${ndk}/ -type f | grep -E -i "clang-check|clang-tidy|lldb" | xargs rm -f
 
-sh .gitlab-ci/container/create-android-ndk-pc.sh /$ndk zlib.pc "" "-lz" "1.2.3"
+sh .gitlab-ci/container/create-android-ndk-pc.sh /$ndk zlib.pc "" "-lz" "1.2.3" $ANDROID_SDK_VERSION
 
-sh .gitlab-ci/container/create-android-cross-file.sh /$ndk x86_64-linux-android x86_64 x86_64
-sh .gitlab-ci/container/create-android-cross-file.sh /$ndk i686-linux-android x86 x86
-sh .gitlab-ci/container/create-android-cross-file.sh /$ndk aarch64-linux-android arm armv8
-sh .gitlab-ci/container/create-android-cross-file.sh /$ndk arm-linux-androideabi arm armv7hl armv7a-linux-androideabi
+sh .gitlab-ci/container/create-android-cross-file.sh /$ndk x86_64-linux-android x86_64 x86_64 $ANDROID_SDK_VERSION
+sh .gitlab-ci/container/create-android-cross-file.sh /$ndk i686-linux-android x86 x86 $ANDROID_SDK_VERSION
+sh .gitlab-ci/container/create-android-cross-file.sh /$ndk aarch64-linux-android arm armv8 $ANDROID_SDK_VERSION
+sh .gitlab-ci/container/create-android-cross-file.sh /$ndk arm-linux-androideabi arm armv7hl $ANDROID_SDK_VERSION armv7a-linux-androideabi
 
 # Not using build-libdrm.sh because we don't want its cleanup after building
 # each arch.  Fetch and extract now.
@@ -90,11 +90,11 @@ for arch in \
        ccarch=armv7a-linux-androideabi
     fi
 
-    export CC=/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch}-ar
-    export CC=/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/${ccarch}29-clang
-    export CXX=/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/${ccarch}29-clang++
-    export LD=/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch}-ld
-    export RANLIB=/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch}-ranlib
+    export CC=/${ndk}/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch}-ar
+    export CC=/${ndk}/toolchains/llvm/prebuilt/linux-x86_64/bin/${ccarch}${ANDROID_SDK_VERSION}-clang
+    export CXX=/${ndk}/toolchains/llvm/prebuilt/linux-x86_64/bin/${ccarch}${ANDROID_SDK_VERSION}-clang++
+    export LD=/${ndk}/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch}-ld
+    export RANLIB=/${ndk}/toolchains/llvm/prebuilt/linux-x86_64/bin/${arch}-ranlib
 
     # The configure script doesn't know about android, but doesn't really use the host anyway it
     # seems
index fd89ab4..21bbe6c 100644 (file)
@@ -174,6 +174,8 @@ debian/android_build:
     - .use-debian/x86_build-base
   variables:
     MESA_IMAGE_TAG: &debian-android_build ${DEBIAN_BUILD_TAG}
+    ANDROID_SDK_VERSION: 29
+    ANDROID_NDK: android-ndk-r21d
 
 .use-debian/android_build:
   extends: