Imported Upstream version 3.11.3 upstream/3.11.3
authorDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 8 Oct 2021 00:13:21 +0000 (09:13 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 8 Oct 2021 00:13:21 +0000 (09:13 +0900)
Help/release/3.11.rst
Source/CMakeLists.txt
Source/CMakeVersion.cmake
Source/cmSystemTools.cxx
Source/cmSystemTools.h
Source/cmTimestamp.cxx
Templates/TestDriver.cxx.in

index 971b3e2..214da0d 100644 (file)
@@ -298,3 +298,10 @@ Changes made since CMake 3.11.0 include the following.
   :prop_sf:`SKIP_AUTOUIC` on their generated files.  These files never
   need to be processed by moc or uic, and we must say so explicitly to
   account for policy :policy:`CMP0071`.
+
+3.11.3
+------
+
+* CMake 3.11.0 introduced support for resolving symbolic links on
+  Windows in code paths that typically do so on UNIX.  This has been
+  reverted due to breakage on ``subst`` drives.
index a0010a2..61327be 100644 (file)
@@ -949,8 +949,8 @@ if(CYGWIN)
 endif()
 if(WIN32 OR (CYGWIN AND LibUUID_FOUND))
   set(CPACK_SRCS ${CPACK_SRCS}
-    CPack/Wix/cmCMakeToWixPath.cxx
-    CPack/Wix/cmCMakeToWixPath.h
+    CPack/WiX/cmCMakeToWixPath.cxx
+    CPack/WiX/cmCMakeToWixPath.h
     CPack/WiX/cmCPackWIXGenerator.cxx
     CPack/WiX/cmCPackWIXGenerator.h
     CPack/WiX/cmWIXAccessControlList.cxx
index 2600706..354d0b5 100644 (file)
@@ -1,5 +1,5 @@
 # CMake version number components.
 set(CMake_VERSION_MAJOR 3)
 set(CMake_VERSION_MINOR 11)
-set(CMake_VERSION_PATCH 2)
+set(CMake_VERSION_PATCH 3)
 #set(CMake_VERSION_RC 0)
index eeb73c3..6f326de 100644 (file)
@@ -949,10 +949,12 @@ cmSystemTools::WindowsFileRetry cmSystemTools::GetWindowsFileRetry()
   }
   return retry;
 }
+#endif
 
-std::string cmSystemTools::GetRealPath(const std::string& path,
-                                       std::string* errorMessage)
+std::string cmSystemTools::GetRealPathResolvingWindowsSubst(
+  const std::string& path, std::string* errorMessage)
 {
+#ifdef _WIN32
   // uv_fs_realpath uses Windows Vista API so fallback to kwsys if not found
   std::string resolved_path;
   uv_fs_t req;
@@ -981,8 +983,10 @@ std::string cmSystemTools::GetRealPath(const std::string& path,
     resolved_path = path;
   }
   return resolved_path;
-}
+#else
+  return cmsys::SystemTools::GetRealPath(path, errorMessage);
 #endif
+}
 
 void cmSystemTools::InitializeLibUV()
 {
index a53afde..4390c86 100644 (file)
@@ -500,12 +500,14 @@ public:
     unsigned int Delay;
   };
   static WindowsFileRetry GetWindowsFileRetry();
-
-  /** Get the real path for a given path, removing all symlinks. */
-  static std::string GetRealPath(const std::string& path,
-                                 std::string* errorMessage = 0);
 #endif
 
+  /** Get the real path for a given path, removing all symlinks.
+      This variant of GetRealPath also works on Windows but will
+      resolve subst drives too.  */
+  static std::string GetRealPathResolvingWindowsSubst(
+    const std::string& path, std::string* errorMessage = nullptr);
+
   /** Perform one-time initialization of libuv.  */
   static void InitializeLibUV();
 
index f1e9283..14cf6e9 100644 (file)
@@ -33,7 +33,8 @@ std::string cmTimestamp::FileModificationTime(const char* path,
                                               const std::string& formatString,
                                               bool utcFlag)
 {
-  std::string real_path = cmSystemTools::GetRealPath(path);
+  std::string real_path =
+    cmSystemTools::GetRealPathResolvingWindowsSubst(path);
 
   if (!cmsys::SystemTools::FileExists(real_path)) {
     return std::string();
index ff3c869..ac531c0 100644 (file)
@@ -48,7 +48,7 @@ static char* lowercase(const char* string)
   if (new_string == NULL) { /* NOLINT */
     return NULL;            /* NOLINT */
   }
-  strncpy(new_string, string, stringSize);
+  strcpy(new_string, string);
   for (p = new_string; *p != 0; ++p) {
     *p = CM_CAST(char, tolower(*p));
   }