iolanguageを/usr/local以外にインストール

アドオンが動いたのを確認した程度なので、不具合が出るかもしれませんが
一応簡単なメモでも。



修正する箇所が少ないので、Makefileを直接修正します。

INSTALL_PREFIX ?= /インストール/したい/ディレクトリ
...
DLL_COMMAND := -shared -Wl,-soname="/インストール/したい/ディレクトリ/lib/libiovmall.so"

↑の2行を修正したら、make; make install.
後はio動かして、NullAddonでもUserでも簡単なアドオンが動けば大丈夫でしょう。


2010/05/18 *追記*
久しぶりにやったら↑じゃ動かなかったので書き直し。

    ...
26: #DLL_COMMAND := -shared -Wl,-soname="libiovmall.so" <- コメントアウトする
27: DLL_COMMAND := -shared -Wl,-soname="/インストール/したい/ディレクトリ/lib/libiovmall.so" <-コメントアウト外す
    ...

上記のコメントを修正したら
$ make INSTALL_PREFIX=/hoge
$ make install INSTALL_PREFIX=/hoge
でインストール。これで外部ライブラリに影響されないアドオンは動くはず。
(UserとかRangeとか)


ここで注意しておかなきゃならないのは、アンインストール時にも
$ make uninstall INSTALL_PREFIX=/hoge
と、INSTALL_PREFIXを指定してやらなければならない事。


ちなみに未だSGMLは /use/local に決め打ちでインストールされてしまうので、
make する時には実行中の権限には気をつけて。
対処方法は↓で。



2010/01/02 *追記*
あけましておめでとうございます。
今年も何卒よろしくお願い致します。


さて↑の状態で大丈夫だろうと思っていたら、SGMLアドオン辺りが使えなかったりした。
libsgmlのmakefile.inが酷い。
configure && make したものを /usr/local に決め打ちでインストールするようです。
僕は早々に心が折れたので、インストール後に手動でlibsgml関係の移動をしました。

$ mv /usr/local/include/sgml /インストール/したい/ディレクトリ/include
$ mv /usr/local/lib/libsgml.* /インストール/したい/ディレクトリ/lib

あとldからlibsgml.soを呼べるようにしないといけないので、

$ cat >> runio.sh << EOF
>#!/bin/bash
>export LD_LIBRARY_PATH="/インストール/したい/ディレクトリ/lib"
>/インストール/したい/ディレクトリ/bin/io $1
>EOF

みたいなスクリプト作って、これにioのソース渡して動かすようにしてます。


Twitterでパッチ書いてくれた方がいるのですが、
僕が公開するのも変な話ですので、気になる方は自分宛に連絡ください。