aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorfghzxm <fghzxm@outlook.com>2022-05-09 12:53:58 +0800
committerDaniel Mensinger <daniel@mensinger-ka.de>2022-05-09 21:42:02 +0200
commit7650f328284f24c2f70dcfb1689ae8fc22c04cf1 (patch)
tree5ca75de87fa19b44899371e4edf7fff81bfaefd8 /mesonbuild
parentaa874ea0d020aee90595c2adfb43866fcaabfdb7 (diff)
downloadmeson-7650f328284f24c2f70dcfb1689ae8fc22c04cf1.zip
meson-7650f328284f24c2f70dcfb1689ae8fc22c04cf1.tar.gz
meson-7650f328284f24c2f70dcfb1689ae8fc22c04cf1.tar.bz2
dependencies/boost.py: ignore unknown files
If we encounter a file under the Boost library directory that doesn't look like a Boost library binary, we should ignore it. We log a warning for each file we ignore, except for ones we know are safe to ignore (e. g. PDB files from the SourceForge Windows distribution). This should avoid polluting the log. Fixes #8325.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/dependencies/boost.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/mesonbuild/dependencies/boost.py b/mesonbuild/dependencies/boost.py
index 544e844..8c552f5 100644
--- a/mesonbuild/dependencies/boost.py
+++ b/mesonbuild/dependencies/boost.py
@@ -13,6 +13,7 @@
# limitations under the License.
import re
+import dataclasses
import functools
import typing as T
from pathlib import Path
@@ -83,6 +84,10 @@ if T.TYPE_CHECKING:
# 2.4 Ensure that all libraries have the same boost tag (and are thus compatible)
# 3. Select the libraries matching the requested modules
+@dataclasses.dataclass(eq=False, order=False)
+class UnknownFileException(Exception):
+ path: Path
+
@functools.total_ordering
class BoostIncludeDir():
def __init__(self, path: Path, version_int: int):
@@ -152,7 +157,7 @@ class BoostLibraryFile():
elif self.nvsuffix in ['a', 'lib']:
self.static = True
else:
- raise DependencyException(f'Unable to process library extension "{self.nvsuffix}" ({self.path})')
+ raise UnknownFileException(self.path)
# boost_.lib is the dll import library
if self.basename.startswith('boost_') and self.nvsuffix == 'lib':
@@ -623,8 +628,15 @@ class BoostDependency(SystemDependency):
continue
if not any([i.name.startswith(x) for x in ['libboost_', 'boost_']]):
continue
+ # Windows binaries from SourceForge ship with PDB files alongside
+ # DLLs (#8325). Ignore them.
+ if i.name.endswith('.pdb'):
+ continue
- libs.add(BoostLibraryFile(i.resolve()))
+ try:
+ libs.add(BoostLibraryFile(i.resolve()))
+ except UnknownFileException as e:
+ mlog.warning('Boost: ignoring unknown file {} under lib directory'.format(e.path.name))
return [x for x in libs if x.is_boost()] # Filter out no boost libraries