diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2022-07-15 04:15:48 +0530 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2022-07-16 00:30:43 +0300 |
commit | c19773c0bc6a980682034e89b079179f77e6e3d6 (patch) | |
tree | ee3111a6ff96f82ae25f5f68a5d049560a3c6731 | |
parent | c44ae353565fdf17ebe521189cf830a683fbc25f (diff) | |
download | meson-c19773c0bc6a980682034e89b079179f77e6e3d6.zip meson-c19773c0bc6a980682034e89b079179f77e6e3d6.tar.gz meson-c19773c0bc6a980682034e89b079179f77e6e3d6.tar.bz2 |
wrap: Fix diff_files not finding the patch to apply
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.
-rw-r--r-- | mesonbuild/wrap/wrap.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index 00ef9a0..e1751b7 100644 --- a/mesonbuild/wrap/wrap.py +++ b/mesonbuild/wrap/wrap.py @@ -647,14 +647,15 @@ class Resolver: 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') |