Skip to content

executable w. application android_exe_type triggers KeyError #15238

@sp1ritCS

Description

@sp1ritCS

Describe the bug

Some change (very likely #15213) triggered a regression in regards to android_exe_type handling, breaking the GTK CI.

Stacktrace
Traceback (most recent call last):
  File "/home/florian/workspace/Android/meson5/mesonbuild/mesonmain.py", line 193, in run
    return options.run_func(options)
           ~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/msetup.py", line 404, in run
    app.generate()
    ~~~~~~~~~~~~^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/msetup.py", line 196, in generate
    return self._generate(env, capture, vslite_ctx)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/msetup.py", line 255, in _generate
    intr.run()
    ~~~~~~~~^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreter/interpreter.py", line 3058, in run
    super().run()
    ~~~~~~~~~~~^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 178, in run
    self.evaluate_codeblock(self.ast, start=1)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 203, in evaluate_codeblock
    raise e
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 195, in evaluate_codeblock
    self.evaluate_statement(cur)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 213, in evaluate_statement
    self.assignment(cur)
    ~~~~~~~~~~~~~~~^^^^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 644, in assignment
    value = self.evaluate_statement(node.value)
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 209, in evaluate_statement
    return self.function_call(cur)
           ~~~~~~~~~~~~~~~~~~^^^^^
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/interpreterbase.py", line 536, in function_call
    res = func(node, func_args, kwargs)
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/decorators.py", line 103, in wrapped
    return f(*wrapped_args, **wrapped_kwargs)
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/decorators.py", line 237, in wrapper
    return f(*nargs, **wrapped_kwargs)
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreterbase/decorators.py", line 565, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreter/interpreter.py", line 1830, in func_executable
    holder = self.build_target(node, args, self._strip_exe_specific_kwargs(kwargs), build.SharedLibrary)
  File "/home/florian/workspace/Android/meson5/mesonbuild/interpreter/interpreter.py", line 3468, in build_target
    kwargs['rust_abi'], kwargs['rust_crate_type'], 'dylib', 'cdylib', targetclass.typename,
    ~~~~~~^^^^^^^^^^^^
KeyError: 'rust_abi'

To Reproduce

Run the android/1 exe_type test-case. Annoyingly this doesn't currently happen in the CI due to it not being set-up for android cross compilation.

Expected behavior

The resulting target of an executable(..., android_exe_type: 'application') should be a shared library on android. Not sure in regards to the rust sources, probably cdylib? I was planing on looking on how to best integrate gtk-rs on android w. meson after #14952.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions