diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-07-05 23:23:49 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-07-06 06:25:12 +0000 |
commit | e4417eb301bab96c343c5b95f074d1900706b667 (patch) | |
tree | cde1f15ba6c58deacaf39f5e7d66476a1d14286a | |
parent | 1415cd2d07477158bcc03a333a78522a3c972938 (diff) | |
download | meson-e4417eb301bab96c343c5b95f074d1900706b667.zip meson-e4417eb301bab96c343c5b95f074d1900706b667.tar.gz meson-e4417eb301bab96c343c5b95f074d1900706b667.tar.bz2 |
mlog: Log timestamps in profile-self mode
This makes it much clearer which statements are taking a long time,
and helps in interpreting the outputted profile itself.
-rw-r--r-- | mesonbuild/mesonmain.py | 3 | ||||
-rw-r--r-- | mesonbuild/mlog.py | 13 |
2 files changed, 15 insertions, 1 deletions
diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index 8a19631..1aca9c6 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import time import sys, stat, traceback, argparse import datetime import os.path @@ -110,6 +111,8 @@ class MesonApp: def generate(self): env = environment.Environment(self.source_dir, self.build_dir, self.options) mlog.initialize(env.get_log_dir()) + if self.options.profile: + mlog.set_timestamp_start(time.monotonic()) with mesonlib.BuildDirLock(self.build_dir): self._generate(env) diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py index 3baa07a..b763e20 100644 --- a/mesonbuild/mlog.py +++ b/mesonbuild/mlog.py @@ -12,7 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys, os, platform, io +import os +import io +import sys +import time +import platform from contextlib import contextmanager """This is (mostly) a standalone module used to write logging @@ -41,12 +45,17 @@ log_dir = None log_file = None log_fname = 'meson-log.txt' log_depth = 0 +log_timestamp_start = None def initialize(logdir): global log_dir, log_file log_dir = logdir log_file = open(os.path.join(logdir, log_fname), 'w', encoding='utf8') +def set_timestamp_start(start): + global log_timestamp_start + log_timestamp_start = start + def shutdown(): global log_file if log_file is not None: @@ -87,6 +96,8 @@ def cyan(text): def process_markup(args, keep): arr = [] + if log_timestamp_start is not None: + arr = ['[{:.3f}]'.format(time.monotonic() - log_timestamp_start)] for arg in args: if isinstance(arg, str): arr.append(arg) |