scripts: Fix windows paths in helper.cmake
authorMike Schuchardt <mikes@lunarg.com>
Fri, 9 Nov 2018 00:44:13 +0000 (16:44 -0800)
committerMike Schuchardt <mikes@lunarg.com>
Fri, 9 Nov 2018 22:40:00 +0000 (14:40 -0800)
Normalize (all slashes going the same direction) and escape ("\" to "\\")
paths when writing helper.cmake.  CMake was previously interpreting the
single '\' characters and whatever followed as invalid escape sequences.
Linux and macOS are unaffected.

scripts/update_deps.py

index 119cf70292d711afc610d11ba759dc788e0f4089..5d00eb5bd361e2502767427ef129e49c8d9517d8 100755 (executable)
@@ -306,9 +306,9 @@ class GoodRepo(object):
         self.build_dir = None
         self.install_dir = None
         if json.get('build_dir'):
-            self.build_dir = json['build_dir']
+            self.build_dir = os.path.normpath(json['build_dir'])
         if json.get('install_dir'):
-            self.install_dir = json['install_dir']
+            self.install_dir = os.path.normpath(json['install_dir'])
         self.deps = json['deps'] if ('deps' in json) else []
         self.prebuild = json['prebuild'] if ('prebuild' in json) else []
         self.prebuild_linux = json['prebuild_linux'] if (
@@ -520,6 +520,8 @@ def CreateHelper(args, repos, filename):
     This information is baked into the CMake files of the home repo and so
     this dictionary is kept with the repo via the json file.
     """
+    def escape(path):
+        return path.replace('\\', '\\\\')
     install_names = GetInstallNames(args)
     with open(filename, 'w') as helper_file:
         for repo in repos:
@@ -527,7 +529,7 @@ def CreateHelper(args, repos, filename):
                 helper_file.write('set({var} "{dir}" CACHE STRING "" FORCE)\n'
                                   .format(
                                       var=install_names[repo.name],
-                                      dir=repo.install_dir))
+                                      dir=escape(repo.install_dir)))
 
 
 def main():