mattn/mruby-require

mruby-require causing issues with other mrbgems

rjst opened this issue · 6 comments

rjst commented

Hi,

I'm using mruby-require, and although it appears to work fine, when using it, other mrbgems such as mruby-onig-regexp or mruby-eval stop working, just as if they weren't being included.

Am I doing something wrong or could this be a bug ?

regards,
Ricardo

Could you please show me your build_config.rb ? Probably, you specify mruby-onig-regexp after mruby-require in order. mruby-require should be last in order.

rjst commented

I tried, and it happens even if mruby-require is the last in the file.

Here is my complete file

MRuby::Build.new do |conf|
  # load specific toolchain settings
  toolchain :gcc

  # Use mrbgems
  # conf.gem 'examples/mrbgems/ruby_extension_example'
  # conf.gem 'examples/mrbgems/c_extension_example' do |g|
  #   g.cc.flags << '-g' # append cflags in this gem
  # end
  # conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
  # conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master'
  # conf.gem :git => 'git@github.com:masuidrive/mrbgems-example.git', :branch => 'master', :options => '-v'

  # Use standard Kernel#sprintf method
  conf.gem "#{root}/mrbgems/mruby-sprintf"

  # Use standard print/puts/p
  conf.gem "#{root}/mrbgems/mruby-print"

  # Use standard Math module
  conf.gem "#{root}/mrbgems/mruby-math"

  # Use standard Time class
  conf.gem "#{root}/mrbgems/mruby-time"

  # Use standard Struct class
  conf.gem "#{root}/mrbgems/mruby-struct"

  # Use extensional Enumerable module
  conf.gem "#{root}/mrbgems/mruby-enum-ext"

  # Use extensional String class
  conf.gem "#{root}/mrbgems/mruby-string-ext"

  # Use extensional Numeric class
  conf.gem "#{root}/mrbgems/mruby-numeric-ext"

  # Use extensional Array class
  conf.gem "#{root}/mrbgems/mruby-array-ext"

  # Use extensional Hash class
  conf.gem "#{root}/mrbgems/mruby-hash-ext"

  # Use Random class
  conf.gem "#{root}/mrbgems/mruby-random"

  # No use eval method
  conf.gem "#{root}/mrbgems/mruby-eval"

  # A Regexp implementation
#  conf.gem :github => 'masamitsu-murase/mruby-hs-regexp', :branch => 'master'
  conf.gem :git => 'git@github.com:mattn/mruby-onig-regexp.git'

  # A require implementation. Should be last in order
  conf.gem :git => 'git@mattn/mruby-require.git'

  # Generate binaries
  # conf.bins = %w(mrbc mruby mirb)

  # C compiler settings
  # conf.cc do |cc|
  #   cc.command = ENV['CC'] || 'gcc'
  #   cc.flags = [ENV['CFLAGS'] || %w()]
  #   cc.include_paths = ["#{root}/include"]
  #   cc.defines = %w(DISABLE_GEMS)
  #   cc.option_include_path = '-I%s'
  #   cc.option_define = '-D%s'
  #   cc.compile_options = "%{flags} -MMD -o %{outfile} -c %{infile}"
  # end

  # Linker settings
  # conf.linker do |linker|
  #   linker.command = ENV['LD'] || 'gcc'
  #   linker.flags = [ENV['LDFLAGS'] || []]
  #   linker.flags_before_libraries = []
  #   linker.libraries = %w()
  #   linker.flags_after_libraries = []
  #   linker.library_paths = []
  #   linker.option_library = '-l%s'
  #   linker.option_library_path = '-L%s'
  #   linker.link_options = "%{flags} -o %{outfile} %{objs} %{libs}"
  # end

  # Archiver settings
  # conf.archiver do |archiver|
  #   archiver.command = ENV['AR'] || 'ar'
  #   archiver.archive_options = 'rs %{outfile} %{objs}'
  # end

  # Parser generator settings
  # conf.yacc do |yacc|
  #   yacc.command = ENV['YACC'] || 'bison'
  #   yacc.compile_options = '-o %{outfile} %{infile}'
  # end

  # gperf settings
  # conf.gperf do |gperf|
  #   gperf.command = 'gperf'
  #   gperf.compile_options = '-L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k"1,3,$" %{infile} > %{outfile}'
  # end

  # file extensions
  # conf.exts do |exts|
  #   exts.object = '.o'
  #   exts.executable = '' # '.exe' if Windows
  #   exts.library = '.a'
  # end

  # file separetor
  # conf.file_separator = '/'
end

# Define cross build settings
# MRuby::CrossBuild.new('32bit') do |conf|
#   toolchain :gcc
#   
#   conf.cc.flags << "-m32"
#   conf.linker.flags << "-m32"
#
#   conf.build_mrbtest_lib_only
#   
#   conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
# end

thanks,
Ricardo

Probably, you are using mruby-require. So try following on your mirb.

C:\temp\github\mruby>mirb
mirb - Embeddable Interactive Ruby Shell

This is a very early version, please test and report errors.
Thanks :)

> require 'mruby-onig-regexp'
 => true
> "f-o-o".split /-/
 => ["f", "o", "o"]
>
rjst commented

Ok, I understand now. When using mruby-require additional mrbgems have to be required, which isn't the case when you aren't including it. Can I suggest that this is added to the documentation ? (I can do it if you'd like)

Cool, thank you. I'm not native speaker, so I think you are eligible than me.

rjst commented

Ok, here is the pull request - #9