Windows: search PATH for patch utility (#40513)
Previously, we only searched for `patch` inside of whatever Git installation was available because the most common installation of Git available on Windows had `patch`. That's not true for all possible installations of Git though, so this updates the search to also check PATH.
This commit is contained in:
		| @@ -7,6 +7,7 @@ | |||||||
| import inspect | import inspect | ||||||
| import os | import os | ||||||
| import os.path | import os.path | ||||||
|  | import pathlib | ||||||
| import sys | import sys | ||||||
| 
 | 
 | ||||||
| import llnl.util.filesystem | import llnl.util.filesystem | ||||||
| @@ -36,10 +37,12 @@ def apply_patch(stage, patch_path, level=1, working_dir="."): | |||||||
|     """ |     """ | ||||||
|     git_utils_path = os.environ.get("PATH", "") |     git_utils_path = os.environ.get("PATH", "") | ||||||
|     if sys.platform == "win32": |     if sys.platform == "win32": | ||||||
|         git = which_string("git", required=True) |         git = which_string("git") | ||||||
|         git_root = git.split("\\")[:-2] |         if git: | ||||||
|         git_root.extend(["usr", "bin"]) |             git = pathlib.Path(git) | ||||||
|         git_utils_path = os.sep.join(git_root) |             git_root = git.parent.parent | ||||||
|  |             git_root = git_root / "usr" / "bin" | ||||||
|  |             git_utils_path = os.pathsep.join([str(git_root), git_utils_path]) | ||||||
| 
 | 
 | ||||||
|     # TODO: Decouple Spack's patch support on Windows from Git |     # TODO: Decouple Spack's patch support on Windows from Git | ||||||
|     # for Windows, and instead have Spack directly fetch, install, and |     # for Windows, and instead have Spack directly fetch, install, and | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John W. Parent
					John W. Parent