-
Notifications
You must be signed in to change notification settings - Fork 209
Do not add -sysroot flag when ANDROID_NDK_ROOT environment is set #1879
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
base: main
Are you sure you want to change the base?
Conversation
I've marked this ready for review, @jakepetroules, @finagolfin, and @compnerd. See also the discussion at swiftlang/swift-build#495 (comment) |
I agree with getting rid of this. As much as the idea is to automatically set things up and make things automatically work, I think it's better to have the user configure this themselves. For example, this env variable is automatically set on the github CI, so even if the user explicitly configures the Better to not have such magic and make the setup more explicit, as it would be after this pull. |
This is going to break all of our builds, please do not commit this as is. We need the ability to be able to pass the |
Then how about gating it within an |
This change isn't removing the ability to do that, right? It's just removing the default fallback. From what I understand, explicitly passing |
@compnerd Any thoughts on either @jakepetroules's questions or my suggestion? I'd really like to reach some solution so we can un-block the Android SDK work. |
Ah, right; this still will break our builds as we do rely on the default. Can we wire up the default through swift-build before we remove this? |
As far as I know, swift-build is already doing the right thing here, e.g. it will always pass a value for |
@compnerd or @weliveindetail, could you apply this change to your CI and let us know if it causes any error and what the full output is? Because that may turn up an underlying bug that is better fixed rather than papering over it with this Android default. |
This hasn't made it into the swift-6.2 brach, has it? I'm still seeing the build failures when I have @finagolfin Can you add this to the project board? |
Can we get this updated and landed? @compnerd do you still have concerns? |
I think that we should wait until @finagolfin's frontend/driver changes are done and then re-test before merging this. The |
My frontend change in swiftlang/swift#79621 only affects It is unclear why this env variable detection and Is there some ordering issue or something, on the TBC CI builds with this pull? If you guys would simply try this patch and replace it with manually passing in this flag to your build config, we could determine if this was really necessary to you or not, from the resulting error output, if any. |
@marcprux, mind rebasing? |
@swift-ci test |
@swift-ci test windows |
@Steelskin, can you apply this pull to your Windows CI, along with passing in this The problem with this default is that it forces everyone to use the NDK at |
I am in the process of changing our build to more closely match what is being done in
Does that sound about correct to you or would you like me to edit some of the flags and/or the environment here? |
Are you sure you need both Other than that, I'd like you to run these flags you've pasted but using a swift-driver with this pull of Marc's applied: see if removing this |
Not sure, this is how the build is configured. I can toy with what arguments we actually need at a later time.
Alright, got it. All I did was change the |
@finagolfin Our CI succeeded with the current |
@compnerd, if you would approve or let us know if you need to test anything else, I'd like to get this in. |
When the environment
ANDROID_NDK_ROOT
is set, the driver manually adds it as a--sysroot
flag. This breaks building with an Android SDK when this variable is set, with confusing errors. I first saw this at finagolfin/swift-android-sdk#207 (comment), and more recently ran into it again (https://github.com/swift-android-sdk/swift-docker/actions/runs/14584558227/job/40907674425) while working on the official Android SDK build script, where it fails a build with:In both cases, manually un-setting
ANDROID_NDK_ROOT
(which is set by default in GitHub workflows) resolved the issue.This flag has some history (#1560, #1681, and #1811), but I feel like it should just be excised altogether since the Android SDK can specify its own
sdkRootPath
in theswift-sdk.json
file. If Windows needs it due to lack of Swift SDK support, then it could be gated inside an#if os(Windows)
check.And BTW, the
#if arch(x86_64)
check is incorrect: the Android NDK works on both Intel and ARM macOS machines, despite being stored under "darwin-x86_64", as the binaries are universal: