[MacPorts] #44624: vim+universal+ruby18 fails to build because of missing rb_num2uint symbol in i386 slice of libruby.dylib

MacPorts noreply at macports.org
Tue Aug 12 09:41:01 PDT 2014


#44624: vim+universal+ruby18 fails to build because of missing rb_num2uint symbol
in i386 slice of libruby.dylib
-------------------------+----------------------
  Reporter:  jeremyhu@…  |      Owner:  raimue@…
      Type:  defect      |     Status:  new
  Priority:  Normal      |  Milestone:
 Component:  ports       |    Version:  2.3.1
Resolution:              |   Keywords:
      Port:  vim         |
-------------------------+----------------------
Description changed by jeremyhu@…:

Old description:

> {{{
> make[2]: Leaving directory
> `/opt/local/var/macports/build/_Volumes_Home_jeremy_src_macports_trunk_dports_editors_vim/vim/work/vim74/src/po'
>   /usr/bin/clang -L/opt/local/lib  -L/opt/local/lib   -L.
> -L/opt/local/lib -Wl,-headerpad_max_install_names  -L/opt/local/lib
> -Wl,-headerpad_max_install_names -arch x86_64 -arch i386 -L/usr/local/lib
> -o vim objects/buffer.o objects/blowfish.o objects/charset.o
> objects/diff.o objects/digraph.o objects/edit.o objects/eval.o
> objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o
> objects/ex_getln.o objects/fileio.o objects/fold.o objects/getchar.o
> objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o
> objects/if_xcmdsrv.o objects/mark.o objects/memline.o objects/menu.o
> objects/message.o objects/misc1.o objects/misc2.o objects/move.o
> objects/mbyte.o objects/normal.o objects/ops.o objects/option.o
> objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o
> objects/regexp.o objects/screen.o objects/search.o objects/sha256.o
> objects/spell.o objects/syntax.o  objects/tag.o objects/term.o
> objects/ui.o objects/undo.o objects/version.o objects/window.o
> objects/gui.o objects/gui_gtk.o objects/gui_gtk_x11.o objects/pty.o
> objects/gui_gtk_f.o objects/gui_beval.o    objects/if_python.o
> objects/if_ruby.o   objects/netbeans.o  objects/main.o objects/memfile.o
> -L/opt/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -lgio-2.0
> -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage
> -lXfixes -lX11 -lXext -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0
> -lpangoft2-1.0 -lpango-1.0 -lm -lgobject-2.0 -lglib-2.0 -lintl
> -lfontconfig -lfreetype  -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE
> -lm  -lncurses -liconv -lintl
> -L/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
> -ldl -framework CoreFoundation -lpython2.7   -lruby -lpthread -ldl -lobjc
> -L/opt/local/lib
> Undefined symbols for architecture i386:
>   "_rb_num2uint", referenced from:
>       _window_set_cursor in if_ruby.o
> ld: symbol(s) not found for architecture i386
> clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
> make[1]: *** [vim] Error 1
> make[1]: Leaving directory
> `/opt/local/var/macports/build/_Volumes_Home_jeremy_src_macports_trunk_dports_editors_vim/vim/work/vim74/src'
> ...
>
> ~/src/macports $ nm -arch i386 /opt/local/lib/libruby.dylib | grep
> rb_num2uint
>
> ~/src/macports $ nm -arch x86_64 /opt/local/lib/libruby.dylib | grep
> rb_num2uint
> 000000000004266e T _rb_num2uint
> }}}
>
> This is because the function is only available in 64bit ruby where int !=
> long.  vim handles this by checking macros that are set at configure time
> rather than build time:
>
> # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */
> #  if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 18
> #   define rb_fix2int                   dll_rb_fix2int
> #   define rb_num2int                   dll_rb_num2int
> #  endif
> #  define rb_num2uint                   dll_rb_num2uint
> # endif
>
> I suggest vim use muniversal to address this

New description:

 {{{
 make[2]: Leaving directory
 `/opt/local/var/macports/build/_Volumes_Home_jeremy_src_macports_trunk_dports_editors_vim/vim/work/vim74/src/po'
   /usr/bin/clang -L/opt/local/lib  -L/opt/local/lib   -L. -L/opt/local/lib
 -Wl,-headerpad_max_install_names  -L/opt/local/lib
 -Wl,-headerpad_max_install_names -arch x86_64 -arch i386 -L/usr/local/lib
 -o vim objects/buffer.o objects/blowfish.o objects/charset.o
 objects/diff.o objects/digraph.o objects/edit.o objects/eval.o
 objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o
 objects/ex_getln.o objects/fileio.o objects/fold.o objects/getchar.o
 objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o
 objects/if_xcmdsrv.o objects/mark.o objects/memline.o objects/menu.o
 objects/message.o objects/misc1.o objects/misc2.o objects/move.o
 objects/mbyte.o objects/normal.o objects/ops.o objects/option.o
 objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o
 objects/regexp.o objects/screen.o objects/search.o objects/sha256.o
 objects/spell.o objects/syntax.o  objects/tag.o objects/term.o
 objects/ui.o objects/undo.o objects/version.o objects/window.o
 objects/gui.o objects/gui_gtk.o objects/gui_gtk_x11.o objects/pty.o
 objects/gui_gtk_f.o objects/gui_beval.o    objects/if_python.o
 objects/if_ruby.o   objects/netbeans.o  objects/main.o objects/memfile.o
 -L/opt/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -lgio-2.0
 -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage
 -lXfixes -lX11 -lXext -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0
 -lpangoft2-1.0 -lpango-1.0 -lm -lgobject-2.0 -lglib-2.0 -lintl
 -lfontconfig -lfreetype  -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE
 -lm  -lncurses -liconv -lintl
 -L/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
 -ldl -framework CoreFoundation -lpython2.7   -lruby -lpthread -ldl -lobjc
 -L/opt/local/lib
 Undefined symbols for architecture i386:
   "_rb_num2uint", referenced from:
       _window_set_cursor in if_ruby.o
 ld: symbol(s) not found for architecture i386
 clang: error: linker command failed with exit code 1 (use -v to see
 invocation)
 make[1]: *** [vim] Error 1
 make[1]: Leaving directory
 `/opt/local/var/macports/build/_Volumes_Home_jeremy_src_macports_trunk_dports_editors_vim/vim/work/vim74/src'
 ...

 ~/src/macports $ nm -arch i386 /opt/local/lib/libruby.dylib | grep
 rb_num2uint

 ~/src/macports $ nm -arch x86_64 /opt/local/lib/libruby.dylib | grep
 rb_num2uint
 000000000004266e T _rb_num2uint
 }}}

 This is because the function is only available in 64bit ruby where int !=
 long.  vim handles this by checking macros that are set at configure time
 rather than build time:
 {{{
 # if VIM_SIZEOF_INT < VIM_SIZEOF_LONG /* 64 bits only */
 #  if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER <= 18
 #   define rb_fix2int                   dll_rb_fix2int
 #   define rb_num2int                   dll_rb_num2int
 #  endif
 #  define rb_num2uint                   dll_rb_num2uint
 # endif
 }}}
 I suggest vim use muniversal to address this

--

-- 
Ticket URL: <https://trac.macports.org/ticket/44624#comment:1>
MacPorts <http://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list