aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter/dependencyfallbacks.py2
-rw-r--r--mesonbuild/interpreter/interpreter.py2
-rw-r--r--mesonbuild/interpreter/mesonmain.py2
-rw-r--r--mesonbuild/interpreterbase/baseobjects.py2
-rwxr-xr-xmesonbuild/msubprojects.py6
-rwxr-xr-xpackaging/createmsi.py9
-rw-r--r--test cases/unit/82 meson version compare/meson.build2
-rw-r--r--test cases/unit/82 meson version compare/subprojects/foo/meson.build8
8 files changed, 28 insertions, 5 deletions
diff --git a/mesonbuild/interpreter/dependencyfallbacks.py b/mesonbuild/interpreter/dependencyfallbacks.py
index 019073c..2639e42 100644
--- a/mesonbuild/interpreter/dependencyfallbacks.py
+++ b/mesonbuild/interpreter/dependencyfallbacks.py
@@ -17,7 +17,7 @@ if T.TYPE_CHECKING:
class DependencyFallbacksHolder(MesonInterpreterObject):
def __init__(self, interpreter: 'Interpreter', names: T.List[str], allow_fallback: T.Optional[bool] = None) -> None:
- super().__init__()
+ super().__init__(subproject=interpreter.subproject)
self.interpreter = interpreter
self.subproject = interpreter.subproject
self.coredata = interpreter.coredata
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 488b034..97940d3 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -2759,4 +2759,4 @@ This will become a hard error in the future.''', location=self.current_node)
raise InterpreterException('stop cannot be less than start')
if step < 1:
raise InterpreterException('step must be >=1')
- return RangeHolder(start, stop, step)
+ return RangeHolder(start, stop, step, subproject=self.subproject)
diff --git a/mesonbuild/interpreter/mesonmain.py b/mesonbuild/interpreter/mesonmain.py
index bea12e0..97a695b 100644
--- a/mesonbuild/interpreter/mesonmain.py
+++ b/mesonbuild/interpreter/mesonmain.py
@@ -22,7 +22,7 @@ if T.TYPE_CHECKING:
class MesonMain(MesonInterpreterObject):
def __init__(self, build: 'build.Build', interpreter: 'Interpreter'):
- super().__init__()
+ super().__init__(subproject=interpreter.subproject)
self.build = build
self.interpreter = interpreter
self.methods.update({'get_compiler': self.get_compiler_method,
diff --git a/mesonbuild/interpreterbase/baseobjects.py b/mesonbuild/interpreterbase/baseobjects.py
index e65e4cb..8b1293c 100644
--- a/mesonbuild/interpreterbase/baseobjects.py
+++ b/mesonbuild/interpreterbase/baseobjects.py
@@ -82,7 +82,7 @@ class ObjectHolder(InterpreterObject, T.Generic[InterpreterObjectTypeVar]):
return f'<[{type(self).__name__}] holds [{type(self.held_object).__name__}]: {self.held_object!r}>'
class RangeHolder(MesonInterpreterObject):
- def __init__(self, start: int, stop: int, step: int, *, subproject: T.Optional[str] = None) -> None:
+ def __init__(self, start: int, stop: int, step: int, *, subproject: str) -> None:
super().__init__(subproject=subproject)
self.range = range(start, stop, step)
diff --git a/mesonbuild/msubprojects.py b/mesonbuild/msubprojects.py
index 5d1fb72..269f0fe 100755
--- a/mesonbuild/msubprojects.py
+++ b/mesonbuild/msubprojects.py
@@ -70,7 +70,11 @@ class Runner:
def run(self):
self.logger.start(self.wrap.name)
- result = self.run_method()
+ try:
+ result = self.run_method()
+ except MesonException as e:
+ self.log(mlog.red('Error:'), str(e))
+ result = False
self.logger.done(self.wrap.name, self.log_queue)
return result
diff --git a/packaging/createmsi.py b/packaging/createmsi.py
index fa1e644..c55688a 100755
--- a/packaging/createmsi.py
+++ b/packaging/createmsi.py
@@ -176,6 +176,7 @@ class PackageGenerator:
pyinst_cmd += ['meson.py']
subprocess.check_call(pyinst_cmd)
shutil.move(pyinstaller_tmpdir + '/meson', main_stage)
+ self.del_infodirs(main_stage)
if not os.path.exists(os.path.join(main_stage, 'meson.exe')):
sys.exit('Meson exe missing from staging dir.')
os.mkdir(ninja_stage)
@@ -183,6 +184,14 @@ class PackageGenerator:
if not os.path.exists(os.path.join(ninja_stage, 'ninja.exe')):
sys.exit('Ninja exe missing from staging dir.')
+ def del_infodirs(self, dirname):
+ # Starting with 3.9.something there are some
+ # extra metadatadirs that have a hyphen in their
+ # file names. This is a forbidden character in WiX
+ # filenames so delete them.
+ for d in glob(os.path.join(dirname, '*-info')):
+ shutil.rmtree(d)
+
def generate_files(self):
'''
Generate package files for MSI installer package
diff --git a/test cases/unit/82 meson version compare/meson.build b/test cases/unit/82 meson version compare/meson.build
index ed69a8b..4affe21 100644
--- a/test cases/unit/82 meson version compare/meson.build
+++ b/test cases/unit/82 meson version compare/meson.build
@@ -15,3 +15,5 @@ endif
# This will error out if elif cause did not enter
assert(foo_dep.found(), 'meson.version_compare did not work')
+
+subproject('foo')
diff --git a/test cases/unit/82 meson version compare/subprojects/foo/meson.build b/test cases/unit/82 meson version compare/subprojects/foo/meson.build
new file mode 100644
index 0000000..4c66b70
--- /dev/null
+++ b/test cases/unit/82 meson version compare/subprojects/foo/meson.build
@@ -0,0 +1,8 @@
+project('foo', meson_version: '>= 0.1')
+
+if meson.version().version_compare('>= 0.55')
+ # This Should not produce warning even when using function not available in
+ # meson 0.1.
+ foo_dep = declare_dependency()
+ meson.override_dependency('foo2', foo_dep)
+endif