Wrap: Use git instead of patch by default

This solves problems with Strawberry Perl providing patch.exe on Windows
with an unconsistent line ending support.

Fixes: #12092
This commit is contained in:
Xavier Claessens 2023-09-12 10:03:07 -04:00 committed by Xavier Claessens
parent 22da2c3c2d
commit 718c86a7d5
1 changed files with 8 additions and 6 deletions

View File

@ -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')