ネタ仕込みメモ

ええと以前のエントリを見てみたら

emulator の起動に失敗しているな、てか一年も前の話なのかorz
とりあえず環境作って動作確認をしてみます。

環境作る

まず ClojureOnUbuntu なソレを見つつ環境を作ります。とは言え

  • ant が入ってない様子なので導入
  • Clojure を download して ant でナニ
$ mkdir opt
$ cd opt
$ git clone git://github.com/richhickey/clojure.git
$ cd clojure
$ git remote show origin
* remote origin
  Fetch URL: git://github.com/richhickey/clojure.git
  Push  URL: git://github.com/richhickey/clojure.git
  HEAD branch: master
  Remote branches:
    1.0.x    tracked
    1.1.x    tracked
    20081217 tracked
    20090320 tracked
    chunks   tracked
    ensure   tracked
    equal    tracked
    equiv    tracked
    gh-pages tracked
    lazy     tracked
    master   tracked
    new      tracked
    num      tracked
    par      tracked
    prim     tracked
    seqfns   tracked
    streams  tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
$

なんか色々あるなぁ。今のバージョンは何なのか、が分からないあたりがまだ git 使いとして微妙な限りですが気にせず続けます。

$ ant
$ mkrir ~/.clojure
$ cp clojure.jar ~/.clojure
$ 

ええと、ant ちうに端末がカタマりましたorz
とりあえず ctrl+alt+f1 とかで仮想コンソールに行けなくてこーゆー時に非常に困ります。てか、4 年くらい前にメイン端末 Debian だった頃は端末がカタマるとか皆無だったんだけどなぁorz
と言いつつ ant にリトライしました。

BUILD SUCCESSFUL
Total time: 2 minutes 42 seconds
$

やれやれ。.jar をコピーしたりなんかして以下。

$ cd ~/.clojure/
$ java -cp clojure.jar clojure.lang.Repl
WARNING: clojure.lang.Repl is deprecated.
Instead, use clojure.main like this:
java -cp clojure.jar clojure.main -i init.clj -r args...
Clojure 1.2.0-master-SNAPSHOT
user=> (+ 1 41)
42
user=> (exit)
java.lang.Exception: Unable to resolve symbol: exit in this context (NO_SOURCE_FILE:2)
user=>

Ctrl-d will exit the REPL.

て書いてあるなorz
次は clojure-contrib を clone してきてここで maven2 が必要なのか。って mvn install ではないみたいですね。。
なんか target/clojure-contrib-*.jar ができない。こんな所でハマるとわ。再度 mvn install な出力を lv に流してみた。

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) org.clojure:clojure:jar:1.2.0-master-SNAPSHOT

  Try downloading the file manually from the project website.

  Then, install it using the command: 
      mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.2.0-master-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there: 
      mvn deploy:deploy-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.2.0-master-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=
[id]

  Path to dependency: 
        1) org.clojure:clojure-contrib:jar:1.2.0-SNAPSHOT
        2) org.clojure:clojure:jar:1.2.0-master-SNAPSHOT

----------
1 required artifact is missing.

for artifact: 
  org.clojure:clojure-contrib:jar:1.2.0-SNAPSHOT

