Как вручную собрать универсальный рубин на Mac OS X? Как насчет рвм? - PullRequest
3 голосов
/ 29 июня 2010

Я получил рубиновые источники из официального git mirror , затем проверил ветку ruby_1_9_2.

git clone http://github.com/ruby/ruby.git
git checkout ruby_1_9_2

Итак, сейчас я хочу скомпилировать 1.9.2-head. Но, как вы увидите позже, я надеюсь, что решение будет работать и для 1.8.

Стандартный способ компилировать это:

autoconf
./configure
make
make install

Это работает, но дает сборку только для x86_64:

$ ruby -v
ruby 1.9.2dev (2010-06-14 revision 28321) [x86_64-darwin10.3.0]

Меня не волнует PPC, очевидно, поскольку я нахожусь на 10.6, но я хочу иметь и i386, и x86_64, потому что некоторые вещи должны быть выполнены в 32-битном режиме.

Итак, что я хочу знать:

  1. волшебные песнопения для создания толстого бинарного файла с арками i386 и x86_64.
  2. Мне также было бы интересно сделать то же самое с моими RVM версиями ruby.

Возможно, ненужная системная информация:

$ system_profiler -detailLevel mini SPSoftwareDataType | ack '^ {6}' | head -3
      System Version: Mac OS X 10.6.4 (10F569)
      Kernel Version: Darwin 10.4.0
      64-bit Kernel and Extensions: No

$ uname -a
Darwin meaningless.local 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386

Ответы [ 2 ]

4 голосов
/ 29 июня 2010

Используйте параметр --with-arch для ./configure:

$ ./configure --with-arch=x86_64,i386

--with-arch принимает разделенный запятыми список архитектур, для которых должен быть построен Ruby.


добавлено kch:

Вывод после успешной сборки:

$ file ruby
ruby: Mach-O universal binary with 2 architectures
ruby (for architecture x86_64): Mach-O 64-bit executable x86_64
ruby (for architecture i386):   Mach-O executable i386

$ arch -i386 ./ruby -v
ruby 1.9.2dev (2010-06-29 revision 28468) [universal.i386-darwin10.4.0]

$ arch -x86_64 ./ruby -v
ruby 1.9.2dev (2010-06-29 revision 28468) [universal.x86_64-darwin10.4.0]

$ ./ruby -v
ruby 1.9.2dev (2010-06-29 revision 28468) [universal.x86_64-darwin10.4.0]
1 голос
/ 29 июня 2010

Что касается RVM, говорит, что вы не можете иметь толстые двоичные файлы , но это не так с этого коммита , который включает мой патч .

Используя последнюю версию rvm, вы можете установить ruby-1.9.2-head, используя тот же флаг настройки, что и в ручной сборке:

$ rvm install ruby-1.9.2-head -C --with-arch=x86_64,i386

Доказательство того, что оно предположительно работает:

$ rvm use 1.9.2-head
info: Using ruby 1.9.2 head

$ file `which ruby` | perl -pe 's|^.*/||'
ruby: Mach-O universal binary with 2 architectures
ruby (for architecture x86_64): Mach-O 64-bit executable x86_64
ruby (for architecture i386):   Mach-O executable i386
...