ER: Xcode Should not Attempt to Resolve Symlinks
| Originator: | daniel | ||
| Number: | rdar://12205347 | Date Originated: | 2012-08-30 |
| Status: | Open | Resolved: | |
| Product: | Developer Tools | Product Version: | 4.4.1 |
| Classification: | Enhancement Request | Reproducible: | Always |
Summary: When setting the “Location” of a group (or any other object) in the “Identity Inspector” to a symlink, Xcode does not store the symlink in the project file. Instead, it resolves the symlink and saves its destination path in the project file. This is less than useful in several scenarios — the case where resources of one project are generated in a different context are the one where I got heavily bitten by that. Steps to Reproduce: 0. Create a symlink to any directory on your system from within your project space. 1. Open the project and add a new Group. 2. In the “Identity Inspector”, set the “Location” by clicking the little button below the popup-menu. (In my case, “Relative to Group” is selected in the popup, but that really doesn’t matter) Expected Results: The relative path should end with the name of the symlink. Actual Results: The relative path traverses the whole filesystem to the destination of the symlink. Regression: Notes: This can be worked around be creating hard links, when working with files — hard links to directories, however, are…problematic. The workaround for directories is 1. to create a normal directory with the exact name and location your symlink will have 2. select that folder as the location of your group in the project — Xcode now stores the correct location 3. delete the folder and create your symlink in its place.
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!
logical...
... as this is the default behaviour on OS X. Just check the library dependencies of an application: if you link it with a dylib file that's a symlink, you'll find the symlink's target path hardcoded in the application. This may be for security reasons.