2009年1月4日日曜日

clbuildをためす (その3)


  • Mac+CarbonEmacs+ACL(+eli)+clbuild という環境ができるかどうかトライ。
  • バージョン管理ツールたちで存在しないものはmacportsを使う。(cvsとsvnはmacに入っている) (ただし私は日本語patchをあてたsvnをmacportsベースで使っているので細かくいうと違うのだが、たぶんclbuildにとってはどちらでも同じだと思う)
  • バージョン管理ツールたちを用意。

    $ sudo port install git-core
    $ sudo port install darcs
    $ sudo port install mercurial
    $ sudo port install wget

    macportsのお約束かもしれないが、エラーが散発して手動対処が必要になる。こんな感じ。

    ~$ sudo port install darcs
    [snip]
    Unable to activate port gmp.
    Error: The following dependencies failed to build: ghc gmp libedit
    Error: Status 1 encountered during processing.
    ~$ sudo port uninstall gmp
    ---> Uninstalling gmp @4.2.4_0
    ~$ sudo port -f install gmp
    ---> Installing gmp @4.2.4_0
    ---> Activating gmp @4.2.4_0
    Warning: File /opt/local/include/gmp.h already exists. Moving to: /opt/local/include/gmp.h.mp_1230992586.
    [snip]
    Warning: File /opt/local/share/info/gmp.info-2 already exists. Moving to: /opt/local/share/info/gmp.info-2.mp_1230992586.
    ---> Cleaning gmp
    ~$ sudo port install darcs
    [snip]

    これを繰り返すとたいていうまくいく。理由はわからない。今は深掘りしない。
  • Terminal->Screen->bash->Emacs->bash(shell mode)->port という中でdarcsのinstallをしていたらいつまでたってもおわらない。。。そこで、それらを全てkillしてTerminal->bash->portでやりなおし。そんなに時間かからずに終わる。理由はわからない。今は深掘りしない。
  • いろいろ小回りがきくようにSBCLもいれておく。

    $ sudo port install sbcl

  • これで準備が整ったはず。clbuildは依存関係に留意したdownloaderとしてのみ使う方針。さっそくDL。

    $ ./clbuild update --all-projects

  • .clinit.clを変更。clbuildのsystemsを追加。

    (require :asdf)

    (setf asdf:*central-registry*
    '(*default-pathname-defaults*
    #p "/Users/aka/local/lib/cl/systems/"
    #p "/Users/aka/local/lib/clbuild/systems/"))

    自分で手で管理するものlib/cl/systems/にいれて、clbuildの管理のものをlib/clbuild/systems/にいれる運用とする。
  • 使ってみる。

    CL-USER(2): (asdf:operate 'asdf:load-op 'cxml)
    (...)
    CL-USER(3): :cd
    /Users/aka/
    CL-USER(4): :cd /Users/aka/scratch/cl/
    /Users/aka/scratch/cl/
    CL-USER(5): (with-open-file (s "example.xml" :direction :output)
    (write-string "<test a='b'><child/></test>" s))
    "<test a='b'><child/></test>"
    CL-USER(6): (cxml:parse-file "example.xml" (rune-dom:make-dom-builder))
    #<RUNE-DOM::DOCUMENT @ #x10029a9182>
    CL-USER(7): (defparameter *example* *)
    *EXAMPLE*
    CL-USER(8): (dom:document-element *example*)
    #<RUNE-DOM::ELEMENT test @ #x10029ba012>
    CL-USER(9): (dom:tag-name (dom:document-element *example*))
    "test"

    一応使える。
  • これで様子をみてみよう。

こつこつ。

0 件のコメント: