Configure monorepo build to include plugins-rs?

I was able to manually hack and compile the plugins, but I didn’t get it’s it’s possible at all to configure meson on the monorepo so that it includes and compiles gst-plugins-rs all together with the rest.

The thing is, it’s disabled by default and AV1 is kinda impossible to do without rtpav1pay, which is in rust, even tho av1parse, is included by default…? any way we could improve the experience here?

I’ve tried many things, but always got with an empty gst-plugins-rs folder in my build folder and this python error I coult not get over, even after manually copying the source in there.

Things I’ve tried:

  • when doing meson setup builddir/ -Drs=enabled
[...]

Subproject gtk : skipped: feature gtk disabled

Executing subproject gst-plugins-rs

Traceback (most recent call last):
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/mesonmain.py", line 193, in run
    return options.run_func(options)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/msetup.py", line 365, in run
    app.generate()
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/msetup.py", line 188, in generate
    return self._generate(env, capture, vslite_ctx)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/msetup.py", line 227, in _generate
    intr.run()
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 3065, in run
    super().run()
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 169, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 241, in evaluate_statement
    self.evaluate_foreach(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 479, in evaluate_foreach
    self.evaluate_codeblock(node.block)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 219, in evaluate_statement
    return self.evaluate_if(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 314, in evaluate_if
    self.evaluate_codeblock(node.elseblock.block)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 205, in evaluate_statement
    self.assignment(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 642, in assignment
    value = self.evaluate_statement(node.value)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 201, in evaluate_statement
    return self.function_call(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 528, in function_call
    res = func(node, func_args, kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/decorators.py", line 237, in wrapper
    return f(*nargs, **wrapped_kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/decorators.py", line 556, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 868, in func_subproject
    return self.do_subproject(args[0], kw)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 950, in do_subproject
    raise e
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 938, in do_subproject
    return methods_map[method](subp_name, subdir, default_options, kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 973, in _do_subproject_meson
    subi = Interpreter(new_build, self.backend, subp_name, subdir, self.subproject_dir,
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 322, in __init__
    self.parse_project()
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 129, in parse_project
    self.evaluate_codeblock(self.ast, end=1)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    raise e
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 201, in evaluate_statement
    return self.function_call(cur)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 528, in function_call
    res = func(node, func_args, kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/decorators.py", line 237, in wrapper
    return f(*nargs, **wrapped_kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreterbase/decorators.py", line 556, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/interpreter/interpreter.py", line 1298, in func_project
    r = wrap.Resolver(self.environment.get_source_dir(), subdir, self.subproject, wrap_mode)
  File "<string>", line 10, in __init__
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/wrap/wrap.py", line 314, in __post_init__
    self.load_wraps()
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/wrap/wrap.py", line 331, in load_wraps
    for wrap in cargo.load_wraps(source_dir, self.subdir_root):
  File "/home/jetson/.local/lib/python3.8/site-packages/mesonbuild/cargo/interpreter.py", line 755, in load_wraps
    for package in cargolock['package']:
KeyError: 'package'

subprojects/gst-plugins-rs/meson.build:1:0: ERROR: Unhandled python exception

    This is a Meson bug and should be reported!

tried also meson configure build.old/ -Drs=enabled, but no difference…

I have cargo & cargo-c installed, not sure what I am missing…

Thank you!
R

Just to be sure, you can also build gst-plugins-rs (or just the rtp plugin there) separately using cargo once you have built the other monorepo modules. Either inside the uninstalled dev environment, or against the installed libraries (with PKG_CONFIG_PATH etc set).

Not an answer to your question, but I think there’s not enough info there anyway (what branch/commit are you building? what’s the full meson configure log etc.)

Thanks for your reply. Yes, I managed to build them separately as mentioned before, but I was wondering how is it supposed to work with the monorepo build and configure steps, for example to compile just the video plugins in rust, not all?

I’m using just the git main branch from yesterday (version 1.25.1.1) and the commands that i’ve posted above.