Mac OSX で cl-iconv をインストールする際のメモ。依存関係で iolib が要求する libfixposix をインストールする。
(ql:quickload "iconv")
を実行すると、依存関係で iolibが要求される。このiolib の iolib.syscalls が次のようなコンパイルを実行しようとして lpf.h がないというのでgive upせざるをえない。
g++ -m64 -Wno-write-strings -I /opt/local/include/ -I/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/grovel/ -o /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/syscalls/ffi-types-unix /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/syscalls/ffi-types-unix.c
この無いといわれた、lpf.hというのは、https://github.com/sionescu/libfixposix に含まれているようだ。
こいつをインストールしてみよう。
libfixposix は MacPort に収録されようとしているもようだが現時点では含まれていないのでソースからインストールする。
ただし、autoconf , automake , libtool と checkというテストのフレームワークに依存している。
check は macport に収録されていてもうインストールずみだった。
mkdir -p ~/work cd ~/work git clone https://github.com/sionescu/libfixposix.git cd libfixposix autoreconf -i -f mkdir build cd build ../configure --prefix=/usr/local make sudo make install
インストールできたので、lispのREPLに戻ってつづける。
(ql:quickload "iconv")
To load "iconv":
Load 1 ASDF system:
iconv
; Loading "iconv"
; g++ -m64 -Wno-write-strings -I /opt/local/include/ -I/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/grovel/ -o /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/syscalls/ffi-types-unix /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/syscalls/ffi-types-unix.c
; /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/syscalls/ffi-types-unix /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/syscalls/ffi-types-unix.grovel-tmp.lisp
..................................................
..................................................
[package iolib.multiplex].........................
[package iolib.streams]...........................
[package idna]....................................
[package swap-bytes]..............................
[package iolib.sockets]; g++ -m64 -Wno-write-strings -I /opt/local/include/ -I/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/grovel/ -o /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/sockets/grovel /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/sockets/grovel.c
; /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/sockets/grovel /Users/fu7mu4/.cache/common-lisp/ccl-1.10-f96-macosx-x64/Users/fu7mu4/quicklisp/dists/quicklisp/software/iolib-20150302-git/src/sockets/grovel.grovel-tmp.lisp
...........................
..................................................
..................................................
[package iolib]...................................
[package koto.iconv]....
できた。
cl-iconv でちゃんと文字列→usb8 usb8→文字列をエンコードを指定して変換はできたのですが、推定する機能はなかったようです。