Skip to content

Commit

Permalink
wrap: Fix diff_files not finding the patch to apply
Browse files Browse the repository at this point in the history
When `self.wrap.filesdir` is a relative path, which happens when
`meson subprojects update` is run, the path to the patch must be
provided relative to the working directory in which `patch` or `git`
is run.

`self.wrap.filesdir` is absolute when `Resolve()` is invoked by the
Meson interpreter, which is why this wasn't detected by the tests.
  • Loading branch information
nirbheek committed Aug 8, 2022
1 parent e06506e commit 7c6f025
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions mesonbuild/wrap/wrap.py
Expand Up @@ -647,14 +647,15 @@ def apply_diff_files(self) -> None:
path = Path(self.wrap.filesdir) / filename
if not path.exists():
raise WrapException(f'Diff file "{path}" does not exist')
relpath = os.path.relpath(str(path), self.dirname)
if PATCH:
cmd = [PATCH, '-f', '-p1', '-i', str(path)]
cmd = [PATCH, '-f', '-p1', '-i', relpath]
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
# Git repository: by default, Git will try to apply the patch to
# the repository root.
cmd = [GIT, '--work-tree', '.', 'apply', '-p1', str(path)]
cmd = [GIT, '--work-tree', '.', 'apply', '-p1', relpath]
else:
raise WrapException('Missing "patch" or "git" commands to apply diff files')

Expand Down

0 comments on commit 7c6f025

Please sign in to comment.