2008年2月5日火曜日

openbabel

Open Babel が Perl 5.10.0 になったらビルドできなくなったので、とりあえずビルド可能になるようなパッチを作った。

パッチを当てないと、次のようなエラーが出る。
openbabel_perl.cpp:1232: error: expected unqualified-id before string constant
openbabel_perl.cpp:1233: error: expected initializer before ‘*’ token
openbabel_perl.cpp:1238: error: ‘SwigPerlWrapperPtr’ does not name a type
openbabel_perl.cpp:113682: error: too many initializers for ‘swig_command_info’
(snip)
openbabel_perl.cpp: In function ‘void boot_Chemistry__OpenBabel(PerlInterpreter*, CV*)’:
openbabel_perl.cpp:113925: error: ‘struct swig_command_info’ has no member named ‘wrapper’
make: *** [openbabel_perl.o] エラー 1
エラー: /var/tmp/rpm-tmp.64253 の不正な終了ステータス (%build)
下記のページと SWIG 1.3.33 の swig-1.3.33/Lib/perl5/perlrun.swg を参考にした。
パッチ。
--- openbabel-2.1.1/scripts/perl/openbabel_perl.cpp.~1~ 2007-07-02 05:14:02.000000000 +0900
+++ openbabel-2.1.1/scripts/perl/openbabel_perl.cpp 2008-02-04 21:29:51.000000000 +0900
@@ -1228,8 +1228,12 @@
/* Macros for low-level exception handling */
#define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }

-
-typedef XS(SwigPerlWrapper);
+/* Macro to declare an XS function */
+#ifndef XSPROTO
+# define XSPROTO(name) void name(pTHX_ CV* cv)
+#endif
+typedef XSPROTO(SwigPerlWrapper);
+/* typedef XS(SwigPerlWrapper); */
typedef SwigPerlWrapper *SwigPerlWrapperPtr;

/* Structure for command table */

0 件のコメント: