View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0014713 | CMake | CMake | public | 2014-01-20 11:06 | 2016-02-16 18:12 | ||||
Reporter | Alex Rettig | ||||||||
Assigned To | Brad King | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | Linux | OS | OS Version | ||||||
Product Version | |||||||||
Target Version | CMake 3.0 | Fixed in Version | CMake 3.0 | ||||||
Summary | 0014713: cmake -create-symlink doesn't overwrite existing dangling(!) symlinks | ||||||||
Description | Calling create_symlink for an existing target file doesn't replace the link. Assuming there are no files "Target1" nor "Target2" in the current directory cmake -E create_symlink Target1 Link cmake -E create_symlink Target2 Link should leave a link Link -> Target2 but the result is Link -> Target1 If 'Target1' exists, before calling the second "create_symlink", the behaviour is correct and results in 'Link -> Target2' And yes, I have a use case, where I want to have a dangling symlink ;-) | ||||||||
Steps To Reproduce | See description. | ||||||||
Additional Information | See in cmake.cxx, where the case 'args[1] == "create_symlink"' is handled. Looks correct on the first sight, but: most likely 'cmSystemTools::FileExists(destinationFileName)' doesn't return true for a dangling symlink 'destinationFileName', and therefore after the first 'if' statement the following code leading to '!cmSystemTools::RemoveFile(destinationFileName)' isn't executed. Solution: distinguish correctly for symlinks, whether link or targed doesn't exist. Or: remove the file 'destinationFileName' unconditionally. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | |||||||||||
|
Relationships |
Notes | |
(0034974) Alex Rettig (reporter) 2014-01-20 11:10 edited on: 2014-01-20 11:11 |
Issue 0004418 dealt with the issue of overwriting symlinks already, but obviously didn't catch this cornercase. |
(0034982) Brad King (manager) 2014-01-21 08:54 |
I've committed a fix and new test cases to cover this: cmake: Improve '-E create_symlink' edge case handling http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e0228e2b [^] |
(0035929) Alex Rettig (reporter) 2014-05-26 06:19 |
Thanks, Brad, I double checked with a freshly pulled version from today, found all variants I tested working correctly. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2014-01-20 11:06 | Alex Rettig | New Issue | |
2014-01-20 11:10 | Alex Rettig | Note Added: 0034974 | |
2014-01-20 11:11 | Alex Rettig | Note Edited: 0034974 | |
2014-01-20 11:17 | Brad King | Relationship added | related to 0004418 |
2014-01-20 13:54 | Brad King | Assigned To | => Brad King |
2014-01-20 13:54 | Brad King | Status | new => assigned |
2014-01-20 13:54 | Brad King | Target Version | => CMake 3.0 |
2014-01-21 08:54 | Brad King | Note Added: 0034982 | |
2014-01-21 08:55 | Brad King | Status | assigned => resolved |
2014-01-21 08:55 | Brad King | Resolution | open => fixed |
2014-01-21 08:55 | Brad King | Fixed in Version | => CMake 3.0 |
2014-05-23 13:39 | Brad King | Relationship added | related to 0014928 |
2014-05-26 06:19 | Alex Rettig | Note Added: 0035929 | |
2014-05-26 06:19 | Alex Rettig | Status | resolved => closed |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |