mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	Mono: Use msbuild instead of nuget.exe for restoring
- Make GodotTools output directly to the SCons output directory. - Removed xbuild_fallback from the build system.
This commit is contained in:
		
							parent
							
								
									825a89d0da
								
							
						
					
					
						commit
						b61ffef0ab
					
				
					 4 changed files with 25 additions and 132 deletions
				
			
		|  | @ -4,91 +4,19 @@ import os | |||
| verbose = False | ||||
| 
 | ||||
| 
 | ||||
| def find_nuget_unix(): | ||||
|     import os | ||||
| 
 | ||||
|     if "NUGET_PATH" in os.environ: | ||||
|         hint_path = os.environ["NUGET_PATH"] | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
|         hint_path = os.path.join(hint_path, "nuget") | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
| 
 | ||||
|     import os.path | ||||
|     import sys | ||||
| 
 | ||||
|     hint_dirs = ["/opt/novell/mono/bin"] | ||||
|     if sys.platform == "darwin": | ||||
|         hint_dirs = [ | ||||
|             "/Library/Frameworks/Mono.framework/Versions/Current/bin", | ||||
|             "/usr/local/var/homebrew/linked/mono/bin", | ||||
|         ] + hint_dirs | ||||
| 
 | ||||
|     for hint_dir in hint_dirs: | ||||
|         hint_path = os.path.join(hint_dir, "nuget") | ||||
|         if os.path.isfile(hint_path): | ||||
|             return hint_path | ||||
|         elif os.path.isfile(hint_path + ".exe"): | ||||
|             return hint_path + ".exe" | ||||
| 
 | ||||
|     for hint_dir in os.environ["PATH"].split(os.pathsep): | ||||
|         hint_dir = hint_dir.strip('"') | ||||
|         hint_path = os.path.join(hint_dir, "nuget") | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
|         if os.path.isfile(hint_path + ".exe") and os.access(hint_path + ".exe", os.X_OK): | ||||
|             return hint_path + ".exe" | ||||
| 
 | ||||
|     return None | ||||
| 
 | ||||
| 
 | ||||
| def find_nuget_windows(env): | ||||
|     import os | ||||
| 
 | ||||
|     if "NUGET_PATH" in os.environ: | ||||
|         hint_path = os.environ["NUGET_PATH"] | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
|         hint_path = os.path.join(hint_path, "nuget.exe") | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
| 
 | ||||
|     from .mono_reg_utils import find_mono_root_dir | ||||
| 
 | ||||
|     mono_root = env["mono_prefix"] or find_mono_root_dir(env["bits"]) | ||||
| 
 | ||||
|     if mono_root: | ||||
|         mono_bin_dir = os.path.join(mono_root, "bin") | ||||
|         nuget_mono = os.path.join(mono_bin_dir, "nuget.bat") | ||||
| 
 | ||||
|         if os.path.isfile(nuget_mono): | ||||
|             return nuget_mono | ||||
| 
 | ||||
|     # Standalone NuGet | ||||
| 
 | ||||
|     for hint_dir in os.environ["PATH"].split(os.pathsep): | ||||
|         hint_dir = hint_dir.strip('"') | ||||
|         hint_path = os.path.join(hint_dir, "nuget.exe") | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
| 
 | ||||
|     return None | ||||
| 
 | ||||
| 
 | ||||
| def find_msbuild_unix(filename): | ||||
|     import os.path | ||||
|     import sys | ||||
| 
 | ||||
|     hint_dirs = ["/opt/novell/mono/bin"] | ||||
|     hint_dirs = [] | ||||
|     if sys.platform == "darwin": | ||||
|         hint_dirs = [ | ||||
|         hint_dirs[:0] = [ | ||||
|             "/Library/Frameworks/Mono.framework/Versions/Current/bin", | ||||
|             "/usr/local/var/homebrew/linked/mono/bin", | ||||
|         ] + hint_dirs | ||||
|         ] | ||||
| 
 | ||||
