Mam moduł rozszerzający C dla Pythona i chcę go udostępnić dla Rubyists.Połączony moduł rozszerzający Python i Ruby
Źródło ma kilka modułów C, z których tylko jedna jest zależna od Pythona. Reszta zależy tylko od siebie i od standardowej biblioteki. Mogę go zbudować w zwykły sposób przy pomocy python setup.py build
.
Eksperymentowałem z dodawaniem wsparcia dla Rubiego przy użyciu newgem
i mogę zbudować wersję rozszerzenia z rake gem
. Jednak połączone źródło ma nieprzyjemny układ katalogów (mieszanie stylów w stylu Gem i struktur typu Setuptools), a proces budowania jest kludge.
Nie mogę po prostu zachować wszystkich źródeł w tym samym katalogu, ponieważ mkmf
automatycznie wybiera moduł zależny od Pythona i próbuje go skompilować, a użytkownicy nie powinni instalować Pythona, aby skompilować moduł, który nie będzie być użytym. Obecny hack jest dla extconf.rb
, aby skopiować niezależne od Pythona pliki źródłowe do tego samego katalogu, co moduł rozszerzenia zależny od języka Ruby.
Czy istnieje lepszy sposób udostępnienia kodu obu językach? Czy powinienem po prostu powielić kod niezależny od Pythona w osobnym Klejnocie? Czy powinienem zwolnić niezależny kod jako osobną bibliotekę zbudowaną z autotoolami? Czy istnieje wersja mkmf
, która może pominąć niepożądany moduł?