読者です 読者をやめる 読者になる 読者になる

uzullaがブログ

uzullaがブログです。

Padre 1.0をMac OSX10.9に入れる

PHPStorm大好きなuzullaですこんばんわ。

基本的にコードはIDEで書きたいです、補完とかジャンプとか、デバッガーとかつかいたい。
しかしPerlにはまともなIDEがありません、EPIC?なにそれ?

Padreというやつがあるので、まあちょっとためしてみようとおもったんですが、前ためしたときdmgで配布されてるバイナリはめっちゃバージョンがふるくて話にならなかった。

でも、CPANで配布されてるわけですからね、自前でやれば最新版を入れられる筈です。

オチ

残念ながら、OSXではつかいものにはなりませんでした。

注意

仮想マシンのクリーンなMavericksで試しています、他の人で入らないという話もあるので、何かしらセンシティヴな所があるのかもしれません。

以下でReadlineをいれたりごちゃごちゃやってますが、一発ではいった、という情報もあるし、全然関係ないところでハマった、という情報もあったり、いままでにいれたライブラリの状況等々で色々かわってくると思います。

まずはなにも考えずにthread付きのPerlを用意して、cpanm Padre Wx Alien::wxWidgets してみるほうが早いかもしれません。

Perlの準備

plenvをいれて、thread付きでperlをビルドします。

plenv install 5.16.3 -Dusethreads

readlineの準備

readlineがないというか、なんかTerm::ReadLine::Gnuからおこられましたので、手でreadline 6.0をいれました。
これはbrew install readline ; brew link --force readlineでもダメでした(私の場合)

Found `/usr/lib/libtermcap.dylib'.
cc -I/usr/local/opt/readline/include/ -fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -DHAVE_STRING_H rlver.c -o rlver -fstack-protector -lreadline -ltermcap
rlver.c:4:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main() { puts(rl_library_version); }
^~~~
1 warning generated.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The libreadline you are using is the libedit library. Use the GNU Readline Library.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

wget ftp://ftp.gnu.org/gnu/readline/readline-6.0.tar.gz
$ tar xvzf readline-6.0.tar.gz 
./configure --prefix /usr/local/myopt

このままmakeしても以下エラーで通らないので

Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.2
Thread model: posix
clang: error: invalid argument '-compatibility_version 6' only allowed with '-dynamiclib'
make[1]: *** [libreadline.6.0.dylib] Error 1
make: [shared] Error 2 (ignored)

vi shlib/Makefile

以下の行に -dynamiclib を追加
SHLIB_XLDFLAGS = -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v -dynamiclib

したのち

make all
make install

で、readlineがはいります。

で、手でTerm::ReadLine::Gnuをいれます

wget http://www.cpan.org/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz
tar xvzf 〜
perl Makefile.PL --includedir=/usr/local/myopt/include/ --libdir=/usr/local/myopt/lib/
make all
make install

これで下準備できました

Padre Install

http://padre.perlide.org/trac/wiki/DownloadUbuntu#InstallationfromCPAN
を参考に

cpanm Alien::wxWidgets
cpanm Wx
cpanm Padre


で、多分無事Padreがはいります。
(といいつつ、Wxについては一部のテストがコケたのでcpanm Wx --notestでごまかしました)

wxWidgetやWxのビルドには非常に時間がかかりますので、気長に待ちましょう。

起動

plenv rehash後、

padre

で起動します。

f:id:uzulla:20140126225540p:plain

問題

wxWidgetsの仕様だとおもいますが、日本語が入力できません、X11とおなじでしょう、これは解決出来ない感じがすごい。

あと、デバッガがちゃんとうごきません、画面がめっちゃくずれたり、ハングったりする。

まとめ

まあ、Padreつかうなら、Windowsか、最新版ならUbuntuつかえって感じでしょうか。

Ubuntu13ならlibreadline-devをaptでいれれば、あとは公式の参考通りにするだけで*1普通に通りました。
日本語もインライン入力はできないものの、入力ができましたし、つかえそうです。

おわり。

追記、他のIDEであるEPICについて

http://uzulla.hateblo.jp/entry/2014/01/31/041248
かきました。