-
Notifications
You must be signed in to change notification settings - Fork 658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use the new Android overlay and Bionic module from Swift 6 #2784
Conversation
Sources/NIOPosix/Linux.swift
Outdated
internal static let EPOLLIN: CUnsignedInt = numericCast(CNIOLinux.EPOLLIN) | ||
internal static let EPOLLOUT: CUnsignedInt = numericCast(CNIOLinux.EPOLLOUT) | ||
internal static let EPOLLERR: CUnsignedInt = numericCast(CNIOLinux.EPOLLERR) | ||
internal static let EPOLLRDHUP: CUnsignedInt = numericCast(CNIOLinux.EPOLLRDHUP) | ||
internal static let EPOLLHUP: CUnsignedInt = numericCast(CNIOLinux.EPOLLHUP) | ||
#if canImport(Android) | ||
internal static let EPOLLET: CUnsignedInt = 2147483648 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Previously, all these constants couldn't be automatically set by the ClangImporter from the C headers, but now only this one constant couldn't, because it's the only one that's a C macro.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@finagolfin Thanks for the PR. Relatedly I have been wondering if we could setup GH action based Android testing in this repo in the long term?
I would interested to hear what your thoughts are and how we can make developing for Android as easy as installing a cross compilation SDK.
Thanks for the quick review, a github action CI workflow for Android on this repo would be great. 😄 I plan to start distributing an Android SDK bundle, which would obsolete the additional local configuration required for my current Android SDK, and then look into putting together a custom github build action that any Swift package can use with that new SDK bundle for their own CI, finagolfin/swift-android-sdk#127. If you would like, I can submit an Android CI workflow for this repo when that SDK bundle is ready. However, my daily Android CI already tests this repo and I quickly upstream most changes needed, so I'm fine with that cadence too. It really just depends if you want to know about Android breaks with every pull, and given that Android is not an officially supported platform, I'm fine with not imposing that additional requirement on NIO pull authors for now. |
In the fullness of time I would like to have Android support in all the repos as well. This would require a few things:
Once we tackle the latter we might be able to distribute this cross compilation bundle on swift.org which would unlock us testing this in our GitHub Actions. |
Already done and I think provisionally agreed to by the core team members I talked to. I will know for sure once I submit it as part of the official CI, which has only been delayed by me.
Yes, once I'm distributing my own Android SDK bundle and then if and when Android becomes officially supported, distributing an official Android SDK bundle like the current official linux static SDK bundle would be the next step. We can try setting up an Android CI action for this and other Swift repos then, let's see. |
Rebased and fixed merge conflicts, anything holding up review here? |
@finagolfin can you just fix up the formatting then we can merge it |
Will do. |
Motivation: Get this repo building again for Android with the new overlay Modifications: - Import the new module or overlay wherever `Glibc` is used - Keep this repo building with Swift 5 by duplicating some declarations Result: All the same tests keep passing on my Android CI, finagolfin/swift-android-sdk#158
Head branch was pushed to by a user without write access
Ran |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [apple/swift-nio](https://togithub.com/apple/swift-nio) | minor | `2.68.0` -> `2.70.0` | --- ### Release Notes <details> <summary>apple/swift-nio (apple/swift-nio)</summary> ### [`v2.70.0`](https://togithub.com/apple/swift-nio/releases/tag/2.70.0): SwiftNIO 2.70.0 [Compare Source](https://togithub.com/apple/swift-nio/compare/2.69.0...2.70.0) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### SemVer Minor - `FileSystem.copyItem` can parallelise directory copy by [@​UncleMattHope](https://togithub.com/UncleMattHope) in [https://github.com/apple/swift-nio/pull/2806](https://togithub.com/apple/swift-nio/pull/2806) - `ChannelOption`: Allow types to be accessed with leading dot syntax by [@​ayush1794](https://togithub.com/ayush1794) in [https://github.com/apple/swift-nio/pull/2816](https://togithub.com/apple/swift-nio/pull/2816) - Make `EventLoopPromise` conform to Equatable by [@​gjcairo](https://togithub.com/gjcairo) in [https://github.com/apple/swift-nio/pull/2714](https://togithub.com/apple/swift-nio/pull/2714) - Provide a default `CopyStrategy` overload for copyItem. by [@​UncleMattHope](https://togithub.com/UncleMattHope) in [https://github.com/apple/swift-nio/pull/2818](https://togithub.com/apple/swift-nio/pull/2818) ##### SemVer Patch - Better align shutdown semantics of testing event loops by [@​simonjbeaumont](https://togithub.com/simonjbeaumont) in [https://github.com/apple/swift-nio/pull/2800](https://togithub.com/apple/swift-nio/pull/2800) - Clone files on Darwin rather than copying them by [@​rnro](https://togithub.com/rnro) in [https://github.com/apple/swift-nio/pull/2823](https://togithub.com/apple/swift-nio/pull/2823) ##### Other Changes - Fix compose file used in update-benchmark-thresholds script by [@​simonjbeaumont](https://togithub.com/simonjbeaumont) in [https://github.com/apple/swift-nio/pull/2808](https://togithub.com/apple/swift-nio/pull/2808) - Remove advice to generate linux tests. by [@​PeterAdams-A](https://togithub.com/PeterAdams-A) in [https://github.com/apple/swift-nio/pull/2807](https://togithub.com/apple/swift-nio/pull/2807) - Make `testInstantTCPConnectionResetThrowsError` more reliable by [@​hamzahrmalik](https://togithub.com/hamzahrmalik) in [https://github.com/apple/swift-nio/pull/2810](https://togithub.com/apple/swift-nio/pull/2810) - \[CI] Add `shellcheck` and fix up warnings by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2809](https://togithub.com/apple/swift-nio/pull/2809) - \[CI] Fix docs check by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2811](https://togithub.com/apple/swift-nio/pull/2811) - \[CI] Add Swift 6 language mode workflow by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2812](https://togithub.com/apple/swift-nio/pull/2812) - Fix test compilation on non-macOS Darwin platforms by [@​simonjbeaumont](https://togithub.com/simonjbeaumont) in [https://github.com/apple/swift-nio/pull/2817](https://togithub.com/apple/swift-nio/pull/2817) - Add `.index-build` to `.gitignore` by [@​MaxDesiatov](https://togithub.com/MaxDesiatov) in [https://github.com/apple/swift-nio/pull/2819](https://togithub.com/apple/swift-nio/pull/2819) - \[CI] Add action and workflow to check for semver label by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2814](https://togithub.com/apple/swift-nio/pull/2814) - Update repository docs for swift-version support and recent CI check changes by [@​UncleMattHope](https://togithub.com/UncleMattHope) in [https://github.com/apple/swift-nio/pull/2815](https://togithub.com/apple/swift-nio/pull/2815) - Fix failing build for test by [@​ayush1794](https://togithub.com/ayush1794) in [https://github.com/apple/swift-nio/pull/2824](https://togithub.com/apple/swift-nio/pull/2824) - Fix typo in comment in `WebSocketErrorCodes.swift` by [@​valeriyvan](https://togithub.com/valeriyvan) in [https://github.com/apple/swift-nio/pull/2604](https://togithub.com/apple/swift-nio/pull/2604) - \[CI] Add a scheduled workflow for tests and benchmarks by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2822](https://togithub.com/apple/swift-nio/pull/2822) - \[CI] Fix label check by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2827](https://togithub.com/apple/swift-nio/pull/2827) #### New Contributors - [@​UncleMattHope](https://togithub.com/UncleMattHope) made their first contribution in [https://github.com/apple/swift-nio/pull/2806](https://togithub.com/apple/swift-nio/pull/2806) - [@​ayush1794](https://togithub.com/ayush1794) made their first contribution in [https://github.com/apple/swift-nio/pull/2816](https://togithub.com/apple/swift-nio/pull/2816) - [@​valeriyvan](https://togithub.com/valeriyvan) made their first contribution in [https://github.com/apple/swift-nio/pull/2604](https://togithub.com/apple/swift-nio/pull/2604) **Full Changelog**: apple/swift-nio@2.69.0...2.70.0 ### [`v2.69.0`](https://togithub.com/apple/swift-nio/releases/tag/2.69.0): SwiftNIO 2.69.0 [Compare Source](https://togithub.com/apple/swift-nio/compare/2.68.0...2.69.0) <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### SemVer Minor - Add manual control to `NIOLockedValueBox` by [@​glbrntt](https://togithub.com/glbrntt) in [https://github.com/apple/swift-nio/pull/2786](https://togithub.com/apple/swift-nio/pull/2786) - ChannelHandler: provide static `(un)wrap(In|Out)bound(In|Out)` by [@​weissi](https://togithub.com/weissi) in [https://github.com/apple/swift-nio/pull/2791](https://togithub.com/apple/swift-nio/pull/2791) ##### SemVer Patch - Pre-box some errors to reduce allocations by [@​glbrntt](https://togithub.com/glbrntt) in [https://github.com/apple/swift-nio/pull/2765](https://togithub.com/apple/swift-nio/pull/2765) - Allow in-place mutation of `NIOLoopBoundBox.value` by [@​dnadoba](https://togithub.com/dnadoba) in [https://github.com/apple/swift-nio/pull/2771](https://togithub.com/apple/swift-nio/pull/2771) - Avoid creating a yield ID counter per async writer by [@​glbrntt](https://togithub.com/glbrntt) in [https://github.com/apple/swift-nio/pull/2768](https://togithub.com/apple/swift-nio/pull/2768) - Combine the two `NIOAsyncChannel` channel handlers by [@​glbrntt](https://togithub.com/glbrntt) in [https://github.com/apple/swift-nio/pull/2779](https://togithub.com/apple/swift-nio/pull/2779) - Use the new Android overlay and Bionic module from Swift 6 by [@​finagolfin](https://togithub.com/finagolfin) in [https://github.com/apple/swift-nio/pull/2784](https://togithub.com/apple/swift-nio/pull/2784) - Change `unsafeDownCast` to `as!` by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2802](https://togithub.com/apple/swift-nio/pull/2802) ##### Other Changes - CI migration to GitHub Action by [@​FranzBusch](https://togithub.com/FranzBusch) in ([https://github.com/apple/swift-nio/pull/2760](https://togithub.com/apple/swift-nio/pull/2760) [https://github.com/apple/swift-nio/pull/2762](https://togithub.com/apple/swift-nio/pull/2762) [https://github.com/apple/swift-nio/pull/2763](https://togithub.com/apple/swift-nio/pull/2763) [https://github.com/apple/swift-nio/pull/2764](https://togithub.com/apple/swift-nio/pull/2764) [https://github.com/apple/swift-nio/pull/2767](https://togithub.com/apple/swift-nio/pull/2767) [https://github.com/apple/swift-nio/pull/2766](https://togithub.com/apple/swift-nio/pull/2766) [https://github.com/apple/swift-nio/pull/2776](https://togithub.com/apple/swift-nio/pull/2776) [https://github.com/apple/swift-nio/pull/2780](https://togithub.com/apple/swift-nio/pull/2780) [https://github.com/apple/swift-nio/pull/2785](https://togithub.com/apple/swift-nio/pull/2785) [https://github.com/apple/swift-nio/pull/2781](https://togithub.com/apple/swift-nio/pull/2781) [https://github.com/apple/swift-nio/pull/2787](https://togithub.com/apple/swift-nio/pull/2787) [https://github.com/apple/swift-nio/pull/2783](https://togithub.com/apple/swift-nio/pull/2783) [https://github.com/apple/swift-nio/pull/2789](https://togithub.com/apple/swift-nio/pull/2789) [https://github.com/apple/swift-nio/pull/2790](https://togithub.com/apple/swift-nio/pull/2790)) - Ignore format commit from git blame by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2796](https://togithub.com/apple/swift-nio/pull/2796) [https://github.com/apple/swift-nio/pull/2797](https://togithub.com/apple/swift-nio/pull/2797) [https://github.com/apple/swift-nio/pull/2801](https://togithub.com/apple/swift-nio/pull/2801) [https://github.com/apple/swift-nio/pull/2803](https://togithub.com/apple/swift-nio/pull/2803) - Adopt swift-format by [@​FranzBusch](https://togithub.com/FranzBusch) in [https://github.com/apple/swift-nio/pull/2794](https://togithub.com/apple/swift-nio/pull/2794) - `HTTPPart` Documentation Clarification by [@​dimitribouniol](https://togithub.com/dimitribouniol) in [https://github.com/apple/swift-nio/pull/2775](https://togithub.com/apple/swift-nio/pull/2775) - Add benchmark for creating `NIOAsyncChannel` by [@​glbrntt](https://togithub.com/glbrntt) in [https://github.com/apple/swift-nio/pull/2774](https://togithub.com/apple/swift-nio/pull/2774) - Disable warnings as errors on Swift 6 and main by [@​glbrntt](https://togithub.com/glbrntt) in [https://github.com/apple/swift-nio/pull/2793](https://togithub.com/apple/swift-nio/pull/2793) **Full Changelog**: apple/swift-nio@2.68.0...2.69.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xOC4xIiwidXBkYXRlZEluVmVyIjoiMzguMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: cgrindel-self-hosted-renovate[bot] <139595543+cgrindel-self-hosted-renovate[bot]@users.noreply.github.com>
Motivation:
Get this repo building again for Android with the new overlay
Modifications:
Glibc
is usedResult:
All the same tests keep passing on my Android CI, finagolfin/swift-android-sdk#158
I imported the smaller Bionic module where possible, and only used
Android
when files invoked C functions not in the new Bionic module, swiftlang/swift#72161.