You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The iOS testbed project is able to use symlinks when referring to the XCframework (or simulator Framework slice of an XCframework). This saves significant disk space and startup time as the need to copy the full framework is eliminated.
The clone subcommand of the testbed will duplicate this symlink; or, if a path to an XCframework (or simulator slice) is provided, that framework will be used instead.
However:
If the testbed is cloned and no new framework is provided, and the symlink is specified as a relative link, the symlink will not work in the new location
If the existing framework symlink is invalid, any attempt to replace it fails because the existing link won't resolve.
To replicate, generate an arm64 simulator build, then:
python iOS/testbed clone testbed-1 --framework cross-build/arm64-apple-ios-simulator/iOS/Frameworks/arm64-iphonesimulator (substitute path to simulator framework as appropriate)
python testbed-1 clone tmp/testbed-2
Inspect tmp/testbed-2/Python.xcframework/ios-arm64_x86_64-simulator - it will be an invalid symlink.
python tmp/testbed-2 clone tmp/testbed-3 - this will fail because testbed-2 doesn't contain a simulator framework.
python tmp/testbed-2 clone tmp/testbed-3 --framework cross-build/arm64-apple-ios-simulator/iOS/Frameworks/arm64-iphonesimulator - this will fail with a FileNotFoundError looking for .../cpython/tmp/cross-build/arm64-apple-ios-simulator/iOS/Frameworks/arm64-iphonesimulator, which is what the testbed-2 framework symlink would resolve to (but doesn't exist).
Activity
picnixz commentedon Feb 12, 2025
(Note: we use the plain X.Y labels on issues and the "needs backport to X.Y" labels on PRs)
gh-130025: Correct handling of symlinks during iOS testbed framework …
pythongh-130025: Correct handling of symlinks during iOS testbed fram…
freakboy3742 commentedon Feb 13, 2025
Fixed by #130026 and #130073.
[3.13] gh-130025: Correct handling of symlinks during iOS testbed fra…
pythongh-130025: Correct handling of symlinks during iOS testbed fram…
[3.13] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.11] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.10] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.9] pythongh-130025: Correct handling of symlinks during iOS testbe…
[3.10] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.11] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.12] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.11] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.12] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.12] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.11] pythongh-130025: Correct handling of symlinks during iOS testb…
[3.12] pythongh-130025: Correct handling of symlinks during iOS testb…