name qtcreator projects based on branch names (if svn is found and its a branch)...
authorCampbell Barton <ideasman42@gmail.com>
Tue, 1 Nov 2011 02:24:40 +0000 (02:24 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 1 Nov 2011 02:24:40 +0000 (02:24 +0000)
build_files/cmake/cmake_qtcreator_project.py
build_files/cmake/project_info.py

index fc5c00e..a89bcd0 100755 (executable)
@@ -40,6 +40,7 @@ from project_info import (SIMPLE_PROJECTFILE,
                           is_py,
                           cmake_advanced_info,
                           cmake_compiler_defines,
+                          project_name_get,
                           )
 
 import os
@@ -59,7 +60,8 @@ def create_qtc_project_main():
         f.write("\n".join(files_rel))
 
         f = open(os.path.join(PROJECT_DIR, "%s.includes" % PROJECT_NAME), 'w')
-        f.write("\n".join(sorted(list(set(os.path.dirname(f) for f in files_rel if is_c_header(f))))))
+        f.write("\n".join(sorted(list(set(os.path.dirname(f)
+                          for f in files_rel if is_c_header(f))))))
 
         qtc_prj = os.path.join(PROJECT_DIR, "%s.creator" % PROJECT_NAME)
         f = open(qtc_prj, 'w')
@@ -73,10 +75,16 @@ def create_qtc_project_main():
         includes, defines = cmake_advanced_info()
 
         # for some reason it doesnt give all internal includes
-        includes = list(set(includes) | set(os.path.dirname(f) for f in files_rel if is_c_header(f)))
+        includes = list(set(includes) | set(os.path.dirname(f)
+                        for f in files_rel if is_c_header(f)))
         includes.sort()
 
-        PROJECT_NAME = "Blender"
+        if 0:
+            PROJECT_NAME = "Blender"
+        else:
+            # be tricky, get the project name from SVN if we can!
+            PROJECT_NAME = project_name_get(SOURCE_DIR)
+
         FILE_NAME = PROJECT_NAME.lower()
         f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
         f.write("\n".join(files_rel))
@@ -93,7 +101,7 @@ def create_qtc_project_main():
         f.write("// ADD PREDEFINED MACROS HERE!\n")
         defines_final = [("#define %s %s" % item) for item in defines]
         if sys.platform != "win32":
-            defines_final += cmake_compiler_defines()  # defines from the compiler
+            defines_final += cmake_compiler_defines()
         f.write("\n".join(defines_final))
 
     print("Blender project file written to: %s" % qtc_prj)
@@ -106,7 +114,12 @@ def create_qtc_project_python():
     files_rel.sort()
 
     # --- qtcreator specific, simple format
-    PROJECT_NAME = "Blender_Python"
+    if 0:
+        PROJECT_NAME = "Blender_Python"
+    else:
+        # be tricky, get the project name from SVN if we can!
+        PROJECT_NAME = project_name_get(SOURCE_DIR) + "_Python"
+
     FILE_NAME = PROJECT_NAME.lower()
     f = open(os.path.join(PROJECT_DIR, "%s.files" % FILE_NAME), 'w')
     f.write("\n".join(files_rel))
index 8e813d3..da1f208 100755 (executable)
@@ -41,6 +41,7 @@ __all__ = (
     "is_py",
     "cmake_advanced_info",
     "cmake_compiler_defines",
+    "project_name_get"
 )
 
 import sys
@@ -215,3 +216,22 @@ def cmake_compiler_defines():
     os.remove(temp_c)
     os.remove(temp_def)
     return lines
+
+
+def project_name_get(path, fallback="Blender", prefix="Blender_"):
+    if not os.path.isdir(os.path.join(path, ".svn")):
+        return fallback
+
+    import subprocess
+    info = subprocess.Popen(["svn", "info", path],
+                            stdout=subprocess.PIPE).communicate()[0].decode()
+
+    for l in info.split("\n"):
+        l = l.strip()
+        if l.startswith("URL"):
+            # https://svn.blender.org/svnroot/bf-blender/branches/bmesh/blender
+            # --> bmesh
+            if "/branches/" in l:
+                return prefix + l.rsplit("/branches/", 1)[-1].split("/", 1)[0]
+    return fallback
+