aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-01-09 15:36:30 +0000
committerJussi Pakkanen <jpakkane@gmail.com>2018-01-30 06:48:22 +1100
commit6a1a56ab57ed29d31c9550d9725e60e2fb67ac6c (patch)
tree1f60320fc3fb39d05c2a5872b928984b23f97d58 /mesonbuild
parent26b16e74a904d882d2505ee8bab42a3fafd17ac2 (diff)
downloadmeson-6a1a56ab57ed29d31c9550d9725e60e2fb67ac6c.zip
meson-6a1a56ab57ed29d31c9550d9725e60e2fb67ac6c.tar.gz
meson-6a1a56ab57ed29d31c9550d9725e60e2fb67ac6c.tar.bz2
Report warning/error locations in a format IDEs may already know how to parse
Examples: meson.build:2:0: ERROR: Dependency is both required and not-found meson.build:4: WARNING: Keyword argument "link_with" defined multiple times. These are already matched by the default compilation-error-regexp-alist in emacs. Also: Don't start 'red' markup until after the \n before an error Unabsorb full-stop at end of warning with location from mlog.warning() Update warning_location test
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/interpreter.py4
-rw-r--r--mesonbuild/interpreterbase.py2
-rw-r--r--mesonbuild/mesonmain.py5
-rw-r--r--mesonbuild/mlog.py7
-rw-r--r--mesonbuild/mparser.py2
5 files changed, 12 insertions, 8 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index b5ced9b..a33e847 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1583,7 +1583,7 @@ class Interpreter(InterpreterBase):
modname = args[0]
if modname.startswith('unstable-'):
plainname = modname.split('-', 1)[1]
- mlog.warning('Module %s has no backwards or forwards compatibility and might not exist in future releases' % modname, location=node)
+ mlog.warning('Module %s has no backwards or forwards compatibility and might not exist in future releases.' % modname, location=node)
modname = 'unstable_' + plainname
if modname not in self.environment.coredata.modules:
try:
@@ -2756,7 +2756,7 @@ root and issuing %s.
var_list = ", ".join(map(repr, sorted(missing_variables)))
mlog.warning(
"The variable(s) %s in the input file %s are not "
- "present in the given configuration data" % (
+ "present in the given configuration data." % (
var_list, inputfile), location=node)
else:
mesonlib.dump_conf_header(ofile_abs, conf.held_object)
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index 9dc6b0f..35ca5c8 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -74,7 +74,7 @@ class permittedKwargs:
loc = None
for k in kwargs:
if k not in self.permitted:
- mlog.warning('''Passed invalid keyword argument "{}"'''.format(k), location=loc)
+ mlog.warning('''Passed invalid keyword argument "{}".'''.format(k), location=loc)
mlog.warning('This will become a hard error in the future.')
return f(s, node_or_state, args, kwargs)
return wrapped
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py
index 11a631a..619aa39 100644
--- a/mesonbuild/mesonmain.py
+++ b/mesonbuild/mesonmain.py
@@ -366,10 +366,11 @@ def run(original_args, mainfile=None):
app.generate()
except Exception as e:
if isinstance(e, MesonException):
+ mlog.log()
if hasattr(e, 'file') and hasattr(e, 'lineno') and hasattr(e, 'colno'):
- mlog.log(mlog.red('\nMeson encountered an error in file %s, line %d, column %d:' % (e.file, e.lineno, e.colno)))
+ mlog.log('%s:%d:%d:' % (e.file, e.lineno, e.colno), mlog.red('ERROR: '), end='')
else:
- mlog.log(mlog.red('\nMeson encountered an error:'))
+ mlog.log(mlog.red('ERROR: '), end='')
# Error message
mlog.log(e)
# Path to log file
diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py
index aa2ac20..273552d 100644
--- a/mesonbuild/mlog.py
+++ b/mesonbuild/mlog.py
@@ -105,12 +105,15 @@ def log(*args, **kwargs):
def warning(*args, **kwargs):
from . import environment
+ args = (yellow('WARNING:'),) + args
+
if kwargs.get('location'):
location = kwargs['location']
del kwargs['location']
- args += ('in file {}, line {}.'.format(os.path.join(location.subdir, environment.build_filename), location.lineno),)
+ location = '{}:{}:'.format(os.path.join(location.subdir, environment.build_filename), location.lineno)
+ args = (location,) + args
- log(yellow('WARNING:'), *args, **kwargs)
+ log(*args, **kwargs)
# Format a list for logging purposes as a string. It separates
# all but the last item with commas, and the last with 'and'.
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py
index eb03393..5df056f 100644
--- a/mesonbuild/mparser.py
+++ b/mesonbuild/mparser.py
@@ -368,7 +368,7 @@ class ArgumentNode:
def set_kwarg(self, name, value):
if name in self.kwargs:
- mlog.warning('Keyword argument "{}" defined multiple times'.format(name), location=self)
+ mlog.warning('Keyword argument "{}" defined multiple times.'.format(name), location=self)
mlog.warning('This will be an error in future Meson releases.')
self.kwargs[name] = value