Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
5f1dbac
Add Android workflow
marcprux Mar 31, 2025
1b7e52f
Merge branch 'swiftlang:main' into main
marcprux Apr 7, 2025
c263e80
Merge branch 'swiftlang:main' into main
marcprux Apr 15, 2025
dd6d09f
Merge branch 'swiftlang:main' into main
marcprux Apr 22, 2025
6565052
Build Android image (#1)
marcprux Apr 22, 2025
5f9dab4
Merge branch 'swiftlang:main' into main
marcprux Apr 28, 2025
412e6b0
Merge branch 'swiftlang:main' into main
marcprux Apr 28, 2025
40733f7
Swift Android build 6.2 (#2)
marcprux May 1, 2025
53e361a
Swift Android build 6.2 (#3)
marcprux May 8, 2025
72964f5
Build SDK in Docker container (#4)
marcprux May 18, 2025
9160168
Merge branch 'swiftlang:main' into main
marcprux May 18, 2025
4987bcc
Checkout patches repo instead of using a git submodule
marcprux May 18, 2025
ff3f274
Update libcurl to 8.13.0
marcprux May 18, 2025
595efc3
Remove resources that we no longer use
marcprux May 18, 2025
27b1bf4
Update libcurl to 8.13.0
marcprux May 18, 2025
b898129
Update libxml2 to 2.14.2
marcprux May 18, 2025
f566b23
Build libxml2, libcurl, and boringssl with support for Android 16kb p…
marcprux May 18, 2025
529e3f1
Add build-script --extra-cmake-options=-DCMAKE_EXTRA_LINK_FLAGS=-Wl,-…
marcprux May 18, 2025
c82587d
Add 16KB page size linker flags to linker flags in swift-toolset.json
marcprux May 18, 2025
217f1d7
Add 16KB page size linker flags to linker flags in swift-toolset.json
marcprux May 19, 2025
95046b3
Build with ndk-r28b
marcprux May 19, 2025
8b18b5f
Revert to building with ndk-r27c
marcprux May 19, 2025
f67f9bf
Use official endpoints for discovering latest Swift release/devel/tru…
marcprux May 19, 2025
7011a45
Typo fix in version script
marcprux May 19, 2025
4c65a93
Cleanup for PR
marcprux May 19, 2025
d80c80b
Change BUILD_VERSION to BUILD_SCHEME and have it match release, swift…
marcprux May 19, 2025
2c07eef
Update Android README
marcprux May 19, 2025
51d93f8
Update how patches are applied
marcprux May 21, 2025
46a06df
Fix source directory for patch target
marcprux May 21, 2025
afb2918
Harmonize timestamps in artifactbundle with the swift source tag date…
marcprux May 21, 2025
a469e85
Simplify toolchain-vars.sh
marcprux May 22, 2025
dea39d7
Merge branch 'swiftlang:main' into main
marcprux May 26, 2025
b3cddbd
Merge branch 'swiftlang:main' into main
marcprux Jun 2, 2025
abd3fd1
Merge branch 'swiftlang:main' into main
marcprux Jun 13, 2025
ad24ea5
Merge branch 'swiftlang:main' into main
marcprux Jun 26, 2025
50ba1cd
Run the compiler validation suite for Android (#8)
marcprux Jun 29, 2025
71b7131
Build compiler-validated bundles from latest branch commits, not olde…
finagolfin Jun 30, 2025
e2f696a
Merge pull request #9 from swift-android-sdk/Testing
finagolfin Jul 4, 2025
3f4cd4a
gcpd 'Update patches'
marcprux Jul 16, 2025
bd0df11
Update patches and build matrix
marcprux Jul 17, 2025
80291aa
Disable compiler validated builds on self-hosted
marcprux Jul 17, 2025
18c563f
Centralize cmake variable for 6.2 in patches, as done for trunk upstream
finagolfin Jul 6, 2025
ed09034
Update disabled tests
finagolfin Jul 12, 2025
e4a96b2
Merge branch 'main' into update-patches2
marcprux Jul 17, 2025
f472e9e
Try running Docker build on macOS host
marcprux Jul 17, 2025
22a4320
Remove separate checks of libxml2, curl, and yams
marcprux Jul 18, 2025
bc3f105
Merge pull request #11 from swift-android-sdk/update-patches2
marcprux Jul 18, 2025
a7b303a
Remove upstreamed 6.2 branch patches
finagolfin Jul 18, 2025
4ed1375
Merge branch 'swiftlang:main' into main
marcprux Jul 18, 2025
3f36409
Use command-line flags to work around CMake 3.30+ linker flag bug, ra…
finagolfin Jul 21, 2025
f658604
Create an Android CMake toolchain file instead to cross-compile Testi…
finagolfin Jul 23, 2025
c9fc3d8
Install the native host LLVM tools for full compiler builds
finagolfin Jul 23, 2025
b881e14
Extend `--cross-compile-build-swift-tools=False` to disable building …
finagolfin Jul 26, 2025
9af1d90
Don't copy any libraries from the NDK: link the NDK's clang resource …
finagolfin Aug 8, 2025
5693797
Wildcard the clang version link in the post-install script in order t…
marcprux Aug 18, 2025
31f00b1
Merge pull request #13 from swift-android-sdk/clang-wildcard
marcprux Aug 22, 2025
db10f68
Merge branch 'swiftlang:main' into main
marcprux Aug 22, 2025
1221544
Switch generated shell header to use #!/usr/bin/env bash
marcprux Aug 22, 2025
f555f48
SBOM and nits (#14)
marcprux Aug 22, 2025
7696a44
Remove upstreamed patches and turn the last modifications into perl s…
finagolfin Aug 9, 2025
606ab7a
Remove self-hosted build on github CI
finagolfin Sep 3, 2025
8eb982e
Remove android_build job from pull_request workflow
marcprux Sep 4, 2025
534175d
Add license headers to Android build scripts
marcprux Sep 4, 2025
d139654
Remove unnecessary .gitignore
marcprux Sep 4, 2025
510addd
Add license header to Dockerfile
marcprux Sep 4, 2025
ee191ee
Merge branch 'swiftlang:main' into main
marcprux Sep 4, 2025
87bf6a2
Switch over to using explicit tags and branches when invoking build-d…
finagolfin Sep 7, 2025
9987e54
Merge branch 'swiftlang:main' into main
marcprux Sep 12, 2025
110ab52
Merge branch 'swiftlang:main' into main
marcprux Sep 13, 2025
811583e
Merge branch 'swiftlang:main' into main
marcprux Sep 16, 2025
3070fba
Fix build script arguments to use false instead of False due to true_…
marcprux Sep 16, 2025
bd87b1a
Build swift-6.2-RELEASE
marcprux Sep 16, 2025
ead9ba9
Apply patch from https://github.com/swiftlang/swift/pull/84061 for 6.…
marcprux Sep 16, 2025
1a19b03
Update patch application for 6.2
marcprux Sep 16, 2025
fab74d2
Change 6.2 to perform local build
marcprux Sep 16, 2025
d05b59d
Change 6.2 to perform local build on ubuntu-24.04
marcprux Sep 16, 2025
bf5d18d
Switch back to building 6.2 from a tag
marcprux Sep 16, 2025
7f71402
Switch back to building 6.2 from a tag
marcprux Sep 16, 2025
233b535
Switch back to building 6.2 from a tag
marcprux Sep 16, 2025
f8fcf04
Build the Swift 6.2 release self-hosted with compiler validation
marcprux Sep 17, 2025
2e0a326
Set minimum Android API to 24
marcprux Oct 27, 2025
865e13f
Build against swift-DEVELOPMENT-SNAPSHOT-2025-10-16-
marcprux Oct 27, 2025
9d14a52
Disable building libxml2 tests to handle missing glob function in And…
marcprux Oct 27, 2025
d7c0884
Disable building libxml2 tests to handle missing glob function in And…
marcprux Oct 27, 2025
be7a646
Build this PR without compiler validation
marcprux Oct 28, 2025
09839a9
Build this PR without compiler validation
marcprux Oct 28, 2025
19adc6b
Disable posix_spawnattr_ for Android 24
marcprux Oct 28, 2025
21c5b03
Reduce Android API from 24 to 23
marcprux Oct 28, 2025
069b38c
Restore Android minimum API to 24
marcprux Oct 28, 2025
c30a475
Add swift-nio to tests cases being run
marcprux Oct 28, 2025
8c6f92c
Reduce Android API from 24 to 23
marcprux Oct 29, 2025
f4aa58c
Try building swift-collections
marcprux Oct 29, 2025
b364c93
Try testing against emulator API level 23
marcprux Oct 29, 2025
6083eb1
Fix backtrace call
marcprux Oct 29, 2025
18e77e8
Fail with an error for posix_spawn
marcprux Oct 29, 2025
65dae50
Fix error for posix_spawn
marcprux Oct 29, 2025
6b12a06
Remove temporary swift-docker Android build workflow
marcprux Nov 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion swift-ci/sdks/android/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ which will build the sources for each of the specified
architectures and then combines the SDKs into a single
artifactbundle with targetTriples for each of the supported
architectures (`aarch64`, `x86_64`, `aarmv7`)
and Android API levels (28-35).
and Android API levels (23-35).

## Specifying Architectures

Expand Down
12 changes: 0 additions & 12 deletions swift-ci/sdks/android/build-docker
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64,armv7}

ANDROID_NDK_VERSION=android-ndk-r27d
ANDROID_API=28

BASEPATH=$(dirname $(realpath $0))
cd ${BASEPATH}
Expand All @@ -39,16 +38,6 @@ source ./scripts/toolchain-vars.sh
# Check-out and patch the sources
./scripts/fetch-source.sh --source-dir ${WORKDIR}/source

# This `git grep` invocation in a trunk test fails in our Docker for some
# reason, so just turn it into a plain `grep` again.
perl -pi -e 's:"git",:#:' ${WORKDIR}/source/swift-project/swift/test/Misc/verify-swift-feature-testing.test-sh

# Work around swiftlang/swift-driver#1822 for now
perl -pi -g -we "s#(call rm ... \".\{LIBDISPATCH_BUILD_DIR\}\"\n(\s+)fi\n)#\1\2if [[ -d \"\\\${ANDROID_NDK}\" ]]; then call ln -sf \"\\\${SWIFT_BUILD_PATH}/lib/swift\" \"\\\${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib\"; fi#" ${WORKDIR}/source/swift-project/swift/utils/build-script-impl

# disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport)
perl -pi -e 's;os\(Android\);os\(AndroidDISABLED\);g' ${WORKDIR}/source/swift-project/swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift

mkdir -p ${WORKDIR}/products
chmod ugo+rwx ${WORKDIR}/products

Expand All @@ -70,6 +59,5 @@ $DOCKER run -i --rm \
--products-dir "/products" \
--host-toolchain "/usr/local/swift" \
--build-compiler "${BUILD_COMPILER}" \
--android-api "${ANDROID_API}" \
--ndk-home "/usr/local/ndk/${ANDROID_NDK_VERSION}" \
--archs "${TARGET_ARCHS}"
11 changes: 0 additions & 11 deletions swift-ci/sdks/android/build-local
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
TARGET_ARCHS=${TARGET_ARCHS:-aarch64,x86_64,armv7}

ANDROID_NDK_VERSION=android-ndk-r27d
ANDROID_API=28

BASEPATH=$(dirname $(realpath $0))
cd ${BASEPATH}
Expand Down Expand Up @@ -61,15 +60,6 @@ fi

# Check-out and patch the sources
./scripts/fetch-source.sh --source-dir ${WORKDIR}/source
# This `git grep` invocation in a trunk test fails in our Docker for some
# reason, so just turn it into a plain `grep` again.
perl -pi -e 's:"git",:#:' ${WORKDIR}/source/swift-project/swift/test/Misc/verify-swift-feature-testing.test-sh

# Work around swiftlang/swift-driver#1822 for now
perl -pi -g -we "s#(call rm ... \".\{LIBDISPATCH_BUILD_DIR\}\"\n(\s+)fi\n)#\1\2if [[ -d \"\\\${ANDROID_NDK}\" ]]; then call ln -sf \"\\\${SWIFT_BUILD_PATH}/lib/swift\" \"\\\${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib\"; fi#" ${WORKDIR}/source/swift-project/swift/utils/build-script-impl

# disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport)
perl -pi -e 's;os\(Android\);os\(AndroidDISABLED\);g' ${WORKDIR}/source/swift-project/swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift

mkdir -p ${WORKDIR}/products

Expand All @@ -79,6 +69,5 @@ mkdir -p ${WORKDIR}/products
--build-dir "${WORKDIR}/build" \
--build-compiler "${BUILD_COMPILER}" \
--host-toolchain "${HOST_TOOLCHAIN}" \
--android-api "${ANDROID_API}" \
--ndk-home "${ANDROID_NDK_HOME}" \
--archs "${TARGET_ARCHS}"
4 changes: 2 additions & 2 deletions swift-ci/sdks/android/scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ declare_package boringssl "boringssl" "OpenSSL AND ISC AND MIT" \
android_sdk_version=0.1
sdk_name=
archs=aarch64,armv7,x86_64
android_api=28
android_api=23
build_type=Release
parallel_jobs=$(($(nproc --all) + 2))
source_dir=
Expand Down Expand Up @@ -320,12 +320,12 @@ for arch in $archs; do
-DCMAKE_TOOLCHAIN_FILE=$ndk_home/build/cmake/android.toolchain.cmake \
-DCMAKE_BUILD_TYPE=$build_type \
-DCMAKE_EXTRA_LINK_FLAGS="-rtlib=compiler-rt -unwindlib=libunwind -stdlib=libc++ -fuse-ld=lld -lc++ -lc++abi -Wl,-z,max-page-size=16384" \
-DCMAKE_BUILD_TYPE=$build_type \
-DCMAKE_INSTALL_PREFIX=$sdk_root/usr \
-DLIBXML2_WITH_PYTHON=NO \
-DLIBXML2_WITH_ICU=NO \
-DLIBXML2_WITH_ICONV=NO \
-DLIBXML2_WITH_LZMA=NO \
-DLIBXML2_WITH_TESTS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON

Expand Down
29 changes: 29 additions & 0 deletions swift-ci/sdks/android/scripts/fetch-source.sh
Original file line number Diff line number Diff line change
Expand Up @@ -161,3 +161,32 @@ pushd boringssl >/dev/null 2>&1
git checkout ${BORINGSSL_VERSION}
popd >/dev/null 2>&1
groupend

groupstart "Patching Sources"
pushd swift-project >/dev/null

# This `git grep` invocation in a trunk test fails in our Docker for some
# reason, so just turn it into a plain `grep` again.
perl -pi -e 's:"git",:#:' swift/test/Misc/verify-swift-feature-testing.test-sh

# Work around swiftlang/swift-driver#1822 for now
perl -pi -g -we "s#(call rm ... \".\{LIBDISPATCH_BUILD_DIR\}\"\n(\s+)fi\n)#\1\2if [[ -d \"\\\${ANDROID_NDK}\" ]]; then call ln -sf \"\\\${SWIFT_BUILD_PATH}/lib/swift\" \"\\\${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib\"; fi#" swift/utils/build-script-impl

# fix optional result value in backtrace() call
perl -pi -e 's;.init\(clamping: addresses.count\)\)\);.init\(clamping: addresses.count\)\) ?? 0\);g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift

# disable backtrace() for Android (needs either API33+ or libandroid-execinfo, or to manually add in backtrace backport); will be fixed post 6.2 (in which case only the above patch is needed)
perl -pi -e 's;os\(Android\);os\(AndroidDISABLED\);g' swift-testing/Sources/Testing/SourceAttribution/Backtrace.swift


# Disable posix_spawnattr_* calls for Android API 23
perl -pi -e 's;try _throwIfPosixError\(posix_spawnattr_init;throw NSError\(domain: NSPOSIXErrorDomain, code: .init\(ENOEXEC\), userInfo: [ NSLocalizedFailureReasonErrorKey: "Process unavailable on Android" ]\) //try _throwIfPosixError\(posix_spawnattr_init;g' swift-corelibs-foundation/Sources/Foundation/Process.swift
perl -pi -e 's;try _throwIfPosixError\(posix_spawnattr_setflags;//try _throwIfPosixError\(posix_spawnattr_setflags;g' swift-corelibs-foundation/Sources/Foundation/Process.swift
perl -pi -e 's;posix_spawnattr_destroy;//posix_spawnattr_destroy;g' swift-corelibs-foundation/Sources/Foundation/Process.swift

# Stub out getgrgid_r and getgrnam_r missing from Android API 23
perl -pi -e 's;getgrgid_r|getgrnam_r;{ _, _, _, _, _ in 0 };g' swift-foundation/Sources/FoundationEssentials/Platform.swift

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you want to do with this pull, actually merge all these changes, that simply stub out newer API calls, to the official CI and SDK bundle generator or properly #available check them in their repos once you try this stubbed-out bundle here first?

My bigger concern is who is going to maintain the SDK bundle for these older APIs in the coming years. If @etcwilde and @madsodgaard and whoever else wants us to ship an official bundle built against API 23, they should be willing to handle all issues stemming from APIs 23-27, since that primarily affects them.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you want to do with this pull

Well, I mostly started this PR to see how hard it would be to get an SDK build that worked for API 23. I was surprised how little patching was needed. I hadn't developed any concrete plans beyond that.

Ideally, we'd hear from more people from the forum post on the topic, and especially whether this build might be suitable for @madsodgaard's work. If supporting back to API 23 would prevent the need for people to use their own custom builds of the SDK, then I think it would be worth it to get this in.

The question then would be whether to just go ahead with this PR (which merely disables things that aren't really applicable on Android anyway), or wait on being able to use #available(Android, …) (which, from what I understand, would need to wait until we want to require NDK 28+ for Android development). Since we're already patching stuff, and since the patches are fairly harmless, I personally think it would be fine to merge this short-term. We could even say that we "officially" only support/recommend API 28+, and older targets like x86_64-unknown-linux-android23 would be left to the developer to experiment with.

WDYT, @finagolfin, @shahmishal, @madsodgaard, @grynspan, @andriydruk, @Joannis?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be great for us, so that we don't have to fork our own SDK:) but as I mentioned on the forums, we would still need the shim for ifaddrs (to use networking like NIO) and probably also fix up the FILE pointer, for this to be usable for us. Other than that, it would be great.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not to be overly cantankerous, but an official Android toolchain really ought to be built from the official Swift sources. In other words, if there are changes needed in components of the Swift toolchain, we should get PRs up for as many of them as possible. If this is a stopgap until #available is, er, available, then can it wait a few weeks for that to happen?

I realize the situation is different for Swift 6.2, but Swift 6.2 has shipped to developers already and changes to the Swift toolchain should probably focus on the next release (6.3) instead.

With regards to the Swift Testing patch specifically, it's a problem for us because it is fragile and means a change to our code could break Android without us having any signal. The code in question is shaped like:

#if Apple
doThis()
#elseif os(Linux)
doThat()
#elseif os(Android)
if let doThat = dlsym("doThat") { doThat() }
#else
#warning("Didn't do that.")
#endif

But if we were to change the code such that Android came first, or such that we had #error instead of #warning, now the toolchain would fail to build. I'm not anticipating those changes will actually happen, just trying to illustrate why I'm opposed to having the patch here.

Anyway, that's my two cents.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not to be overly cantankerous, but an official Android toolchain really ought to be built from the official Swift sources

I understand — and I don't disagree with — your objection, but do note that the potential backtrace issue you mention is already in place with the current Swift SDK for Android release. This PR just shuffles the patch from the build-docker and build-local scripts into a single place in fetch-sources.sh (as well as implementing the additional patches).

Not to be too cavalier, but if the build starts failing (either in the official CI or in my watchdog CI), either @finagolfin or I will know to address it. And if/when we are able to make @swift-ci Please test Android requests, that will further enhance stability.

The broader picture is that this PR widens the potential users of this SDK, which is something @shahmishal asked us to look into. The patching is meant to be temporary, and will be progressively removed as we either start relying on #available(Android, …) or work around them with dlsym jiggery-pokery.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, I'm not trying to hold up the merge, just trying to get my thoughts out before I forget 'em all. :)

Copy link

@finagolfin finagolfin Nov 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait on being able to use #available(Android, …) (which, from what I understand, would need to wait until we want to require NDK 28+ for Android development).

Hmm, that is a good question: we may have to provide an SDK bundle ourselves that's built against the new stable NDK 29, as the next trunk tag may not work well with LTS NDK 27, now that Mads's #available pull was merged.

We may have to use different NDKs for 6.3 and the upcoming 6.2 CI, as long as one has #available and the other doesn't, then decide if we want to push #available into 6.2 or not.

@marcprux, since you're one of the few people building your own toolchain, want to try pushing the #available pull and NDK 29 into a release/6.2.1 bundle locally generated by the Docker script, then copy that modified swift-frontend it builds into your toolchain and test it? We're going to have to provide something like that in our quasi-official 6.2 releases next, so people can try out this new feature easily.

Not to be overly cantankerous, but an official Android toolchain really ought to be built from the official Swift sources. In other words, if there are changes needed in components of the Swift toolchain, we should get PRs up for as many of them as possible.

No problem, I think we all agree on the principle, but as they say, the cantanker is in the details. 😉

In this case, I tried to upstream all the patches I could, but left only three in the final Docker script: a compiler test that we were seeing strange file permission errors with git grep in our Docker runs alone, a modification of build-script to work around a swift-driver regression for which I submitted a fix many months ago, and disabling backtrace() for swift-testing. I think that is fine for a preview release that can't use Testing much anyway because of this long-standing SwiftPM bug, swiftlang/swift-package-manager#8094, which appears to break cross-compiling Testing with SwiftPM to all platforms, while the first two changes obviously only affect the build, not the produced SDK bundle.

As for this change, I'm fine with it, as these APIs basically do nothing on any Android device, because the OS assigns a random temporary user to every Android app installed.

I do think we should investigate and remove the git grep issue soon, and not simply stub out those later posix_spawn APIs if we want to get this in.


popd >/dev/null 2>&1
groupend

4 changes: 2 additions & 2 deletions swift-ci/sdks/android/scripts/toolchain-vars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ elif [[ $SWIFT_VERSION == scheme:* ]]; then
echo "Building $SWIFT_VERSION with prebuilt Swift $RELEASE_TAG compiler"
BUILD_COMPILER=yes
echo "Branch scheme builds always build the Swift compiler from source and take much longer."
else
echo "Invalid Swift version=${SWIFT_VERSION}"
else
echo "Invalid SWIFT_VERSION: $SWIFT_VERSION"
exit 1
fi

Expand Down
Loading