This adds a hidden option to dump the current otherwise hidden peristant state in coredata.dat. This interface is unstable as meson has no compatibility promises about coredata.dat.pull/4745/head
parent
3232f780d8
commit
768fa502ac
2 changed files with 129 additions and 1 deletions
@ -0,0 +1,126 @@ |
|||||||
|
# Copyright 2019 The Meson development team |
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
# you may not use this file except in compliance with the License. |
||||||
|
# You may obtain a copy of the License at |
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software |
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
# See the License for the specific language governing permissions and |
||||||
|
# limitations under the License. |
||||||
|
|
||||||
|
|
||||||
|
from . import coredata as cdata |
||||||
|
|
||||||
|
import os.path |
||||||
|
import pprint |
||||||
|
import textwrap |
||||||
|
|
||||||
|
def add_arguments(parser): |
||||||
|
parser.add_argument('--all', action='store_true', dest='all', default=False, |
||||||
|
help='Show data not used by current backend.') |
||||||
|
|
||||||
|
parser.add_argument('builddir', nargs='?', default='.', help='The build directory') |
||||||
|
|
||||||
|
|
||||||
|
def dump_compilers(compilers): |
||||||
|
for lang, compiler in compilers.items(): |
||||||
|
print(' ' + lang + ':') |
||||||
|
print(' Id: ' + compiler.id) |
||||||
|
print(' Command: ' + ' '.join(compiler.exelist)) |
||||||
|
print(' Full version: ' + compiler.full_version) |
||||||
|
print(' Detected version: ' + compiler.version) |
||||||
|
print(' Detected type: ' + repr(compiler.compiler_type)) |
||||||
|
#pprint.pprint(compiler.__dict__) |
||||||
|
|
||||||
|
|
||||||
|
def dump_guids(d): |
||||||
|
for name, value in d.items(): |
||||||
|
print(' ' + name + ': ' + value) |
||||||
|
|
||||||
|
|
||||||
|
def run(options): |
||||||
|
datadir = 'meson-private' |
||||||
|
if options.builddir is not None: |
||||||
|
datadir = os.path.join(options.builddir, datadir) |
||||||
|
if not os.path.isdir(datadir): |
||||||
|
print('Current directory is not a build dir. Please specify it or ' |
||||||
|
'change the working directory to it.') |
||||||
|
return 1 |
||||||
|
|
||||||
|
all = options.all |
||||||
|
|
||||||
|
print('This is a dump of the internal unstable cache of meson. This is for debugging only.') |
||||||
|
print('Do NOT parse, this will change from version to version in incompatible ways') |
||||||
|
print('') |
||||||
|
|
||||||
|
coredata = cdata.load(options.builddir) |
||||||
|
backend = coredata.get_builtin_option('backend') |
||||||
|
for k, v in sorted(coredata.__dict__.items()): |
||||||
|
if k in ('backend_options', 'base_options', 'builtins', 'compiler_options', 'user_options'): |
||||||
|
# use `meson configure` to view these |
||||||
|
pass |
||||||
|
elif k in ['install_guid', 'test_guid', 'regen_guid']: |
||||||
|
if all or backend.startswith('vs'): |
||||||
|
print(k + ': ' + v) |
||||||
|
elif k == 'target_guids': |
||||||
|
if all or backend.startswith('vs'): |
||||||
|
print(k + ':') |
||||||
|
dump_guids(v) |
||||||
|
elif k in ['lang_guids']: |
||||||
|
if all or backend.startswith('vs') or backend == 'xcode': |
||||||
|
print(k + ':') |
||||||
|
dump_guids(v) |
||||||
|
elif k == 'meson_command': |
||||||
|
if all or backend.startswith('vs'): |
||||||
|
print('Meson command used in build file regeneration: ' + ' '.join(v)) |
||||||
|
elif k == 'pkgconf_envvar': |
||||||
|
print('Last seen PKGCONFIG enviroment variable value: ' + v) |
||||||
|
elif k == 'version': |
||||||
|
print('Meson version: ' + v) |
||||||
|
elif k == 'cross_file': |
||||||
|
print('Cross File: ' + (v or 'None')) |
||||||
|
elif k == 'config_files': |
||||||
|
if v: |
||||||
|
print('Native File: ' + ' '.join(v)) |
||||||
|
elif k == 'compilers': |
||||||
|
print('Cached native compilers:') |
||||||
|
dump_compilers(v) |
||||||
|
elif k == 'cross_compilers': |
||||||
|
print('Cached cross compilers:') |
||||||
|
dump_compilers(v) |
||||||
|
elif k == 'deps': |
||||||
|
native = [] |
||||||
|
cross = [] |
||||||
|
for dep_key, dep in sorted(v.items()): |
||||||
|
if dep_key[2]: |
||||||
|
cross.append((dep_key, dep)) |
||||||
|
else: |
||||||
|
native.append((dep_key, dep)) |
||||||
|
|
||||||
|
def print_dep(dep_key, dep): |
||||||
|
print(' ' + dep_key[0] + ": ") |
||||||
|
print(' compile args: ' + repr(dep.get_compile_args())) |
||||||
|
print(' link args: ' + repr(dep.get_link_args())) |
||||||
|
if dep.get_sources(): |
||||||
|
print(' sources: ' + repr(dep.get_sources())) |
||||||
|
print(' version: ' + repr(dep.get_version())) |
||||||
|
|
||||||
|
if native: |
||||||
|
print('Cached native dependencies:') |
||||||
|
for dep_key, dep in native: |
||||||
|
print_dep(dep_key, dep) |
||||||
|
if cross: |
||||||
|
print('Cached dependencies:') |
||||||
|
for dep_key, dep in cross: |
||||||
|
print_dep(dep_key, dep) |
||||||
|
elif k == 'external_preprocess_args': |
||||||
|
for lang, opts in v.items(): |
||||||
|
if opts: |
||||||
|
print('Preprocessor args for ' + lang + ': ' + ' '.join(opts)) |
||||||
|
else: |
||||||
|
print(k + ':') |
||||||
|
print(textwrap.indent(pprint.pformat(v), ' ')) |
Loading…
Reference in new issue