diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2020-08-10 22:22:35 +0200 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2020-08-13 17:59:29 +0000 |
commit | a15e25ac5d5888d9e2dde13df0b7b21a37ba4e56 (patch) | |
tree | c07f9c63e83e832fc536304bde5db98b36d7c21e /share/qbs/imports | |
parent | d03135c9509821270c541fe0725d7365c7a19d55 (diff) |
Tune search order of path probes
Within the groups of user-provided and system-provided paths,
environment variables need to take precedence over properties, because
there is currently no other way to override the search paths of probes
from the outside if the probe-using code did not explicitly bind them to
Product/Module properties.
We search directly user-provided paths before ones from system-provided
environment variables to minimize the risk of surprises due to outside
influence.
[ChangeLog][Behavior Changes] The lookup order in PathProbe changed to
[environmentPaths, searchPaths, platformEnvironmentPaths,
platformSearchPaths]
Change-Id: Ib0c3bc44e5a8efaaaa073f28f1f3a53feb0f78db
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'share/qbs/imports')
-rw-r--r-- | share/qbs/imports/qbs/Probes/path-probe.js | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/share/qbs/imports/qbs/Probes/path-probe.js b/share/qbs/imports/qbs/Probes/path-probe.js index b4d745428..b1bdf9930 100644 --- a/share/qbs/imports/qbs/Probes/path-probe.js +++ b/share/qbs/imports/qbs/Probes/path-probe.js @@ -60,6 +60,17 @@ function canonicalSelectors(selectors, nameSuffixes) { return selectors.map(mapper); } +function pathsFromEnvs(envs, pathListSeparator) { + envs = envs || []; + var result = []; + for (var i = 0; i < envs.length; ++i) { + var value = Environment.getEnv(envs[i]) || ''; + if (value.length > 0) + result = result.concat(value.split(pathListSeparator)); + } + return result; +} + function configure(selectors, names, nameSuffixes, nameFilter, candidateFilter, searchPaths, pathSuffixes, platformSearchPaths, environmentPaths, platformEnvironmentPaths, pathListSeparator) { @@ -90,14 +101,11 @@ function configure(selectors, names, nameSuffixes, nameFilter, candidateFilter, }); // FIXME: Suggest how to obtain paths from system - var _paths = ModUtils.concatAll(searchPaths, platformSearchPaths); - // FIXME: Add getenv support - var envs = ModUtils.concatAll(platformEnvironmentPaths, environmentPaths); - for (var i = 0; i < envs.length; ++i) { - var value = Environment.getEnv(envs[i]) || ''; - if (value.length > 0) - _paths = _paths.concat(value.split(pathListSeparator)); - } + var _paths = ModUtils.concatAll( + pathsFromEnvs(environmentPaths, pathListSeparator), + searchPaths, + pathsFromEnvs(platformEnvironmentPaths, pathListSeparator), + platformSearchPaths); var _suffixes = ModUtils.concatAll('', pathSuffixes); _paths = _paths.map(function(p) { return FileInfo.fromNativeSeparators(p); }); _suffixes = _suffixes.map(function(p) { return FileInfo.fromNativeSeparators(p); }); |