#16331: ruby-1.8.7-p72 Configure error - build failure for x86_64 [universal or single arch] -----------------------------------------------+---------------------------- Reporter: m@miguelgodinho.com | Owner: macports-tickets@lists.macosforge.org Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 1.6.0 Keywords: x86-64, universal, ruby, pthreads | -----------------------------------------------+---------------------------- [svn rev. 39307] Darwin 9 The port does not build on x86_64 due to 2 different issues: 1 - Similar to what was reported on [https://trac.macports.org/ticket/15635], there is a core dump while building with pthreads configured. {{{ /usr/bin/gcc-4.0 -O2 -arch x86_64 -fno-common -pipe -fno-common -DRUBY_EXPORT -I. -I. -I/opt/local/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -c dmyext.c ar rcu libruby-static.a array.o bignum.o class.o compar.o dir.o dln.o enum.o enumerator.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o /usr/bin/gcc-4.0 -O2 -arch x86_64 -fno-common -pipe -fno-common -DRUBY_EXPORT -I. -I. -I/opt/local/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -c main.c /usr/bin/gcc-4.0 -O2 -arch x86_64 -fno-common -pipe -fno-common -DRUBY_EXPORT -I. -I. -I/opt/local/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -c dmydln.c /usr/bin/gcc-4.0 -arch x86_64 -O2 -arch x86_64 -fno-common -pipe -fno- common -DRUBY_EXPORT -L. -L/opt/local/lib main.o dmydln.o libruby- static.a -lpthread -ldl -lobjc -o miniruby make: *** [.rbconfig.time] Abort trap }}} ---- 2 - Configure does not set a value for EXTLDFLAGS what leads to have libruby.1.8.7.dylibld linked for i386 while the objects were compiled x86_64 (or fat). {{{ cc -dynamiclib -undefined suppress -flat_namespace -install_name /opt/local/lib/libruby.dylib -current_version 1.8.7 -compatibility_version 1.8 array.o bignum.o class.o compar.o dir.o dln.o enum.o enumerator.o error.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regex.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o dmyext.o -o libruby.1.8.7.dylibld: warning in array.o, file is not of required architecture ld: warning in bignum.o, file is not of required architecture }}} and the eventual error: {{{ making ruby /usr/bin/gcc-4.0 -O2 -arch x86_64 -fno-common -pipe -fno-common -DRUBY_EXPORT -L. -L/opt/local/lib main.o -lruby -ldl -lobjc -o rubyld: warning in ./libruby.dylib, file is not of required architecture Undefined symbols: "_ruby_options", referenced from: _main in main.o "_ruby_run", referenced from: _main in main.o "_ruby_init", referenced from: _main in main.o "_ruby_init_stack", referenced from: _main in main.old: symbol(s) not found collect2: ld returned 1 exit status make[1]: *** [ruby] Error 1 make: *** [all] Error 2 }}} In order to have the port installed I had to patch both the Portfile and the Makefile.in (files attached to the ticket). For the sake of simplicity a x86_64 variant was created instead of having 'fixed' the universal. -- Ticket URL: <http://trac.macports.org/ticket/16331> MacPorts <http://www.macports.org/> Ports system for Mac OS