summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/wrap/wrap.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py
index 941da3de8..c0f0f0728 100644
--- a/mesonbuild/wrap/wrap.py
+++ b/mesonbuild/wrap/wrap.py
@@ -801,15 +801,17 @@ class Resolver:
if not path.exists():
raise WrapException(f'Diff file "{path}" does not exist')
relpath = os.path.relpath(str(path), self.dirname)
- if PATCH:
- # Always pass a POSIX path to patch, because on Windows it's MSYS
- cmd = [PATCH, '-f', '-p1', '-i', str(Path(relpath).as_posix())]
- elif GIT:
- # If the `patch` command is not available, fall back to `git
- # apply`. The `--work-tree` is necessary in case we're inside a
+ if GIT:
+ # Git is more likely to be available on Windows and more likely
+ # to apply correctly assuming patches are often generated by git.
+ # See https://github.com/mesonbuild/meson/issues/12092.
+ # The `--work-tree` is necessary in case we're inside a
# Git repository: by default, Git will try to apply the patch to
# the repository root.
cmd = [GIT, '--work-tree', '.', 'apply', '-p1', relpath]
+ elif PATCH:
+ # Always pass a POSIX path to patch, because on Windows it's MSYS
+ cmd = [PATCH, '-f', '-p1', '-i', str(Path(relpath).as_posix())]
else:
raise WrapException('Missing "patch" or "git" commands to apply diff files')