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