diff options
author | Thibault Saunier <tsaunier@igalia.com> | 2019-08-01 17:13:29 -0700 |
---|---|---|
committer | Thibault Saunier <tsaunier@igalia.com> | 2019-08-24 06:43:47 -0400 |
commit | 42c5e4fe2b21a8f70f62e0153d0098b3d186259f (patch) | |
tree | f7c0074b4cf483351f6d88edd329328760ce1b60 /mesonbuild/mtest.py | |
parent | e3b21de5630e009f130d2e160a6fc125b5f84e31 (diff) | |
download | meson-42c5e4fe2b21a8f70f62e0153d0098b3d186259f.zip meson-42c5e4fe2b21a8f70f62e0153d0098b3d186259f.tar.gz meson-42c5e4fe2b21a8f70f62e0153d0098b3d186259f.tar.bz2 |
wine: Try to get the short paths when generating WINEPATH
The size of WINEPATH is limited (1024 [until recently]), we
can very easily reach that limit, and even the new one (2048) so
try to keep path as small as possible by using the shortPath
version of paths.
Also assert that we do not reach the new hard limit.
And avoid having duplicates in the list of path.
[until recently]: https://bugs.winehq.org/show_bug.cgi?id=45810
Diffstat (limited to 'mesonbuild/mtest.py')
-rw-r--r-- | mesonbuild/mtest.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py index dc5c9d1..e11c8e4 100644 --- a/mesonbuild/mtest.py +++ b/mesonbuild/mtest.py @@ -41,7 +41,7 @@ from . import build from . import environment from . import mlog from .dependencies import ExternalProgram -from .mesonlib import substring_is_in_list, MesonException +from .mesonlib import MesonException, get_wine_shortpath if typing.TYPE_CHECKING: from .backend.backends import TestSerialisation @@ -488,15 +488,15 @@ class SingleTestRunner: if len(self.test.extra_paths) > 0: self.env['PATH'] = os.pathsep.join(self.test.extra_paths + ['']) + self.env['PATH'] - if substring_is_in_list('wine', cmd): - wine_paths = ['Z:' + p for p in self.test.extra_paths] - wine_path = ';'.join(wine_paths) - # Don't accidentally end with an `;` because that will add the - # current directory and might cause unexpected behaviour - if 'WINEPATH' in self.env: - self.env['WINEPATH'] = wine_path + ';' + self.env['WINEPATH'] - else: - self.env['WINEPATH'] = wine_path + winecmd = [] + for c in cmd: + winecmd.append(c) + if os.path.basename(c).startswith('wine'): + self.env['WINEPATH'] = get_wine_shortpath( + winecmd, + ['Z:' + p for p in self.test.extra_paths] + self.env.get('WINEPATH', '').split(';') + ) + break # If MALLOC_PERTURB_ is not set, or if it is set to an empty value, # (i.e., the test or the environment don't explicitly set it), set |