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