mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 16:32:18 +01:00 
			
		
		
		
	Merge branch 'android-28' into 'master'
ci: Add latest Android API level 28 See merge request GNOME/glib!141
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| image: registry.gitlab.gnome.org/gnome/glib/master:v4 | ||||
| image: registry.gitlab.gnome.org/gnome/glib/master:v5 | ||||
|  | ||||
| stages: | ||||
|   - build | ||||
| @@ -31,33 +31,36 @@ fedora-x86_64: | ||||
|       - "_build/meson-logs" | ||||
|       - "_coverage" | ||||
|  | ||||
| cross-android_api21_arm64: | ||||
| .cross-template: &cross-template | ||||
|   stage: build | ||||
|   except: | ||||
|     - tags | ||||
|   script: | ||||
|     # FIXME: add --werror | ||||
|     - meson --cross-file=/opt/cross_file_android_api21_arm64.txt -Diconv=gnu -Dinternal_pcre=true --buildtype debug _build | ||||
|     - ninja -C _build | ||||
|   artifacts: | ||||
|     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" | ||||
|     when: always | ||||
|     paths: | ||||
|       - "_build/meson-logs" | ||||
|  | ||||
| cross-android_api21_arm64: | ||||
|   <<: *cross-template | ||||
|   script: | ||||
|     # FIXME: add --werror | ||||
|     - meson --cross-file=/opt/cross_file_android_arm64_21.txt -Diconv=gnu -Dinternal_pcre=true --buildtype debug _build | ||||
|     - ninja -C _build | ||||
|  | ||||
| cross-android_api28_arm64: | ||||
|   <<: *cross-template | ||||
|   script: | ||||
|     # FIXME: add --werror | ||||
|     - meson --cross-file=/opt/cross_file_android_arm64_28.txt -Dinternal_pcre=true --buildtype debug _build | ||||
|     - ninja -C _build | ||||
|  | ||||
| cross-mingw64: | ||||
|   stage: build | ||||
|   except: | ||||
|     - tags | ||||
|   <<: *cross-template | ||||
|   script: | ||||
|     # FIXME: Add --werror | ||||
|     - meson --cross-file=/opt/cross_file_mingw64.txt --buildtype debug _build | ||||
|     - ninja -C _build | ||||
|   artifacts: | ||||
|     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}" | ||||
|     when: always | ||||
|     paths: | ||||
|       - "_build/meson-logs" | ||||
|  | ||||
| msys2-mingw32: | ||||
|   stage: build | ||||
|   | ||||
| @@ -25,6 +25,7 @@ RUN dnf -y install \ | ||||
|     mingw64-gettext \ | ||||
|     mingw64-libffi \ | ||||
|     mingw64-zlib \ | ||||
|     ncurses-compat-libs \ | ||||
|     ninja-build \ | ||||
|     pcre-devel \ | ||||
|     python3 \ | ||||
| @@ -36,8 +37,14 @@ RUN dnf -y install \ | ||||
|     zlib-devel \ | ||||
|  && dnf clean all | ||||
|  | ||||
| COPY setup-android-ndk.sh . | ||||
| RUN ./setup-android-ndk.sh | ||||
| WORKDIR /opt | ||||
| ENV ANDROID_NDK_PATH /opt/android-ndk | ||||
| COPY android-download-ndk.sh . | ||||
| RUN ./android-download-ndk.sh | ||||
| COPY android-setup-env.sh . | ||||
| RUN ./android-setup-env.sh arm64 21 | ||||
| RUN ./android-setup-env.sh arm64 28 | ||||
| RUN rm -rf $ANDROID_NDK_PATH | ||||
|  | ||||
| COPY cross_file_mingw64.txt /opt | ||||
|  | ||||
|   | ||||
							
								
								
									
										31
									
								
								.gitlab-ci/android-download-ndk.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								.gitlab-ci/android-download-ndk.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # | ||||
