From 620bdf5895131f9e58da4c980a28dc96986d0b57 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Sun, 25 Jun 2023 02:49:33 -0400 Subject: add profiling startup import check and testcase to count it --- mesonbuild/msetup.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'mesonbuild') diff --git a/mesonbuild/msetup.py b/mesonbuild/msetup.py index 263ce19..edc6330 100644 --- a/mesonbuild/msetup.py +++ b/mesonbuild/msetup.py @@ -13,25 +13,14 @@ # limitations under the License. from __future__ import annotations -import typing as T -import time -import sys -import datetime -import os.path -import platform +import argparse, datetime, glob, json, os, platform, shutil, sys, tempfile, time import cProfile as profile -import argparse -import tempfile -import shutil -import glob from pathlib import Path +import typing as T -from . import environment, interpreter, mesonlib -from . import build -from . import mlog, coredata -from . import mintro -from .mesonlib import MesonException, MachineChoice +from . import build, coredata, environment, interpreter, mesonlib, mintro, mlog from .dependencies import PkgConfigDependency +from .mesonlib import MachineChoice, MesonException git_ignore_file = '''# This file is autogenerated by Meson. If you change or delete it, it won't be recreated. * @@ -291,6 +280,15 @@ class MesonApp: 'Please consider using `meson devenv` instead. See https://github.com/mesonbuild/meson/pull/9243 ' 'for details.') + if self.options.profile: + fname = os.path.join(self.build_dir, 'meson-logs', 'profile-startup-modules.json') + mods = set(sys.modules.keys()) + mesonmods = {mod for mod in mods if (mod+'.').startswith('mesonbuild.')} + stdmods = sorted(mods - mesonmods) + data = {'stdlib': {'modules': stdmods, 'count': len(stdmods)}, 'meson': {'modules': sorted(mesonmods), 'count': len(mesonmods)}} + with open(fname, 'w', encoding='utf-8') as f: + json.dump(data, f) + except Exception as e: mintro.write_meson_info_file(b, [e]) if cdf is not None: -- cgit v1.1