gi-rust / grust-gen

Rust code generator for GObject introspection
Other
4 stars 1 forks source link

Some documentation would be helpful (cannot generate EDataServer bindings) #3

Open mcepl opened 7 years ago

mcepl commented 7 years ago

I am probably too naive (just learning Rust), but when I try to generate import crate for Evolution Data Server bindings, it doesn't end well (using python 2.7.5 on RHEL-7 and evolution-data-server-devel-3.22.7-6):

matej@mitmanek: edataserver (master #%)$ grust-gen --sys /usr/share/gir-1.0/EDataServer-1.2.gir
Traceback (most recent call last):
  File "/home/matej/.local/bin/grust-gen", line 9, in <module>
    load_entry_point('grust-gen==0.3.0', 'console_scripts', 'grust-gen')()
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/genmain.py", line 97, in generator_main
    gir_filename=opts.girfile)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/generators/sys_crate.py", line 41, in __init__
    lambda node, chain: self._prepare_walk(node, chain))
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/giscanner/ast.py", line 510, in walk
    node.walk(callback, [])
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/giscanner/ast.py", line 641, in walk
    self._walk(callback, chain)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/giscanner/ast.py", line 1190, in _walk
    meth.walk(callback, chain)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/giscanner/ast.py", line 636, in walk
    res = callback(self, chain)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/generators/sys_crate.py", line 41, in <lambda>
    lambda node, chain: self._prepare_walk(node, chain))
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/generators/sys_crate.py", line 51, in _prepare_walk
    self._mapper.resolve_types_for_node(node)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/mapping.py", line 555, in resolve_types_for_node
    return self._resolve_callable(node)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/mapping.py", line 572, in _resolve_callable
    crates |= self.resolve_call_signature_type(param)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/mapping.py", line 631, in resolve_call_signature_type
    return self._resolve_type_internal(type_container.type, actual_ctype)
  File "/home/matej/archiv/knihovna/repos/grust-gen/grust/mapping.py", line 649, in _resolve_type_internal
    raise MappingError("can't represent type {}".format(typedesc))
TypeError: __str__ returned non-string (type NoneType)
matej@mitmanek: edataserver (master #%)$

What do I do wrong?

EDataServer-1.2.gir.txt

flukejones commented 7 years ago

@mcepl I suggest using https://github.com/gtk-rs/gir instead. grust has effectively been depreciated.