[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:40:42 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
 Keywords:              |       Port:  vim
------------------------+----------------------
 {{{
 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>
MacPorts <http://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list