14
14
devel-version : ${{ steps.check.outputs.devel-tag }}
15
15
trunk-version : ${{ steps.check.outputs.trunk-tag }}
16
16
steps :
17
+ - name : Get cached NDK
18
+ id : cache-ndk
19
+ uses : actions/cache@v2
20
+ with :
21
+ path : ~/android-ndk-r23-linux.zip
22
+ key : ndk-23
23
+ - name : Get NDK 23 if not cached
24
+ if : ${{ steps.cache-ndk.outputs.cache-hit != 'true' }}
25
+ run : wget -q -O ~/android-ndk-r23-linux.zip https://dl.google.com/android/repository/android-ndk-r23-linux.zip
17
26
- name : Check for latest Swift ${{ matrix.version }} toolchain
18
27
id : check
19
28
run : |
26
35
SWIFT_TAG="swift-5.5-DEVELOPMENT-SNAPSHOT-${LATEST_TOOLCHAIN_VERSION}-a"
27
36
echo "::set-output name=devel-tag::$SWIFT_TAG"
28
37
else
29
- LATEST_TOOLCHAIN_VERSION=$(curl -sL https://github.com/apple/swift/releases | grep -m1 swift-DEV | cut -d- -f4-6)
38
+ # LATEST_TOOLCHAIN_VERSION=$(curl -sL https://github.com/apple/swift/releases | grep -m1 swift-DEV | cut -d- -f4-6)
39
+ # trunk toolchain is broken right now, so pin to Aug. 16
40
+ LATEST_TOOLCHAIN_VERSION="2021-08-16"
30
41
SWIFT_TAG="swift-DEVELOPMENT-SNAPSHOT-${LATEST_TOOLCHAIN_VERSION}-a"
31
42
echo "::set-output name=trunk-tag::$SWIFT_TAG"
32
43
fi
@@ -82,12 +93,18 @@ jobs:
82
93
with :
83
94
path : ~/${{ steps.version.outputs.tag }}-ubuntu20.04.tar.gz
84
95
key : ${{ steps.version.outputs.tag }}-toolchain
96
+ - name : Get cached NDK
97
+ id : cache-ndk
98
+ uses : actions/cache@v2
99
+ with :
100
+ path : ~/android-ndk-r23-linux.zip
101
+ key : ndk-23
85
102
- name : Get cached SDK
86
103
id : cache-sdk
87
104
uses : actions/cache@v2
88
105
with :
89
106
path : ~/swift-${{ matrix.version }}*-android-${{ matrix.arch }}-*-sdk.tar.xz
90
- key : ${{ matrix.version }}-${{ steps.version.outputs.latest }}-${{ matrix.arch }}-sdk
107
+ key : ${{ matrix.version }}-${{ steps.version.outputs.latest }}-${{ matrix.arch }}-23- sdk
91
108
- name : Clone
92
109
uses : actions/checkout@v2
93
110
with :
@@ -106,29 +123,46 @@ jobs:
106
123
SDK=`pwd`/$SDK_NAME
107
124
108
125
tar xf ~/$SWIFT_TAG-ubuntu20.04.tar.gz
126
+ unzip -q ~/android-ndk-r23-linux.zip
127
+ NDK=`pwd`/android-ndk-r23
109
128
110
- if [ ${{ matrix.version }} = 'trunk' ]; then
129
+ if [ ${{ matrix.version }} = '5.4' ]; then
130
+ sed -i "s%abort(void) %abort(void);// %" android-ndk-r23/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/stdlib.h
131
+ elif [ ${{ matrix.version }} = 'trunk' ]; then
111
132
EXTRA_FLAGS="--skip-early-swift-driver"
112
133
fi
113
134
114
- ./swift/utils/build-script -RA --skip-build-cmark --build-llvm=0 --android --android-ndk $ANDROID_NDK_HOME --android-arch ${{ matrix.arch }} --android-api-level $ANDROID_API_LEVEL --android-icu-uc $SDK/usr/lib/libicuuc.so --android-icu-uc-include $SDK/usr/include --android-icu-i18n $SDK/usr/lib/libicui18n.so --android-icu-i18n-include $SDK/usr/include --android-icu-data $SDK/usr/lib/libicudata.so --build-swift-tools=0 --native-swift-tools-path=`pwd`/$SWIFT_TAG-ubuntu20.04/usr/bin --native-clang-tools-path=$ANDROID_NDK_HOME /toolchains/llvm/prebuilt/linux-x86_64/bin --cross-compile-hosts=android-${{ matrix.arch }} --cross-compile-deps-path=$SDK --skip-local-build --xctest --install-swift --install-libdispatch --install-foundation --install-xctest --install-destdir=$SDK --swift-install-components='clang-resource-dir-symlink;license;stdlib;sdk-overlay' $EXTRA_FLAGS
135
+ ./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 --android-icu-uc $SDK/usr/lib/libicuuc.so --android-icu-uc-include $SDK/usr/include --android-icu-i18n $SDK/usr/lib/libicui18n.so --android-icu-i18n-include $SDK/usr/include --android-icu-data $SDK/usr/lib/libicudata.so --build-swift-tools=0 --native-swift-tools-path=`pwd`/$SWIFT_TAG-ubuntu20.04/usr/bin --native-clang-tools-path=$NDK /toolchains/llvm/prebuilt/linux-x86_64/bin --cross-compile-hosts=android-${{ matrix.arch }} --cross-compile-deps-path=$SDK --skip-local-build --xctest --install-swift --install-libdispatch --install-foundation --install-xctest --install-destdir=$SDK --swift-install-components='clang-resource-dir-symlink;license;stdlib;sdk-overlay' $EXTRA_FLAGS
115
136
116
137
patchelf --set-rpath \$ORIGIN/../..:\$ORIGIN $SDK/usr/lib/swift/android/lib*.so
117
138
118
139
tar cJf ~/$SDK_NAME.tar.xz $SDK_NAME
119
- rm -rf $SDK_NAME
120
140
- name : Patch SPM ${{ matrix.version }} config
121
141
run : |
122
142
cd sdk-config
123
143
124
- tar xf ~/${{ steps.version.outputs.tag }}-ubuntu20.04.tar.gz
144
+ if [ ! -d android-ndk-r23 ]; then
145
+ unzip -q ~/android-ndk-r23-linux.zip
146
+ ls
147
+ if [ ${{ matrix.version }} = '5.4' ]; then
148
+ sed -i "s%abort(void) %abort(void);// %" android-ndk-r23/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/stdlib.h
149
+ fi
150
+ fi
151
+
152
+ if [ ! -d ${{ steps.version.outputs.tag }}-ubuntu20.04 ]; then
153
+ tar xf ~/${{ steps.version.outputs.tag }}-ubuntu20.04.tar.gz
154
+ ls
155
+ fi
125
156
sed -i "s%/home/butta/swift-5.4.2-RELEASE%`pwd`/${{ steps.version.outputs.tag }}%" android-${{ matrix.arch }}.json
126
157
127
- tar xf ~/swift-${{ matrix.version }}*-android-${{ matrix.arch }}*-${ANDROID_API_LEVEL}-sdk.tar.xz
128
158
SDK_NAME=$(ls | grep swift-${{ matrix.version }}.*-sdk)
159
+ if [[ $SDK_NAME = "" ]]; then
160
+ tar xf ~/swift-${{ matrix.version }}*-android-${{ matrix.arch }}*-${ANDROID_API_LEVEL}-sdk.tar.xz
161
+ ls
162
+ fi
129
163
sed -i "s%/home/butta/swift-5.4-android-${{ matrix.arch }}-${ANDROID_API_LEVEL}-sdk%`pwd`/${SDK_NAME}%" android-${{ matrix.arch }}.json
130
164
131
- sed -i "s%/home/butta/src/android-ndk-r21e%${ANDROID_NDK_HOME} %" android-${{ matrix.arch }}.json
165
+ sed -i "s%/home/butta/src/android-ndk-r21e%`pwd`/android-ndk-r23 %" android-${{ matrix.arch }}.json
132
166
- name : Get Swift Argument Parser package
133
167
uses : actions/checkout@v2
134
168
with :
@@ -251,6 +285,13 @@ jobs:
251
285
run : |
252
286
mkdir -p pack/lib/swift/android
253
287
cp swift-argument-parser/.build/x86_64-unknown-linux-android/debug/{math,repeat,roll,swift-argument-parserPackageTests.xctest} pack
288
+
289
+ wget -q https://raw.githubusercontent.com/termux/termux-elf-cleaner/master/termux-elf-cleaner.cpp
290
+ wget -q https://raw.githubusercontent.com/termux/termux-elf-cleaner/master/elf.h
291
+ clang -D__ANDROID_API__=$ANDROID_API_LEVEL -o termux-elf-cleaner termux-elf-cleaner.cpp
292
+
293
+ ./termux-elf-cleaner pack/{math,repeat,roll} || true
294
+
254
295
cp swift-crypto/.build/x86_64-unknown-linux-android/debug/swift-cryptoPackageTests.xctest pack
255
296
if [ ${{ matrix.version }} = '5.4' ]; then
256
297
cp swift-nio/.build/x86_64-unknown-linux-android/debug/swift-nioPackageTests.xctest pack
@@ -268,7 +309,7 @@ jobs:
268
309
cp yams/Tests/YamsTests/Fixtures/SourceKitten#289/debug.yaml pack
269
310
cp sdk-config/swift-${{ matrix.version }}*-android-x86_64-*${ANDROID_API_LEVEL}-sdk/usr/lib/lib*so pack/lib
270
311
cp sdk-config/swift-${{ matrix.version }}*-android-x86_64-*${ANDROID_API_LEVEL}-sdk/usr/lib/swift/android/lib*so pack/lib/swift/android
271
- cp $ANDROID_NDK_HOME /toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so pack/lib/swift/android
312
+ cp sdk-config/android-ndk-r23 /toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so pack/lib/swift/android
272
313
- name : Run tests on Android x86_64 emulator
273
314
if : ${{ matrix.arch == 'x86_64' }}
274
315
uses : reactivecircus/android-emulator-runner@v2
0 commit comments