2010年7月28日 星期三

[LLVM] LLVM-2.7 & LLVM-0.8.0.2

一直不停re-compile llvm實在是太痛苦了,
所以好不容易弄完之後,決定來紀錄一下這整件
痛苦的事。

話說要裝llvm-2.7很簡單,就
> brew install llvm
輕鬆、快速又好吃~
然後就想要開開心心的灌一下llvm haskell binding
結果,config一直死掉:
...snip...
checking for unistd.h... yes
checking llvm-c/Core.h usability... yes
checking llvm-c/Core.h presence... yes
checking for llvm-c/Core.h... yes
checking for LLVMModuleCreateWithName in -lLLVMCore... no
configure: error: could not find LLVM C bindings
cabal: Error: some packages failed to install:
llvm-0.8.0.2 failed during the configure step. The exception was:
exit: ExitFailure 1

上網查了以後發現問題出在Mac上面,但是實際
原因不明。總之,作法很簡單:就是把llvm-2.7
重新build成universal binary就好了,以下
重現當時機歪的整個過程(含brew的link):

[0] 砍掉原本brew install來的llvm 2.7
> brew uninstall llvm

[0.1] 準備給homebrew用的folder
(假設homebrew的prefix=/usr/local)
> cd /usr/local/Cellar
> mkdir llvm-gcc
> mkdir llvm-gcc/4.2
> mkdir llvm
> mkdir llvm/2.7

[1] 抓一下llvm和llvm-gcc
> wget 'http://llvm.org/releases/2.7/llvm-gcc-4.2-2.7-x86_64-apple-darwin10.tgz'
> wget 'http://llvm.org/releases/2.7/llvm-2.7.tgz'
> tar xzf llvm-gcc-4.2-2.7-x86_64-apple-darwin10.tgz
> tar xzf llvm-2.7.tgz

[2] 手動安裝(copy)一下llvm-gcc-4.2到/usr/local/Cellar下面去
> cd llvm-gcc-4.2-2.7-x86_64-apple-darwin10
> cp -R ./* /usr/local/Cellar/llvm-gcc/4.2
> brew link llvm-gcc
> cd ..

[3] make/make install llvm-2.7
> cd llvm-2.7
> ./configure --prefix=/usr/local/Cellar/llvm/2.7 --with-llvmgccdir=/usr/local/Cellar/llvm-gcc/4.2
(這邊要等一會兒)
> set -x UNIVERSAL 1
> make
(這邊要等一個小時左右)
> make install
> brew link llvm
> cd ..
至此,llvm-2.7和llvm-gcc-4.2就都裝好了。

llvm重灌好以後就直接
> cabal install llvm
就ok了

llvm haskell binding裝好以後,可以跑一下
他的example。看是要去這裡抓?還是要直接
解開~/.cabal/packages/hackage.haskell.org/
llvm/0.8.0.2/llvm-0.8.0.2.tar.gz這一個檔案。進去以後直接
> make
以後再看想要執行程式即可。
如果執行起來有問題可以參考這個

以上參考自這篇這篇

2010年7月26日 星期一

[OSX 10.6]The Note! Cont.

接續上一篇

進入 fish_prompt.fish
> sudo vim fish_prompt.fish
fish_prompt.fish裡面描述了不同user登入以後prompt的長相。
預設上是"(user)@(hostname)(prompt_pwd)>"這樣一串。
P.S.只是prompt_pwd是縮短以後的pwd。

[增加顏色]
使用 set -l ooxx (set_color color) 增加區域色彩變數
顏色設定的方式基本上就是直接用%s輸出給printf

[換行]
在printf後面的'ooxx'加入 \n

[縮減user/hostname]
使用whoami或hostname,後面再接上 | cut -c 1-n

[顯示時間日期]
直接在prontf後面的參數中呼叫 date "+format"



我目前的設定
set -l _clrB (set_color blue)
set -l _clrC (set_color white)
set -l _clrR (set_color red)
set -l _clrY (set_color yellow)
printf '\n%s%s%s[' "$_clrR" (whoami|cut -c 1-3) "$_clrY"
printf '%s%s%s]%s[' "$_clrC" (date "+%H:%M") "$_clrY" "$_clrB"
printf '%s%s%s]%s' "$__fish_prompt_cwd" (prompt_pwd) "$_clrB" "$__fish_prompt_normal"
printf '\n> '
結果如下

P.S.色彩設定方面的補完就期待godfat來分享一下了 :)

[OSX 10.6]The Note!

前兩天重灌了一下Mac OS X 10.6。真的各方面都蠻不錯的,
除了那該死的中文字體。真的是難看死了...。

這次針對一些工具方面做了更新:首先是package managemant。
從原本的Macport換成Homebrew。這是因為我在手動make install ghc
以後突然想用port裝一下darcs,結果port竟然開開心心的開始幫
我build好久以前的ghc版本,囧。一怒之下就聽從godfat的讒言把port
及其他一堆自己make install(包括我記憶中我用.pkg裝的東西)給暴力
砍了,因為make install都去了/usr/local/下面,而port install都進了
/opt/local/底下,所以在godfat的鼓吹之下rm -R就給他用力打下去
啦~~~。而.pkg的部份我只記得我ghc-6.12.3是.pkg裝起來的,
所以就去/usr/bin/下面把ghc*的東西砍乾淨。最後才再灌上brew。
> ruby -e "$(curl -fsS http://gist.github.com/\
raw/323731/install_homebrew.rb)"

當然, 要順便開開心心的把用習慣的東西一併裝一裝。
> brew install fish
> brew install git
> brew install haskell-platform

Fish with Multiline Prompt:
fish shell本身沒有支援multiline prompt的處理,因為fish在
讀入自己內部用來存prompt訊息的prompt_list時,會將'\n'給忽略。
也就造成了在fish_prompt.fish裡面插入'\n'於printf後面會無效
這樣的問題。找了好一會以後,google到一個仁兄的解決辦法
[1] 砍掉原本的fish: > brew uninstall fish
[2] 下載fish的source code
[3] 修改裡面的reader.c檔(細節)
[4] 重編fish
> ./configure --prefix=/usr/local/Cellar/fish/1.23.1 --without-xsel
> sudo make install
[5] 把brew連到自己裝的fish上面
> brew link fish
應該要有類似這樣的結果
30 links created for /usr/local/Cellar/fish/1.23.1
[6] 順便 > chsh -s /usr/local/bin/fish 一下。

灌好fish之後就可以開始改fish shell裡面的東西,也就是prompt
的output設定。fish相關的一些function都放置在/usr/local
/Cellar/fish/1.23.1/share/fish/functions目錄下,
而這裡的目的是要改有關prompt的設定,也就是檔案: fish_prompt.fish。

P.S. 有關fish_prompt.fish的設定就下回分解吧 XD