| # Copyright 2018 Collabora ltd. | ||||
| # | ||||
| # This library is free software; you can redistribute it and/or | ||||
| # modify it under the terms of the GNU Lesser General Public | ||||
| # License as published by the Free Software Foundation; either | ||||
| # version 2.1 of the License, or (at your option) any later version. | ||||
| # | ||||
| # This library is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| # Lesser General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public | ||||
| # License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # Author: Xavier Claessens <xavier.claessens@collabora.com> | ||||
| # | ||||
|  | ||||
| set -e | ||||
|  | ||||
| # Download Android NDK | ||||
| ANDROID_NDK_VERSION="r17b" | ||||
| ANDROID_NDK_SHA512="062fac12f747730f5563995089a8b4abab683fbbc621aa8582fdf35fe327daee5d69ed2437af257c10ec4ef54ecd3805a8f134a1400eb8f34ee76f55c8dc9ae9" | ||||
| wget --quiet https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip | ||||
| echo "$ANDROID_NDK_SHA512  android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip" | sha512sum -c | ||||
| unzip android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip | ||||
| rm android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip | ||||
| mv android-ndk-$ANDROID_NDK_VERSION $ANDROID_NDK_PATH | ||||
							
								
								
									
										100
									
								
								.gitlab-ci/android-setup-env.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										100
									
								
								.gitlab-ci/android-setup-env.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # | ||||
| # Copyright 2018 Collabora ltd. | ||||
| # | ||||
| # This library is free software; you can redistribute it and/or | ||||
| # modify it under the terms of the GNU Lesser General Public | ||||
| # License as published by the Free Software Foundation; either | ||||
| # version 2.1 of the License, or (at your option) any later version. | ||||
| # | ||||
| # This library is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| # Lesser General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public | ||||
| # License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # Author: Xavier Claessens <xavier.claessens@collabora.com> | ||||
| # | ||||
|  | ||||
| set -e | ||||
|  | ||||
| arch=$1 | ||||
| api=$2 | ||||
| toolchain_path=$(pwd)/android-toolchain-$arch-$api | ||||
| prefix_path=$(pwd)/android-$arch-$api | ||||
|  | ||||
| # Create standalone toolchains | ||||
| $ANDROID_NDK_PATH/build/tools/make_standalone_toolchain.py --arch $arch --api $api --install-dir $toolchain_path | ||||
|  | ||||
| target_host=aarch64-linux-android | ||||
| export AR=$target_host-ar | ||||
| export AS=$target_host-clang | ||||
| export CC=$target_host-clang | ||||
| export CXX=$target_host-clang++ | ||||
| export LD=$target_host-ld | ||||
| export STRIP=$target_host-strip | ||||
| export PATH=$PATH:$toolchain_path/bin | ||||
|  | ||||
| # Cross build libiconv when using API level <= 28. | ||||
| # Newer Android has it in its libc already. | ||||
| if [ "$api" -lt "28" ]; then | ||||
|   wget --quiet http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz | ||||
|   echo "1233fe3ca09341b53354fd4bfe342a7589181145a1232c9919583a8c9979636855839049f3406f253a9d9829908816bb71fd6d34dd544ba290d6f04251376b1a  libiconv-1.15.tar.gz" | sha512sum -c | ||||
|   tar xzf libiconv-1.15.tar.gz | ||||
|   pushd libiconv-1.15 | ||||
|   ./configure --host=$target_host --prefix=$prefix_path  --libdir=$prefix_path/lib64 | ||||
|   make | ||||
|   make install | ||||
|   popd | ||||
|   rm libiconv-1.15.tar.gz | ||||
|   rm -r libiconv-1.15 | ||||
| fi | ||||
|  | ||||
| # Cross build libffi | ||||
| wget --quiet https://github.com/libffi/libffi/releases/download/v3.3-rc0/libffi-3.3-rc0.tar.gz | ||||
| echo "e6e695d32cd6eb7d65983f32986fccdfc786a593d2ea18af30ce741f58cfa1eb264b1a8d09df5084cb916001aea15187b005c2149a0620a44397a4453b6137d4  libffi-3.3-rc0.tar.gz" | sha512sum -c | ||||
| tar xzf libffi-3.3-rc0.tar.gz | ||||
| pushd libffi-3.3-rc0 | ||||
| ./configure --host=$target_host --prefix=$prefix_path --libdir=$prefix_path/lib64 | ||||
| make | ||||
| make install | ||||
| popd | ||||
| rm libffi-3.3-rc0.tar.gz | ||||
| rm -r libffi-3.3-rc0 | ||||
|  | ||||
| # Create a pkg-config wrapper that won't pick fedora libraries | ||||
| mkdir -p $prefix_path/bin | ||||
| export PKG_CONFIG=$prefix_path/bin/pkg-config | ||||
| cat > $PKG_CONFIG <<- EOM | ||||
| #!/bin/sh | ||||
| SYSROOT=${prefix_path} | ||||
| export PKG_CONFIG_DIR= | ||||
| export PKG_CONFIG_LIBDIR=\${SYSROOT}/lib64/pkgconfig | ||||
| export PKG_CONFIG_SYSROOT_DIR=\${SYSROOT} | ||||
| exec pkg-config "\$@" | ||||
| EOM | ||||
| chmod +x $PKG_CONFIG | ||||
|  | ||||
| # Create a cross file that can be passed to meson | ||||
| cat > cross_file_android_${arch}_${api}.txt <<- EOM | ||||
| [host_machine] | ||||
| system = 'android' | ||||
| cpu_family = 'arm64' | ||||
| cpu = 'arm64' | ||||
| endian = 'little' | ||||
|  | ||||
| [properties] | ||||
| c_args = ['-I${prefix_path}/include'] | ||||
| c_link_args = ['-L${prefix_path}/lib64', | ||||
|                '-fuse-ld=gold'] | ||||
|  | ||||
| [binaries] | ||||
| c = '${toolchain_path}/bin/${CC}' | ||||
| cpp = '${toolchain_path}/bin/${CXX}' | ||||
| ar = '${toolchain_path}/bin/${AR}' | ||||
| strip = '${toolchain_path}/bin/${STRIP}' | ||||
| pkgconfig = '${PKG_CONFIG}' | ||||
| EOM | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| set -e | ||||
|  | ||||
| TAG="registry.gitlab.gnome.org/gnome/glib/master:v4" | ||||
| TAG="registry.gitlab.gnome.org/gnome/glib/master:v5" | ||||
|  | ||||
| docker build --build-arg HOST_USER_ID="$UID" --tag "${TAG}" \ | ||||
|     --file "Dockerfile" . | ||||
|   | ||||
| @@ -1,108 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # | ||||
| # Copyright 2018 Collabora ltd. | ||||
| # | ||||
| # This library is free software; you can redistribute it and/or | ||||
| # modify it under the terms of the GNU Lesser General Public | ||||
| # License as published by the Free Software Foundation; either | ||||
| # version 2.1 of the License, or (at your option) any later version. | ||||
| # | ||||
| # This library is distributed in the hope that it will be useful, | ||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| # Lesser General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public | ||||
| # License along with this library; if not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # Author: Xavier Claessens <xavier.claessens@collabora.com> | ||||
| # | ||||
|  | ||||
| set -e | ||||
|  | ||||
| cd /opt | ||||
|  | ||||
| # Download Android NDK | ||||
| ANDROID_NDK_VERSION="r17b" | ||||
| ANDROID_NDK_SHA512="062fac12f747730f5563995089a8b4abab683fbbc621aa8582fdf35fe327daee5d69ed2437af257c10ec4ef54ecd3805a8f134a1400eb8f34ee76f55c8dc9ae9" | ||||
| wget --quiet https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip | ||||
| echo "$ANDROID_NDK_SHA512  android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip" | sha512sum -c | ||||
| unzip android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip | ||||
| rm android-ndk-$ANDROID_NDK_VERSION-linux-x86_64.zip | ||||
|  | ||||
| # Setup cross build env | ||||
| export ANDROID_HOST=aarch64-linux-android | ||||
| export ANDROID_BUILD=linux-x86_64 | ||||
| export ANDROID_ARCH=arm64 | ||||
| export ANDROID_NDK=/opt/android-ndk-$ANDROID_NDK_VERSION | ||||
| export ANDROID_VERSION=21 | ||||
| export ANDROID_TOOLCHAIN_VERSION=4.9 | ||||
| export ANDROID_SYSROOT=$ANDROID_NDK/platforms/android-$ANDROID_VERSION/arch-$ANDROID_ARCH | ||||
| export ANDROID_PREBUILT=$ANDROID_NDK/toolchains/$ANDROID_HOST-$ANDROID_TOOLCHAIN_VERSION/prebuilt/$ANDROID_BUILD/bin | ||||
| export CPPFLAGS="--sysroot=$ANDROID_SYSROOT -isystem $ANDROID_NDK/sysroot/usr/include/  -isystem $ANDROID_NDK/sysroot/usr/include/$ANDROID_HOST" | ||||
| export CFLAGS="$CPPFLAGS -D__ANDROID_API__=$ANDROID_VERSION" | ||||
| export AR=$ANDROID_HOST-ar | ||||
| export RANLIB=$ANDROID_HOST-ranlib | ||||
| export CPP=$ANDROID_HOST-cpp | ||||
| export PATH=$ANDROID_PREBUILT:$PATH | ||||
|  | ||||
| # Cross build libiconv | ||||
| wget --quiet http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz | ||||
| echo "1233fe3ca09341b53354fd4bfe342a7589181145a1232c9919583a8c9979636855839049f3406f253a9d9829908816bb71fd6d34dd544ba290d6f04251376b1a  libiconv-1.15.tar.gz" | sha512sum -c | ||||
| tar xzf libiconv-1.15.tar.gz | ||||
| rm libiconv-1.15.tar.gz | ||||
| pushd libiconv-1.15 | ||||
| ./configure --host=$ANDROID_HOST --prefix=/opt/$ANDROID_HOST  --libdir=/opt/$ANDROID_HOST/lib64 | ||||
| make | ||||
| make install | ||||
| popd | ||||
|  | ||||
| # Cross build libffi | ||||
| wget --quiet https://github.com/libffi/libffi/releases/download/v3.3-rc0/libffi-3.3-rc0.tar.gz | ||||
| echo "e6e695d32cd6eb7d65983f32986fccdfc786a593d2ea18af30ce741f58cfa1eb264b1a8d09df5084cb916001aea15187b005c2149a0620a44397a4453b6137d4  libffi-3.3-rc0.tar.gz" | sha512sum -c | ||||
| tar xzf libffi-3.3-rc0.tar.gz | ||||
| rm libffi-3.3-rc0.tar.gz | ||||
| pushd libffi-3.3-rc0 | ||||
| ./configure --host=$ANDROID_HOST --prefix=/opt/$ANDROID_HOST --libdir=/opt/$ANDROID_HOST/lib64 | ||||
| make | ||||
| make install | ||||
| popd | ||||
|  | ||||
| # Create a pkg-config wrapper that won't pick fedora libraries | ||||
| export PKG_CONFIG=/opt/${ANDROID_HOST}/bin/pkg-config | ||||
| cat > $PKG_CONFIG <<- EOM | ||||
| #!/bin/sh | ||||
| SYSROOT=/opt/${ANDROID_HOST} | ||||
| export PKG_CONFIG_DIR= | ||||
| export PKG_CONFIG_LIBDIR=\${SYSROOT}/lib64/pkgconfig | ||||
| export PKG_CONFIG_SYSROOT_DIR=\${SYSROOT} | ||||
| exec pkg-config "\$@" | ||||
| EOM | ||||
| chmod +x $PKG_CONFIG | ||||
|  | ||||
| # Create a cross file that can be passed to meson | ||||
| cat > /opt/cross_file_android_api21_arm64.txt <<- EOM | ||||
| [host_machine] | ||||
| system = 'android' | ||||
| cpu_family = 'arm64' | ||||
| cpu = 'arm64' | ||||
| endian = 'little' | ||||
|  | ||||
| [properties] | ||||
| c_args = ['--sysroot=${ANDROID_SYSROOT}', | ||||
|           '-isystem', '/opt/${ANDROID_HOST}/include', | ||||
|           '-isystem', '${ANDROID_NDK}/sysroot/usr/include/', | ||||
|           '-isystem', '${ANDROID_NDK}/sysroot/usr/include/${ANDROID_HOST}', | ||||
|           '-D__ANDROID_API__=${ANDROID_VERSION}'] | ||||
| c_link_args = ['--sysroot=${ANDROID_SYSROOT}', | ||||
|                '-L/opt/${ANDROID_HOST}/lib64', | ||||
|                '-fuse-ld=gold'] | ||||
|  | ||||
| [binaries] | ||||
| c = '${ANDROID_PREBUILT}/${ANDROID_HOST}-gcc' | ||||
| cpp = '${ANDROID_PREBUILT}/${ANDROID_HOST}-g++' | ||||
| ar = '${ANDROID_PREBUILT}/${ANDROID_HOST}-ar' | ||||
| strip = '${ANDROID_PREBUILT}/${ANDROID_HOST}-strip' | ||||
| pkgconfig = '${PKG_CONFIG}' | ||||
| EOM | ||||
		Reference in New Issue
	
	Block a user