5959 matrix :
6060 version : [release, devel, trunk]
6161 arch : [aarch64, x86_64, armv7]
62+ ndk : [25c, 26b]
6263 env :
6364 ANDROID_API_LEVEL : 24
6465 steps :
8687 id : cache-sdk
8788 uses : actions/cache@v3
8889 with :
89- path : ~/swift-${{ matrix.version }}-android-${{ matrix.arch }}-*-sdk.tar.xz
90- key : ${{ matrix.version }}-${{ steps.version.outputs.latest }}-${{ matrix.arch }}-bump -sdk
90+ path : ~/swift-${{ matrix.version }}-android-${{ matrix.arch }}-*-ndk${{ matrix.ndk }}- sdk.tar.xz
91+ key : ${{ matrix.version }}-${{ steps.version.outputs.latest }}-${{ matrix.arch }}-ndk${{ matrix.ndk }} -sdk
9192 - name : Clone
9293 uses : actions/checkout@v3
9394 with :
@@ -106,21 +107,30 @@ jobs:
106107 SDK=`pwd`/$SDK_NAME
107108
108109 tar xf ~/$SWIFT_TAG-ubuntu22.04.tar.gz
109- git apply swift-android.patch swift-android-ci.patch
110+ git apply swift-android.patch swift-android-ci.patch swift-android-both-ndks.patch
111+ if [ ${{ matrix.version }} != 'release' ]; then
112+ git apply swift-android-arm.patch
113+ fi
114+ if [ ${{ matrix.ndk }} = '26b' ]; then
115+ NDK=$ANDROID_NDK_LATEST_HOME
116+ git apply swift-android-ndk26.patch
117+ else
118+ NDK=$ANDROID_NDK
119+ sed -i "s%#include <unistd%#include <signal.h>\n#include <unistd%" swift-corelibs-libdispatch/dispatch/dispatch.h
120+ sed -i "s%#include <unistd%#include <signal.h>\n#include <unistd%" llbuild/products/libllbuild/include/llbuild/buildsystem.h
121+ sed -i "s%#include <time%#include <signal.h>\n#include <time%" swift-tools-support-core/Sources/TSCclibc/include/indexstore_functions.h
122+ sed -i "s%#include <time%#include <signal.h>\n#include <time%" swift-crypto/Sources/CCryptoBoringSSL/include/CCryptoBoringSSL_asn1.h
123+ fi
110124 sed -i "s%/data/data/com.termux/files%$SDK%" $SDK/usr/lib/pkgconfig/sqlite3.pc
111125 sed -i "s%String(cString: getpass%\"fake\" //%" swiftpm/Sources/PackageRegistryTool/PackageRegistryTool+Auth.swift
112- sed -i "s%#include <unistd%#include <signal.h>\n#include <unistd%" swift-corelibs-libdispatch/dispatch/dispatch.h
113- sed -i "s%#include <unistd%#include <signal.h>\n#include <unistd%" llbuild/products/libllbuild/include/llbuild/buildsystem.h
114- sed -i "s%#include <time%#include <signal.h>\n#include <time%" swift-tools-support-core/Sources/TSCclibc/include/indexstore_functions.h
115- sed -i "s%#include <time%#include <signal.h>\n#include <time%" swift-crypto/Sources/CCryptoBoringSSL/include/CCryptoBoringSSL_asn1.h
116126
117- ./swift/utils/build-script -RA --skip-build-cmark --build-llvm=0 --android --android-ndk $ANDROID_NDK --android-arch ${{ matrix.arch }} --android-api-level $ANDROID_API_LEVEL --build-swift-tools=0 --native-swift-tools-path=`pwd`/$SWIFT_TAG-ubuntu22.04/usr/bin --native-clang-tools-path=`pwd`/$SWIFT_TAG-ubuntu22.04/usr/bin --cross-compile-hosts=android-${{ matrix.arch }} --cross-compile-deps-path=$SDK --skip-local-build --build-swift-static-stdlib --xctest --skip-early-swift-driver --install-swift --install-libdispatch --install-foundation --install-xctest --install-destdir=$SDK --swift-install-components='clang-resource-dir-symlink;license;stdlib;sdk-overlay' --cross-compile-append-host-target-to-destdir=False -b -p --install-llbuild --sourcekit-lsp --skip-early-swiftsyntax
127+ ./swift/utils/build-script -RA --skip-build-cmark --build-llvm=0 --android --android-ndk $NDK --android-arch ${{ matrix.arch }} --android-api-level $ANDROID_API_LEVEL --build-swift-tools=0 --native-swift-tools-path=`pwd`/$SWIFT_TAG-ubuntu22.04/usr/bin --native-clang-tools-path=`pwd`/$SWIFT_TAG-ubuntu22.04/usr/bin --cross-compile-hosts=android-${{ matrix.arch }} --cross-compile-deps-path=$SDK --skip-local-build --build-swift-static-stdlib --xctest --skip-early-swift-driver --install-swift --install-libdispatch --install-foundation --install-xctest --install-destdir=$SDK --swift-install-components='clang-resource-dir-symlink;license;stdlib;sdk-overlay' --cross-compile-append-host-target-to-destdir=False -b -p --install-llbuild --sourcekit-lsp --skip-early-swiftsyntax
118128
119- cp $ANDROID_NDK /toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/$(echo ${{ matrix.arch }} | sed "s/v7//")-linux-android*/libc++_shared.so $SDK/usr/lib
129+ cp $NDK /toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/$(echo ${{ matrix.arch }} | sed "s/v7//")-linux-android*/libc++_shared.so $SDK/usr/lib
120130 patchelf --set-rpath \$ORIGIN $SDK/usr/lib/swift/android/libdispatch.so
121131 patchelf --set-rpath \$ORIGIN/../..:\$ORIGIN $SDK/usr/lib/swift/android/lib[FXs]*.so
122132
123- tar cJf ~/$SDK_NAME.tar.xz $SDK_NAME
133+ tar cJf ~/${ SDK_NAME/-sdk/-ndk${{ matrix.ndk }}-sdk} .tar.xz $SDK_NAME
124134 rm -rf $SDK_NAME
125135 - name : Unpack ${{ matrix.version }} toolchain and SDK
126136 id : sdk-unpack
@@ -131,7 +141,7 @@ jobs:
131141 tar xf ~/${{ steps.version.outputs.tag }}-ubuntu22.04.tar.gz
132142 fi
133143
134- tar xf ~/swift-${{ matrix.version }}-android-${{ matrix.arch }}*-${ANDROID_API_LEVEL}- sdk.tar.xz
144+ tar xf ~/swift-${{ matrix.version }}-android-${{ matrix.arch }}*-sdk.tar.xz
135145 - name : Get Swift Argument Parser package
136146 uses : actions/checkout@v3
137147 with :
@@ -149,7 +159,9 @@ jobs:
149159 - name : Build Swift crypto package
150160 run : |
151161 cd swift-crypto
152- sed -i "s%#include <time%#include <signal.h>\n#include <time%" Sources/CCryptoBoringSSL/include/CCryptoBoringSSL_asn1.h
162+ if [ ${{ matrix.ndk }} = '25c' ]; then
163+ sed -i "s%#include <time%#include <signal.h>\n#include <time%" Sources/CCryptoBoringSSL/include/CCryptoBoringSSL_asn1.h
164+ fi
153165 sed -i "s%\\\\(testsDirectory)/.*Vectors%/data/local/tmp/pack/crypto-vectors%" Tests/CryptoTests/Utils/RFCVector.swift Tests/CryptoTests/Utils/Wycheproof.swift Tests/_CryptoExtrasTests/Utils/Wycheproof.swift
154166 ../sdk-config/${{ steps.version.outputs.tag }}-ubuntu22.04/usr/bin/swift build --build-tests --destination ../sdk-config/swift-${{ matrix.version }}-*-sdk/usr/swiftpm-android-${{ matrix.arch }}.json -Xlinker -rpath -Xlinker \$ORIGIN/lib/swift/android
155167 - name : Get Swift NIO package
@@ -160,7 +172,10 @@ jobs:
160172 - name : Build Swift NIO package
161173 run : |
162174 cd swift-nio
163- git apply ../sdk-config/swift-nio-disable-ecn-tests.patch
175+ git apply ../sdk-config/swift-nio-disable-ecn-tests.patch ../sdk-config/swift-nio-force-unwrap.patch
176+ if [ ${{ matrix.ndk }} = '26b' ]; then
177+ git apply ../sdk-config/swift-nio-ndk26.patch
178+ fi
164179 ../sdk-config/${{ steps.version.outputs.tag }}-ubuntu22.04/usr/bin/swift build --build-tests --destination ../sdk-config/swift-${{ matrix.version }}-*-sdk/usr/swiftpm-android-${{ matrix.arch }}.json -Xlinker -rpath -Xlinker \$ORIGIN/lib/swift/android
165180 - name : Get Swift Numerics package
166181 uses : actions/checkout@v3
@@ -180,6 +195,7 @@ jobs:
180195 run : |
181196 cd ss
182197 sed -i "s%/tmp%/data/local/tmp%" Tests/SystemTests/FileOperationsTest.swift
198+ git apply ../sdk-config/swift-system-ndk26.patch
183199 ../sdk-config/${{ steps.version.outputs.tag }}-ubuntu22.04/usr/bin/swift build --build-tests --enable-test-discovery --destination ../sdk-config/swift-${{ matrix.version }}-*-sdk/usr/swiftpm-android-${{ matrix.arch }}.json -Xlinker -rpath -Xlinker \$ORIGIN/lib/swift/android
184200 - name : Get Swift Collections package
185201 uses : actions/checkout@v3
@@ -205,6 +221,7 @@ jobs:
205221 run : |
206222 cd sns
207223 sed -i "s%url: .*swift-\(\w\+\)\.git.*$%path: \"../swift-\1\"),%g" Package.swift
224+ git apply ../sdk-config/swift-nio-ssh-ndk26.patch
208225 ../sdk-config/${{ steps.version.outputs.tag }}-ubuntu22.04/usr/bin/swift build --build-tests --destination ../sdk-config/swift-${{ matrix.version }}-*-sdk/usr/swiftpm-android-${{ matrix.arch }}.json -Xlinker -rpath -Xlinker \$ORIGIN/lib/swift/android
209226 - name : Get Swift NIO SSL package
210227 uses : actions/checkout@v3
@@ -214,7 +231,12 @@ jobs:
214231 - name : Build Swift NIO SSL package
215232 run : |
216233 cd snl
217- sed -i "s%#include <time%#include <signal.h>\n#include <time%" Sources/CNIOBoringSSL/include/CNIOBoringSSL_asn1.h
234+ git apply ../sdk-config/swift-nio-ssl-force-unwrap.patch
235+ if [ ${{ matrix.ndk }} = '26b' ]; then
236+ git apply ../sdk-config/swift-nio-ssl-ndk26.patch
237+ else
238+ sed -i "s%#include <time%#include <signal.h>\n#include <time%" Sources/CNIOBoringSSL/include/CNIOBoringSSL_asn1.h
239+ fi
218240 SWIFTCI_USE_LOCAL_DEPS=1 ../sdk-config/${{ steps.version.outputs.tag }}-ubuntu22.04/usr/bin/swift build --build-tests --destination ../sdk-config/swift-${{ matrix.version }}-*-sdk/usr/swiftpm-android-${{ matrix.arch }}.json -Xlinker -rpath -Xlinker \$ORIGIN/lib/swift/android
219241 - name : Get Yams package
220242 uses : actions/checkout@v3
@@ -260,7 +282,7 @@ jobs:
260282 - name : Put SDK and x86_64 tests in one directory to push to Android x86_64 emulator
261283 run : |
262284 mkdir pack
263- cp ~/swift-${{ matrix.version }}-android-${{ matrix.arch }}*-${ANDROID_API_LEVEL}- sdk.tar.xz pack
285+ cp ~/swift-${{ matrix.version }}-android-${{ matrix.arch }}*-sdk.tar.xz pack
264286
265287 if [ ${{ matrix.arch }} = 'x86_64' ]; then
266288 mkdir -p pack/lib/swift/android
@@ -295,7 +317,7 @@ jobs:
295317 - name : Upload test directory
296318 uses : actions/upload-artifact@v3
297319 with :
298- name : sdk-tests-${{ matrix.version }}-${{ matrix.arch }}
320+ name : sdk-tests-${{ matrix.version }}-${{ matrix.arch }}-ndk${{ matrix.ndk }}
299321 path : pack/
300322 run-tests-on-android-x86_64-emulator :
301323 runs-on : macos-latest
@@ -304,11 +326,12 @@ jobs:
304326 fail-fast : false
305327 matrix :
306328 version : [release, devel, trunk]
329+ ndk : [25c, 26b]
307330 steps :
308331 - name : Download test directory
309332 uses : actions/download-artifact@v3
310333 with :
311- name : sdk-tests-${{ matrix.version }}-x86_64
334+ name : sdk-tests-${{ matrix.version }}-x86_64-ndk${{ matrix.ndk }}
312335 path : pack
313336 - name : Run tests on Android x86_64 emulator
314337 uses : reactivecircus/android-emulator-runner@v2
0 commit comments