Opened 13 years ago

Closed 7 years ago

#28071 closed defect (wontfix)

Vim 7.3.94_0 to 7.3.102_0 +universal fails with symbols not found for i386

Reported by: wintesa@… Owned by: raimue (Rainer Müller)
Priority: Normal Milestone:
Component: ports Version: 1.9.2
Keywords: Cc:
Port: vim

Description (last modified by mf2k (Frank Schima))

Upgrading from 7.3.94_0 to 7.3.102_0 fails with:

...
:info:build Undefined symbols for architecture i386:
:info:build   "_rb_num2uint", referenced from:
:info:build       _window_set_cursor in if_ruby.o
:info:build ld: symbol(s) not found for architecture i386
:info:build collect2: ld returned 1 exit status
:info:build lipo: can't open input file: /var/tmp//ccm2NL6E.out (No such file or directory)
...

Attachments (1)

main.log (142.3 KB) - added by wintesa@… 13 years ago.

Download all attachments as: .zip

Change History (7)

Changed 13 years ago by wintesa@…

Attachment: main.log added

comment:1 Changed 13 years ago by mf2k (Frank Schima)

Description: modified (diff)
Keywords: vim 7.3 universal removed
Owner: changed from macports-tickets@… to raimue@…
Port: vim added

comment:2 Changed 13 years ago by wintesa@…

Seems to be fixed with:

file: src/if_ruby.c

1216 static VALUE window_set_cursor(VALUE self, VALUE pos) 1217 { 1218 VALUE lnum, col; 1219 win_T *win = get_win(self); 1220 1221 Check_Type(pos, T_ARRAY); 1222 if (RARRAY_LEN(pos) != 2) 1223 rb_raise(rb_eArgError, "array length must be 2"); 1224 lnum = RARRAY_PTR(pos)[0]; 1225 col = RARRAY_PTR(pos)[1]; 1226 win->w_cursor.lnum = NUM2LONG(lnum); 1227 win->w_cursor.col = NUM2LONG(col); /* Changed from NUM2UINT(col) 15/Feb/2011*/ 1228 check_cursor(); /* put cursor on an existing line */ 1229 update_screen(NOT_VALID); 1230 return Qnil; 1231 }

comment:3 Changed 13 years ago by wintesa@…

1216 static VALUE window_set_cursor(VALUE self, VALUE pos)
1217 {
1218     VALUE lnum, col;
1219     win_T *win = get_win(self);
1220 
1221     Check_Type(pos, T_ARRAY);
1222     if (RARRAY_LEN(pos) != 2)
1223         rb_raise(rb_eArgError, "array length must be 2");
1224     lnum = RARRAY_PTR(pos)[0];
1225     col = RARRAY_PTR(pos)[1];
1226     win->w_cursor.lnum = NUM2LONG(lnum);
1227     win->w_cursor.col = NUM2LONG(col);
1228     check_cursor();                 /* put cursor on an existing line */
1229     update_screen(NOT_VALID);
1230     return Qnil;
1231 }

comment:4 Changed 12 years ago by raimue (Rainer Müller)

The problem is that the build for both architectures uses the x86_64 headers, although a separate set exists for i386 with differented defines. Ruby wants to be smart here and NUM2UINT is a no-op for sizeof(int) == sizeof(long) and, thus, no rb_num2uint function is compiled in this case.

From the vim73/src/auto/config.log:

RUBY_CFLAGS='-I/opt/local/lib/ruby/1.8/x86_64-darwin11 -DRUBY_VERSION=18'
RUBY_LIBS='-lruby -lpthread -ldl -lobjc  -L/opt/local/lib'

I am not yet sure if this is a more general bug in ruby +universal or if it should be fixed in the vim build only.

comment:5 Changed 9 years ago by jmroot (Joshua Root)

Is this still a problem with the current version?

comment:6 Changed 7 years ago by raimue (Rainer Müller)

Resolution: wontfix
Status: newclosed

Assuming there is nothing to do here anymore.

Note: See TracTickets for help on using tickets.