Document dependency graph breakage and Skip stack fixes#19
Closed
colemancda wants to merge 2 commits into
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A clean checkout of this repo cannot currently resolve its dependencies. This branch documents why,
after root-causing each failure by running the builds rather than reading manifests.
It contains documentation only. The actual fixes live in the forked dependency repos and are
committed locally but not pushed — they need your review first (listed below).
Fixed in the forks (committed at
~/Developer, unpushed)PureSwift/Android17e1d1fswift-android-nativesourcePureSwift/AndroidBluetoothe061b99PureSwift/AndroidBluetooth6d5f5e1AndroidManifestfromswift-android-nativeMillerTechnologyPeru/swift-android-native55a10f5main(was 87 behind)MillerTechnologyPeru/swift-android-native978df30Highlights:
AndroidandAndroidBluetoothdeclared only.macOS(.v15), soSwiftPM defaulted iOS to 12 while their dependencies require 13. Verified pre-existing by
reproducing the identical 15 errors with unmodified
master.AndroidManifesthad moved. Android PR #40 relocated it intoswift-android-native, butAndroidBluetoothstill imported it fromAndroid.swift-android-nativefork was unusable by half the graph. It was 87 commits behindupstream, and its "Add Skip prefix" commit renamed targets — which are module names — so it
could not serve
PureSwift/Android(imports upstream names) andskip-android-bridge(importsthe prefixed ones) simultaneously. It now merges upstream and provides the Skip names as thin
@_exported importshim modules, so one source satisfies both.Outstanding — needs your decision
swift-javaandswift-java-jni-coreboth declare aCSwiftJavaJNItarget. Upstream splitthe JNI core out but still declares the old target;
swift-android-nativeandswift-jniusethe split-out package while
Android,JavaLangandKotlinstill useswift-java. Any graphwith both breaks. Fixing it means migrating the PureSwift Java stack — a coordinated change
across three repos, and the reason app-level Android and iOS builds still cannot complete.
The
skip-fuse-uifork does not build against currentskip-ui. It declaresfrom: "1.46.0"with no upper bound, so a fresh resolve picks 1.59.0 and fails to compile(
AsyncImagesignature change). The last version it builds against is 1.49.1 — which the old pinfile happened to select, hiding the problem until now.
Pinning backwards is not a way out:
GATTmaster has adopted SwiftPM traits and requiresBluetooth7.5.0+, and an olderswift-javareintroduces theCSwiftJavaJNIclash from the otherside. Several migrations are in flight at once, so the graph has to move forward.
Structural recommendation
Package.resolvedis gitignored. That is why this class of breakage was invisible: the only workingdependency state existed as an unversioned pin file on one machine, re-derived on every fresh resolve
from floating
branch:dependencies across a dozen actively-refactored repos. Committing it once thegraph resolves would surface these failures at the commit that causes them rather than at clone time.
The document also records a machine-local recipe (pin
Androidbeforee9f59f8, pinskip-uito1.49.1,
SWIFTPM_ENABLE_MACROS=0) that yields a buildable graph in the meantime — that is how theplugin work in #18 was verified.