from the specified remote repositories:
  central (http://repo1.maven.org/maven2),
  clojure-snapshots (http://build.clojure.org/snapshots),
  clojure-releases (http://build.clojure.org/releases)



[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Sun Jan 30 22:04:18 JST 2011
[INFO] Final Memory: 18M/104M
[INFO] ------------------------------------------------------------------------

うーん。どうも clojure 本体へのパスが無い、って言われてるみたい。面倒なので 1.0.x とか 1.1.x 系なナニを checkout してトライした方が良いのかどうなのか。

と言いつつ

clojure なディレクトリを覗いてみたら clojure-1.2.0-master-SNAPSHOT.jar というソレが見えますな。

  Then, install it using the command: 
      mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.2.0-master-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

なナニを参考に以下?

$ mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.2.0-master-SNAPSHOT -Dpackaging=jar -Dfile=~/opt/clojure-1.2.0-master-SNAPSHOT.jar

無事終わった模様? と思ったら

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error installing artifact 'org.clojure:clojure:jar': Error installing artifact: File /home/rms/opt/clojure-contrib/~/opt/clojure-1.2.0-master-SNAPSHOT.jar does not exist

なんだこれはorz
相対パスでリトライ。

$ mvn install:install-file -DgroupId=org.clojure -DartifactId=clojure -Dversion=1.2.0-master-SNAPSHOT -Dpackaging=jar -Dfile=../clojure/clojure-1.2.0-master-SNAPSHOT.jar
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'install'.
[INFO] ------------------------------------------------------------------------
[INFO] Building clojure
[INFO]    task-segment: [install:install-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [install:install-file {execution: default-cli}]
[INFO] Installing /home/rms/opt/clojure/clojure-1.2.0-master-SNAPSHOT.jar to /home/rms/.m2/repository/org/clojure/clojure/1.2.0-master-SNAPSHOT/clojure-1.2.0-master-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sun Jan 30 22:24:16 JST 2011
[INFO] Final Memory: 12M/104M
[INFO] ------------------------------------------------------------------------
$

でも、.jar が見当らん。package をこうしたみたらどうか。

$ mvn package -Dfile=../clojure/clojure-1.2.0-master-SNAPSHOT.jar

しかも fon の無線 AP 不調で接続が頻繁に切れているorz
接続を確認してからリトライ。なんかやたらに .pom なファイルを download しとるな。なんか test してるみたいなので今度こそ何とかなるのかなぁ。

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: /home/rms/opt/clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 minutes 15 seconds
[INFO] Finished at: Sun Jan 30 22:36:21 JST 2011
[INFO] Final Memory: 29M/230M
[INFO] ------------------------------------------------------------------------
$ ls target/
classes  clojure-contrib-1.2.0-SNAPSHOT.jar  maven-archiver  test-classes
$

やれやれ。で、次どーすんだっけ。
.profile に以下を追加。

if [ -d "$HOME/.clojure" ] ; then
    CLOJURE_EXT=$HOME/.clojure ; export CLOJURE_EXT
fi

if [ -d "$HOME/opt/clojure-contrib/launchers/bash" ] ; then
    PATH=$PATH:~/opt/clojure-contrib/launchers/bash; export PATH
fi

alias clj=clj-env-dir

で、以下。

$ source .profile
$ clj
Clojure 1.2.0-master-SNAPSHOT
user=> 

とりあえず導入はこれで OK なのか。

もう少し

なんか導入で微妙な迷走なんですが勢いが付いたので続行。とりあえず android-sdk-linux_x86 は導入済みなので symlink を /opt 配下にナニ。

$ ln -s Desktop/Android/android-sdk-linux_x86 ~/opt/android

違うな。

$ ln -s ~/Documents/Android/android-sdk-linux_86/ ~/opt/android

で、~/.profile に以下を追加。

if [ -d "$HOME/opt/android" ] ; then
    PATH=$PATH:~/opt/android/tools; export PATH
fi

で、以下。

$ emulator
emulator: ERROR: You did not provide the name of an Android Virtual Device
with the '-avd <name>' option. Read -help-avd for more information.

If you *really* want to *NOT* run an AVD, consider using '-data <file>'
to specify a data partition image file (I hope you know what you're doing).

$

一応パスは通ってますが作った AVD って何だっけ、と言いつつ android 起動して作成済みな avd を確認した後に以下。

$ emulator -avd google_2.3&

出た。問題はここから先だな。android-mode を git から引っ張ってきて云々。.emacs に追加するソレは以下が正解な模様。

;; android-mode
(add-to-list 'load-path "~/opt/android-mode")
(require 'android-mode)
;(defcustom android-mode-sdk-dir "~/opt/android")
(defcustom android-mode-sdk-dir "~/opt/android"
  "Set to the directory containing the Android SDK."
  :type 'string
  :group 'android-mode)

でも M-x android-start-emulator は動かん。
android-mode.el の中の該当部分が以下。

(defun android-start-emulator ()
  "Launch Android emulator."
  (interactive)
  (let ((avd (or (and (not (string= android-mode-avd "")) android-mode-avd)
                 (completing-read "Android Virtual Device: " (android-list-avd)))))
    (unless (android-start-exclusive-command (concat "*android-emulator-" avd "*") (concat (android-tool-path "emulator") " -avd " avd))
      (message (concat "emulator " avd " already running")))))

とりあえず以前ナニしたエントリでも M-x android-start-emulator が動かない云々でハマッていたみたい。
このあたり、問題処理続行って事にしますが xHago までに何とかなるとゆーよりも ojag な LT ネタになっちゃう可能性が高いなorz