Closed
Description
Bug report
Bug description:
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).
CPython versions tested on:
3.14
Operating systems tested on:
Other