aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2023-06-25 02:49:33 -0400
committerEli Schwartz <eschwartz@archlinux.org>2023-06-26 13:08:57 -0400
commit620bdf5895131f9e58da4c980a28dc96986d0b57 (patch)
tree084152f85bfb8558cb616f504b6aa97502a4837d /mesonbuild
parent25f5f3554de6c80ace9ed211fa8c851505d95770 (diff)
downloadmeson-620bdf5895131f9e58da4c980a28dc96986d0b57.zip
meson-620bdf5895131f9e58da4c980a28dc96986d0b57.tar.gz
meson-620bdf5895131f9e58da4c980a28dc96986d0b57.tar.bz2
add profiling startup import check and testcase to count it
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/msetup.py28
1 files changed, 13 insertions, 15 deletions
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: