У меня есть модуль расширения C для Python, и я хочу сделать его доступным для Rubyists.Комбинированный модуль расширения Python & Ruby
Источник имеет несколько модулей C, причем только один из них является зависимым от Python. Остальные зависят только друг от друга и от стандартной библиотеки. Я могу построить его с python setup.py build
обычным способом.
Я экспериментировал с добавлением поддержки Ruby с использованием newgem
, и я могу построить версию расширения с помощью rake gem
. Однако объединенный источник имеет уродливую директорию (смешение стилей Gem-стиля и структуры Setuptools), а процесс сборки - это kludge.
Я не могу просто сохранить все источники в том же каталоге, потому что mkmf
автоматически подбирает модуль, зависящий от Python, и пытается его построить, и пользователям не нужно устанавливать Python для компиляции модуля, который не будет использоваться. Мой текущий взлом - для extconf.rb
, чтобы скопировать исходные файлы, не зависящие от Python, в тот же каталог, что и модуль расширения, зависящий от Ruby.
Есть ли более безопасный способ сделать код доступным для обоих языков? Должен ли я просто дублировать независимый от Python код в отдельном Gem? Должен ли я освобождать независимый код как отдельный lib, созданный с помощью autotools? Есть ли версия mkmf
, которая может пропустить нежелательный модуль?