Skip to content

Bug with MSVC Compiler (meson 1.5.0) #13402

@Totto16

Description

@Totto16

Describe the bug

When building my project, that uses the wrap file from cpp-httplib as subproject, it fails while configuring that subproject.

Error trace:

Executing subproject cpp-httplib

cpp-httplib| Project name: cpp-httplib
cpp-httplib| Project version: undefined
cpp-httplib| C++ compiler for the host machine: cl (msvc 19.40.33812 "Microsoft (R) C/C++-Optimierungscompiler Version 19.40.33812 für x64")
cpp-httplib| C++ linker for the host machine: link link 14.40.33812.0
cpp-httplib| WARNING: msvc does not support C++11; attempting best effort; setting the standard to C++14
Traceback (most recent call last):
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\mesonmain.py", line 188, in run
    return options.run_func(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\msetup.py", line 364, in run
    app.generate()
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\msetup.py", line 187, in generate
    return self._generate(env, capture, vslite_ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\msetup.py", line 226, in _generate
    intr.run()
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 3032, in run
    super().run()
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 169, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 201, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 528, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 250, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 569, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 2451, in func_subdir
    self.evaluate_codeblock(codeblock)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 219, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 309, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 219, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 314, in evaluate_if
    self.evaluate_codeblock(node.elseblock.block)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 205, in evaluate_statement
    self.assignment(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 642, in assignment
    value = self.evaluate_statement(node.value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 201, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 528, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 799, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 799, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 799, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  [Previous line repeated 4 more times]
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 98, in wrapped
    ret = f(*wrapped_args, **wrapped_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 116, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 250, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 569, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 1809, in func_dependency
    d = df.lookup(kwargs)
        ^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\dependencyfallbacks.py", line 354, in lookup
    dep = func(kwargs, func_args, func_kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\dependencyfallbacks.py", line 130, in _do_subproject
    self.interpreter.do_subproject(subp_name, func_kwargs)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 948, in do_subproject
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 936, in do_subproject
    return methods_map[method](subp_name, subdir, default_options, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 987, in _do_subproject_meson
    subi.run()
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\interpreter.py", line 3032, in run
    super().run()
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 169, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 219, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 309, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 205, in evaluate_statement
    self.assignment(cur)
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 642, in assignment
    value = self.evaluate_statement(node.value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 207, in evaluate_statement
    return self.method_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 542, in method_call
    obj = self.evaluate_statement(invocable)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 207, in evaluate_statement
    return self.method_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\interpreterbase.py", line 557, in method_call
    res = obj.method_call(method_name, args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\baseobjects.py", line 81, in method_call
    return method(args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 663, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 250, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreterbase\decorators.py", line 569, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\compiler.py", line 497, in get_define_method
    value, cached = self.compiler.get_define(element, kwargs['prefix'], self.environment,
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\compilers\mixins\clike.py", line 654, in get_define
    args = self.build_wrapper_args(env, extra_args, dependencies,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\compilers\mixins\clike.py", line 420, in build_wrapper_args
    extra_args = mesonlib.listify([e(mode.value) if callable(e) else e for e in extra_args])
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\compilers\mixins\clike.py", line 420, in <listcomp>
    extra_args = mesonlib.listify([e(mode.value) if callable(e) else e for e in extra_args])
                                   ^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\interpreter\compiler.py", line 274, in _determine_args
    args += self.compiler.get_option_compile_args(opts)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\compilers\cpp.py", line 857, in get_option_compile_args
    args = super().get_option_compile_args(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\compilers\cpp.py", line 816, in get_option_compile_args
    options.set_value(key,  'c++14')
  File "~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mesonbuild\coredata.py", line 940, in set_value
    self.overrides[key] = value
    ~~~~~~~~~~~~~~^^^^^
TypeError: 'NoneType' object does not support item assignment

subprojects\cpp-httplib-0.15.3\meson.build:24:16: ERROR: Unhandled python exception

    This is a Meson bug and should be reported!

To Reproduce

Just use the wrap-file for cpp-httplib from the wrapDB. Try to setup a project with it a subproject or use it as standalone target (meson setup builddir/ -Dwraps=cpp-httplib)

Expected behavior
It works as before the 1.5.0 version.
The last tested working version was 1.4.2 (which is strange)

All other compilers and OSes seem to work, see e.g. these CI runs.
I tested it on MacOS, Linux Clang + Linux GCC , Windows Msys2 Mingw64 and UCRT64.

system parameters

  • Native build
  • OS: Windows 10
  • python: 3.11.2
  • meson: 1.5.0
  • MSVC: VS 17.10.4

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions