diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 5b1e590eca..aef0ade08b 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -109,8 +109,6 @@ jobs: name: Android Swift SDK # Workaround https://github.com/nektos/act/issues/1875 uses: apple/swift-nio/.github/workflows/android_sdk.yml@main - with: - additional_command_arguments: "--target NIOCore" release-builds: name: Release builds diff --git a/Sources/NIOPerformanceTester/main.swift b/Sources/NIOPerformanceTester/main.swift index b3c2840a7a..ac741839f3 100644 --- a/Sources/NIOPerformanceTester/main.swift +++ b/Sources/NIOPerformanceTester/main.swift @@ -28,7 +28,12 @@ import NIOCore import NIOEmbedded import NIOFoundationCompat import NIOHTTP1 +#if os(Android) +// workaround for error: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state +@preconcurrency import NIOPosix +#else import NIOPosix +#endif import NIOWebSocket // Use unbuffered stdout to help detect exactly which test was running in the event of a crash. diff --git a/scripts/install_swift_sdk.sh b/scripts/install_swift_sdk.sh index 31a2205dfa..7ffeb3862b 100755 --- a/scripts/install_swift_sdk.sh +++ b/scripts/install_swift_sdk.sh @@ -25,6 +25,7 @@ version="${INSTALL_SWIFT_VERSION:=""}" arch="${INSTALL_SWIFT_ARCH:="aarch64"}" os_image="${INSTALL_SWIFT_OS_IMAGE:="ubuntu22.04"}" sdk="${INSTALL_SWIFT_SDK:="static-sdk"}" +android_ndk_version="${INSTALL_ANDROID_NDK:="r27d"}" if [[ ! ( -n "$branch" && -z "$version" ) && ! ( -z "$branch" && -n "$version") ]]; then fatal "Exactly one of build or version must be defined." @@ -127,3 +128,20 @@ swift --version log "Installing Swift SDK" swift sdk install "$sdk_path" + +log "Swift SDK Post-install" +if [[ "$sdk" == "android-sdk" ]]; then + # guess some common places where the swift-sdks folder lives + cd ~/Library/org.swift.swiftpm || cd ~/.config/swiftpm || cd ~/.local/swiftpm || cd ~/.swiftpm || cd /root/.swiftpm || exit 1 + + # download and link the NDK + android_ndk_url="https://dl.google.com/android/repository/android-ndk-${android_ndk_version}-$(uname -s).zip" + log "Android Native Development Kit URL: ${android_ndk_url}" + "$CURL_BIN" -fsSL -o ndk.zip --retry 3 "${android_ndk_url}" + unzip -q ndk.zip + rm ndk.zip + export ANDROID_NDK_HOME="${PWD}/android-ndk-${android_ndk_version}" + bundledir=$(find . -type d -maxdepth 2 -name '*android*.artifactbundle' | head -n 1) + "${bundledir}"/swift-android/scripts/setup-android-sdk.sh + cd - || exit +fi