Minimum iOS version, Xcode 12 and build warnings

Any ideas on how to support an earlier iOS version than a certain Xcode version supports and not cause warnings in clients that use the package?

Specifically, I'd like to use Swift packages that support iOS 8 in Xcode 12 without getting

The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99.

More details at Swift Package Manager: nanopb deployment target warning · Issue #6449 · firebase/firebase-ios-sdk · GitHub

6 Likes

Not sure there is a way -- it's probably possible to shell out in the manifest and use different minimum deployment targets based on the Xcode being used, but that doesn't seem like a particularly great and scalable solution.

I'm thinking Xcode should really ignore these specific warnings for remote dependencies (or maybe all package dependencies). The warning makes sense for letting you know that you should update projects you control, but does not seem particularly helpful for dependencies you are simply using.

Could you file a feedback report for this please?

6 Likes

SE‐0236 states:

A package will be assumed to support all platforms using a predefined minimum deployment version. This predefined deployment version will be the oldest deployment target version supported by the installed SDK for a given platform.

I understand that to mean that when nothing is specified, each toolchain will default to as old as it is capable of. Is this the case or not? If so...

It looks like nanopb is just restating the defaults in a forward‐incompatible way. nanopb could make the problem go away right now by removing the explicit deployment targets.

That wouldn’t solve the general issue with SwiftPM, but it would mean you wouldn’t have to wait for another toolchain to be released to fix your particular case.

Thanks @NeoNacho! Sent FB8683743.

Thanks @SDGGiesbrecht! I sent SPM: Fix iOS Build warning by paulb777 · Pull Request #585 · nanopb/nanopb · GitHub. To restate, since nanopb supports all versions supported by Xcode, there is no need to specify platforms in Package.swift.

Thanks for the response Boris!

Also, it would be useful something like post_script (a la CocoaPods) to override these kind of settings. Would you consider adding something like it to SPM?