UBFを動かす

はじめに

昨日erlangrpm化しましたが,これはUniversal Binary Format(UBF)を試してみたかったからです.UBFについてはまた日を改めて書きますが,XMLのようなテキストベースでの情報流通形式の代わりにバイナリベースでの情報流通を実現します.マッキンダーの「東欧を支配するものはハートランドを制し,ハートランドを支配するものは世界島を制し,世界島を支配するものは世界を制す」とかにならって言うと,

バイナリフォーマットを支配するものはWebSocketを制し,WebSocketを支配するものはクラウドを制し,クラウドを支配するものは世界を制す

とか考えてるからです.

make

gitから落として来てsrcディレクトリ配下でmakeすれば簡単に動くと思ったんですが,はまったのでそのまとめ.priv/make/erl_make.mkというmakeするための補助ツールを書き直す必要がありました.

diff --git a/priv/make/erl_make.mk b/priv/make/erl_make.mk
index ce9b680..b502065 100644
--- a/priv/make/erl_make.mk
+++ b/priv/make/erl_make.mk
@@ -58,7 +58,9 @@ endif
 export DIALYZER_PLT
 export DIALYZER
 
-ERLDIRNAME1 := $(shell which $(ERL))
+ERLDIRNAME0 := $(shell which $(ERL))
+export ERLDIRNAME0
+ERLDIRNAME1 := $(shell readlink -e $(ERLDIRNAME0))
 ERLDIRNAME2 := $(patsubst %/bin/erl,%,$(ERLDIRNAME1))
 ERLDIRNAME3 := $(notdir $(ERLDIRNAME2))
 
@@ -76,11 +78,11 @@ endif
 endif
 
 ## well-known ERT applications
-EDOCDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/erlang/lib/edoc-*)
-EIDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/erlang/lib/erl_interface-*)
-ERTSDIRNAME ?= $(wildcard $(ERLDIRNAME2)/lib/erlang/erts-*)
-XMERLDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/erlang/lib/xmerl-*)
-EUNITDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/erlang/lib/eunit-*)
+EDOCDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/edoc-*)
+EIDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/erl_interface-*)
+ERTSDIRNAME ?= $(wildcard $(ERLDIRNAME2)/lib/erts-*)
+XMERLDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/xmerl-*)
+EUNITDIRNAME := $(wildcard $(ERLDIRNAME2)/lib/eunit-*)
 
 EBIN = ../ebin
 DOC_DIR = ../doc.$(shell cat ../.otpversion)

作者の環境と大分違ってたみたいです.これでmake checkも通りました.make checkを実行した際にできあがるcheck.logの最後はこのような出力がでてきました.

=INFO REPORT==== 1-Jul-2010::05:09:59 ===
    application: stateful_plugin
    exited: stopped
    type: temporary
  All 64 tests passed.

これでやっと次に進めます.