Oniguruma Wrapper [noch im Aufbau]
Verfasst: Dienstag 25. September 2007, 22:28
Topic: Wrapper für die Regex-Engine Oniguruma 5.9.0
@birkenfeld: Danke für den Ausführlichen post. Wenn ich dich richtig verstanden habe, sollte der Wrapper eine Python C-Extension sein, der auf C ebene mit der Python API Oniguruma wrappt. Diese C-Extension muss mit VS 7 oder VS 8 kompiliert werden, damit die Extension unter Python 2.5@Win läuft. Anschließend wird die Extension über Python eingebunden das widerum die Extension Wrappt. Kurz (?): PyOnigurumaWrapper => PyOnigurumaC-Extension => libonig.a
Folgende Fragen dazu: Verstehe ich das richtig das ich für das kompilieren einer Python Extension den gleichen Kompiler verwenden muss mit dem `libpython25.a' kompiliert wurde, weil es sonst beim linken der Extension gegen die `libpython25.a' zu Problemen kommen kann (Daher die Empfehlung zu VS 7 oder VS 8 )?
Ich wollte das ganze eigentlich mit `ctypes` realisieren. Was spricht dagegen? Mein bisheriger Wrappcode (Eher Testcode) nutzt `ctypes`.
@blackbird: Schicke ich dir gerne zu, wenn es lauffähig ist und vom Status Testcode weck ist. Bisher beschränkt sich das ganze nur auf die definierung der Konstanten von `oniguruma.h' und der public API und ist nicht sonderlich schön strukturiert (Ist halt gechakter testcode). Mal sehen, wenn ich morgen zeitig zu Hause bin, schreibe ich's fertig und ne Abstraktion. Den Code könnte ich dir dann im laufe der Woche zusenden.
Um Unicode habe ich mir bisher keine Gedanken gemacht, das lässt sich aber sicherlich direkt über Python in eine für Oniguruma verständliche form transformieren.
Falls das mit `ctypes` keine so gute Idee ist, lasst es mich bitte wissen und auch mit Begründung.
Probleme:
Hab gestern onig unter Win gebacken gekriegt. Hab http://www.mingw.org/ und http://www.mingw.org/msys.shtml benutzt. Lief alles reibungslos (libonig.a einwandfrei, `make check' auf ohne Fehler) bis auf das erzeugen der DLL.
Konkret: `configure' == IO; `make' spuckt mir folgende Meldung aus:
OK, hab `make dll' gemacht und das spuckte mir ne dll aus. Hab aber gestern keine Zeit mehr gehabt um zu sehen ob es funktioniert, bin auch erst eben gerade wider zurück. Werd es morgen testen.
mfg
----
Weiterführung von diesem thread.
@birkenfeld: Danke für den Ausführlichen post. Wenn ich dich richtig verstanden habe, sollte der Wrapper eine Python C-Extension sein, der auf C ebene mit der Python API Oniguruma wrappt. Diese C-Extension muss mit VS 7 oder VS 8 kompiliert werden, damit die Extension unter Python 2.5@Win läuft. Anschließend wird die Extension über Python eingebunden das widerum die Extension Wrappt. Kurz (?): PyOnigurumaWrapper => PyOnigurumaC-Extension => libonig.a
Folgende Fragen dazu: Verstehe ich das richtig das ich für das kompilieren einer Python Extension den gleichen Kompiler verwenden muss mit dem `libpython25.a' kompiliert wurde, weil es sonst beim linken der Extension gegen die `libpython25.a' zu Problemen kommen kann (Daher die Empfehlung zu VS 7 oder VS 8 )?
Ich wollte das ganze eigentlich mit `ctypes` realisieren. Was spricht dagegen? Mein bisheriger Wrappcode (Eher Testcode) nutzt `ctypes`.
@blackbird: Schicke ich dir gerne zu, wenn es lauffähig ist und vom Status Testcode weck ist. Bisher beschränkt sich das ganze nur auf die definierung der Konstanten von `oniguruma.h' und der public API und ist nicht sonderlich schön strukturiert (Ist halt gechakter testcode). Mal sehen, wenn ich morgen zeitig zu Hause bin, schreibe ich's fertig und ne Abstraktion. Den Code könnte ich dir dann im laufe der Woche zusenden.
Um Unicode habe ich mir bisher keine Gedanken gemacht, das lässt sich aber sicherlich direkt über Python in eine für Oniguruma verständliche form transformieren.
Falls das mit `ctypes` keine so gute Idee ist, lasst es mich bitte wissen und auch mit Begründung.
Probleme:
Hab gestern onig unter Win gebacken gekriegt. Hab http://www.mingw.org/ und http://www.mingw.org/msys.shtml benutzt. Lief alles reibungslos (libonig.a einwandfrei, `make check' auf ohne Fehler) bis auf das erzeugen der DLL.
Konkret: `configure' == IO; `make' spuckt mir folgende Meldung aus:
(Was mich auch ein wenig wunder ist, dass mein Sys als 686 erkannt wird und nicht als 386, hmm.)libtool: link: warning: undefined symbols not allowed in i686-pc-mingw32 shared libraries
OK, hab `make dll' gemacht und das spuckte mir ne dll aus. Hab aber gestern keine Zeit mehr gehabt um zu sehen ob es funktioniert, bin auch erst eben gerade wider zurück. Werd es morgen testen.
mfg
----
Weiterführung von diesem thread.