|     for hint_dir in hint_dirs: | ||||
|         hint_path = os.path.join(hint_dir, filename) | ||||
|         hint_path = os.path.join(hint_dir, "msbuild") | ||||
|         if os.path.isfile(hint_path): | ||||
|             return hint_path | ||||
|         elif os.path.isfile(hint_path + ".exe"): | ||||
|  | @ -96,7 +24,7 @@ def find_msbuild_unix(filename): | |||
| 
 | ||||
|     for hint_dir in os.environ["PATH"].split(os.pathsep): | ||||
|         hint_dir = hint_dir.strip('"') | ||||
|         hint_path = os.path.join(hint_dir, filename) | ||||
|         hint_path = os.path.join(hint_dir, "msbuild") | ||||
|         if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK): | ||||
|             return hint_path | ||||
|         if os.path.isfile(hint_path + ".exe") and os.access(hint_path + ".exe", os.X_OK): | ||||
|  | @ -162,18 +90,11 @@ def nuget_restore(env, *args): | |||
|     global verbose | ||||
|     verbose = env["verbose"] | ||||
| 
 | ||||
|     # Find NuGet | ||||
|     nuget_path = find_nuget_windows(env) if os.name == "nt" else find_nuget_unix() | ||||
|     if nuget_path is None: | ||||
|         raise RuntimeError("Cannot find NuGet executable") | ||||
| 
 | ||||
|     print("NuGet path: " + nuget_path) | ||||
| 
 | ||||
|     # Do NuGet restore | ||||
|     run_command(nuget_path, ["restore"] + list(args), name="nuget restore") | ||||
| 
 | ||||
| 
 | ||||
| def build_solution(env, solution_path, build_config, extra_msbuild_args=[]): | ||||
| def build_solution(env, solution_path, build_config, extra_msbuild_args=[], restore=False): | ||||
|     global verbose | ||||
|     verbose = env["verbose"] | ||||
| 
 | ||||
|  | @ -193,28 +114,17 @@ def build_solution(env, solution_path, build_config, extra_msbuild_args=[]): | |||
|     else: | ||||
|         msbuild_path = find_msbuild_unix("msbuild") | ||||
|         if msbuild_path is None: | ||||
|             xbuild_fallback = env["xbuild_fallback"] | ||||
| 
 | ||||
|             if xbuild_fallback and os.name == "nt": | ||||
|                 print("Option 'xbuild_fallback' not supported on Windows") | ||||
|                 xbuild_fallback = False | ||||
| 
 | ||||
|             if xbuild_fallback: | ||||
|                 print("Cannot find MSBuild executable, trying with xbuild") | ||||
|                 print("Warning: xbuild is deprecated") | ||||
| 
 | ||||
|                 msbuild_path = find_msbuild_unix("xbuild") | ||||
| 
 | ||||
|                 if msbuild_path is None: | ||||
|                     raise RuntimeError("Cannot find xbuild executable") | ||||
|             else: | ||||
|                 raise RuntimeError("Cannot find MSBuild executable") | ||||
|             raise RuntimeError("Cannot find MSBuild executable") | ||||
| 
 | ||||
|     print("MSBuild path: " + msbuild_path) | ||||
| 
 | ||||
|     # Build solution | ||||
| 
 | ||||
|     msbuild_args = [solution_path, "/p:Configuration=" + build_config] | ||||
|     targets = ["Build"] | ||||
|     if restore: | ||||
|         targets.insert(0, "Restore") | ||||
| 
 | ||||
|     msbuild_args = [solution_path, "/t:%s" % ",".join(targets), "/p:Configuration=" + build_config] | ||||
|     msbuild_args += extra_msbuild_args | ||||
| 
 | ||||
|     run_command(msbuild_path, msbuild_args, env_override=msbuild_env, name="msbuild") | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ignacio Etcheverry
						Ignacio Etcheverry