Skip to content

rust: can't load cargo package with git source #13335

@ognevny

Description

@ognevny

Describe the bug

when cargo packages put in subprojects directory, some of them can't be setup

To Reproduce

repo: https://github.com/ognevny/my-code/tree/refactor-meson/subprojects. it contains multiple cargo packages. run meson setup -Dbuild_rust=true build to reproduce

Expected behavior

successful setup

system parameters

Is this a [cross build](https://mesonbuild.com/Cross-compilation.html) or just a plain native build: native build
what operating system: Archlinux
what Python version are you using: 3.12.3
what meson --version: 1.4.99
what ninja --version: 1.12.1

Actual behaivour

meson log
The Meson build system
Version: 1.4.99
Source dir: /home/ogn/upstream/my-code
Build dir: /home/ogn/upstream/my-code/build
Build type: native build
Project name: ognevny-my-code
Project version: 0.0.0
Host machine cpu family: x86_64
Host machine cpu: x86_64

Executing subproject ege1 method cargo

ege1| Generated Meson AST: /home/ogn/upstream/my-code/build/subprojects/ege1/meson.build
ege1| Project name: ege1
ege1| Project version: 0.1.0
ege1| Rust compiler for the host machine: rustc -C linker=cc (rustc 1.79.0)
ege1| Rust linker for the host machine: rustc -C linker=cc ld.bfd 2.42.0
ege1| Message: Enabled features: ['default']
ege1| Build targets in project: 0
ege1| Subproject ege1 finished.


Executing subproject first_word method cargo

first_word| Generated Meson AST: /home/ogn/upstream/my-code/build/subprojects/first_word/meson.build
first_word| Project name: first_word
first_word| Project version: 0.1.0
first_word| Rust compiler for the host machine: rustc -C linker=cc (rustc 1.79.0)
first_word| Rust linker for the host machine: rustc -C linker=cc ld.bfd 2.42.0
first_word| Message: Enabled features: ['default']
first_word| Build targets in project: 0
first_word| Subproject first_word finished.


Executing subproject integral method cargo

Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/mesonbuild/mesonmain.py", line 188, in run
    return options.run_func(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/msetup.py", line 363, in run
    app.generate()
  File "/usr/lib/python3.12/site-packages/mesonbuild/msetup.py", line 187, in generate
    return self._generate(env, capture, vslite_ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/msetup.py", line 226, in _generate
    intr.run()
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 3027, in run
    super().run()
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 169, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 219, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 309, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 201, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 528, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/decorators.py", line 250, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/decorators.py", line 569, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 867, in func_subproject
    return self.do_subproject(args[0], kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 948, in do_subproject
    raise e
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 936, in do_subproject
    return methods_map[method](subp_name, subdir, default_options, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 1044, in _do_subproject_cargo
    ast, options = cargo.interpret(subp_name, subdir, self.environment)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/cargo/interpreter.py", line 708, in interpret
    manifests = _load_manifests(os.path.join(env.source_dir, subdir))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/cargo/interpreter.py", line 338, in _load_manifests
    manifest_ = _convert_manifest(raw_manifest, subdir)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/cargo/interpreter.py", line 313, in _convert_manifest
    {k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('dependencies', {}).items()},
        ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/mesonbuild/cargo/interpreter.py", line 190, in from_raw
    return cls(name, **_fixup_raw_mappings(raw))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Dependency.__init__() missing 1 required positional argument: 'version'

meson.build:28:2: ERROR: Unhandled python exception

    This is a Meson bug and should be reported!

Originally posted by @ognevny in #12945 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependencies:cargoIssues related to using cargo subprojectsexceptionMajor bug that raises a python-level exceptionlanguage:rust

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions