mirror of
https://gitlab.com/qemu-project/meson.git
synced 2025-07-02 18:21:54 +08:00

One percent-formatted string had a .format() method style placeholder and thus never output anything other than TypeError: not all arguments converted during string formatting The other error may be due to changing format elsewhere, because it attempted to treat an entire tuple as though it only contained one element. Based on context, it's clear this is supposed to be the actual dependency name, but the internal representation may have changed over time. These fixes allow the command to run to completion successfully; of course it is still unstable and possibly not actually maintained, since it's been broken for 2 years and no one actually noticed.
115 lines
4.5 KiB
Python
115 lines
4.5 KiB
Python
# 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
|
|
from .mesonlib import MachineChoice, OptionKey
|
|
|
|
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))
|
|
if compiler.full_version:
|
|
print(' Full version: ' + compiler.full_version)
|
|
if compiler.version:
|
|
print(' Detected version: ' + compiler.version)
|
|
|
|
|
|
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_backends = 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_option(OptionKey('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_backends or backend.startswith('vs'):
|
|
print(k + ': ' + v)
|
|
elif k == 'target_guids':
|
|
if all_backends or backend.startswith('vs'):
|
|
print(k + ':')
|
|
dump_guids(v)
|
|
elif k in ['lang_guids']:
|
|
if all_backends or backend.startswith('vs') or backend == 'xcode':
|
|
print(k + ':')
|
|
dump_guids(v)
|
|
elif k == 'meson_command':
|
|
if all_backends or backend.startswith('vs'):
|
|
print('Meson command used in build file regeneration: ' + ' '.join(v))
|
|
elif k == 'pkgconf_envvar':
|
|
print('Last seen PKGCONFIG environment variable value: ' + v)
|
|
elif k == 'version':
|
|
print('Meson version: ' + v)
|
|
elif k == 'cross_files':
|
|
if v:
|
|
print('Cross File: ' + ' '.join(v))
|
|
elif k == 'config_files':
|
|
if v:
|
|
print('Native File: ' + ' '.join(v))
|
|
elif k == 'compilers':
|
|
for for_machine in MachineChoice:
|
|
print('Cached {} machine compilers:'.format(
|
|
for_machine.get_lower_case_name()))
|
|
dump_compilers(v[for_machine])
|
|
elif k == 'deps':
|
|
def print_dep(dep_key, dep):
|
|
print(' ' + dep_key[0][1] + ": ")
|
|
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()))
|
|
|
|
for for_machine in iter(MachineChoice):
|
|
items_list = list(sorted(v[for_machine].items()))
|
|
if items_list:
|
|
print(f'Cached dependencies for {for_machine.get_lower_case_name()} machine')
|
|
for dep_key, deps in items_list:
|
|
for dep in deps:
|
|
print_dep(dep_key, dep)
|
|
else:
|
|
print(k + ':')
|
|
print(textwrap.indent(pprint.pformat(v), ' '))
|