neelance / ffi_gen

A generator for Ruby FFI bindings, directly from header files via LLVM's Clang compiler
MIT License
88 stars 26 forks source link

libuv won't generate #27

Open fazibear opened 9 years ago

fazibear commented 9 years ago

Trying to generate libuv, but with no luck

require 'ffi_gen'

FFIGen.generate(
  module_name: "LibUV",
  ffi_lib:     "libuv",
  headers:     %w[
                 uv.h
               ],
  cflags:      `llvm-config --cflags`.split(" "),
  prefixes:    [],
  output:      "libuv.rb"
)

with llvm-3.5.0_2 installed on Yosemite

here is backtrace

/Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:328:in `block (2 levels) in read_named_declaration': undefined method `+' for nil:NilClass (NoMethodError)
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:319:in `catch'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:319:in `block in read_named_declaration'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:311:in `each'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:311:in `read_named_declaration'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:295:in `block in declarations'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:282:in `each'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:282:in `declarations'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen/ruby_output.rb:10:in `block in generate_rb'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:146:in `indent'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen/ruby_output.rb:5:in `generate_rb'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:238:in `generate'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.1.0/lib/ffi_gen.rb:479:in `generate'
fazibear commented 9 years ago

Still can't get it to work.

here is a backtrace:

Warning: Could not process value of macro "UV_EXTERN"
Warning: Could not process value of macro "XX"
Warning: Could not process value of macro "XX"
Warning: Could not process value of macro "XX"
Warning: Could not process value of macro "UV_REQ_FIELDS"
Warning: Could not process value of macro "UV_HANDLE_FIELDS"
Warning: Could not process value of macro "UV_STREAM_FIELDS"
Warning: Could not process value of macro "XX"
/Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:407:in `block in read_declaration': undefined method `+' for nil:NilClass (NoMethodError)
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:372:in `each'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:372:in `read_declaration'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:346:in `block in declarations'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:338:in `each'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:338:in `each_with_index'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:338:in `declarations'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen/ruby_output.rb:10:in `block in generate_rb'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:150:in `indent'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen/ruby_output.rb:5:in `generate_rb'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:280:in `generate'
    from /Users/fazibear/.rubies/2.2.0/lib/ruby/gems/2.2.0/gems/ffi_gen-1.2.0/lib/ffi_gen.rb:745:in `generate'
    from libuv.rb:3:in `<main>'
whitequark commented 9 years ago

Works for me with libuv from Debian testing... which version do you have?

fazibear commented 9 years ago

Installed with brew: libuv-1.1.0 on Yosemite.

whitequark commented 9 years ago

0.10 here. I don't have a newer version in the repository.