Skip to content

Gradle plugin: consumer-side iOS wiring (Python.xcframework + stdlib staging) for apps outside this repo #90

Closed

Description

@b-re-w

#59 proved the iOS app bundle inside this repo, but its pieces live in python-multiplatform's own build scripts, so a consumer app (toolchain usage-example, real users) cannot get them from the published plugin/artifacts:

  1. Python.xcframework: sample/build.gradle.kts copies it to sample/build/xcode-frameworks, adds linkerOpts("-framework","Python","-F…") to the KMP framework, and the Xcode project links/embeds it.
  2. stdlib staging: stageIosPythonHomeForXcode exists only on :python-multiplatform; tools/xcode/install-python.sh runs it in the same Gradle root.

Scope: the published Gradle plugin (io.github.thisisthepy.python.multiplatform.bindings) provides, on the consumer project: (i) a task that stages Python.xcframework into the consumer's build/ and wires the linkerOpts into its Kotlin/Native iOS framework binaries automatically; (ii) stageIosPythonHomeForXcode (acquiring the pinned iOS support archive like the desktop staging does); install-python.sh usable from the consumer's Gradle root (and shipped/located in a way a consumer can call). sample/ switches to the plugin path where it only duplicates it.

Completion: a consumer fixture outside :python-multiplatform (e.g. a ksp-fixtures-style module or toolchain's usage-example via mavenLocal) builds an iOS simulator app using only the published plugin + artifacts, and the DEMO-8-style probe shows stdlib + payload imported from the bundle.

Activity

  1. added a commit that references this issue on Oct 25, 2026
  2. b-re-w commented on Oct 25, 2026

    @b-re-w
    MemberAuthor

    Landed in develop via #320 (plugin wiring + fixtures/ios-consumer: simulator probe stdlib=ok ext=ok payload=ok). sample/ switch and library de-duplication: #321.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions