Skip to content

iOS compiler stubs override environment-based minimum version specifications #133183

Closed
@freakboy3742

Description

@freakboy3742

Bug report

Bug description:

Python includes shims for compiler tools on iOS to match GNU conventions for compiler names (e.g., arm64-apple-ios-clang) to avoid encoding a user-specific location to a compiler in sysconfig, and to avoid issues with UNIX build tools that expect CC/CXX to be single arguments without spaces.

Using this approach arm64-apple-ios-clang expands internal as xcrun --sdk iphoneos clang -target arm64-apple-ios-clang

Unfortunately, Apple has 3 ways to define a minimum iOS version, in order of priority:

  1. the IPHONEOS_DEPLOYMENT_TARGET=12.0 environment variable
  2. the -mios-min-version=12.0 command line argument
  3. a version number encoded in a -target arm64-apple-ios12.0-simulator argument

If you specify all three options, (1) will be ignored, and (2) will raise a warning if the version it specifies doesn't match the version specified by (3).

The problem arises if you specify -target arm64-apple-ios-simulator- which is what the shim currently encodes.

If the -target doesn't specify a version, this is interpreted as "no min version". An explicitly provided -mios-version-min definition will override this minimum without warning; but any IPHONEOS_DEPLOYMENT_VERSION value will be ignored.

Thus, using the compiler shims in an environment where IPHONEOS_DEPLOYMENT_VERSION is defined will result in this value being ignored unless the minimum version is also passed in as a -mios-version-min argument.

CPython versions tested on:

3.13

Operating systems tested on:

Other

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    OS-iostype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions