2012年01月09日

Homebrew で Formula を書き換えて patch を当てる方法

多分あんまり日本語の記事書かれてないから適当に書いていく。 この間のw3mをbuildするためにやったやつだけど。

patchを一つだけWebから引っ張ってくるなら、 patches ってメソッドを定義する。 っていうか多分オーバーライドなんなんだけど。 まあオーバーライドしてその返り値としてpatchのURLになるようにする。 こんな感じ。

def patches
  "http://projects.qi-hardware.com/index.php/p/openwrt-packages/source/file/master/w3m/patches/003-GC_set_warn_proc.patch"
end

で、一つならこれでいいんだけど、patchが複数ある場合は、 返り値がハッシュになる。 こんな感じ。

def patches
  { "1" => "http://projects.qi-hardware.com/index.php/p/openwrt-packages/source/file/master/w3m/patches/001-disable-host-libs-detection.patch"
    "2" => "http://projects.qi-hardware.com/index.php/p/openwrt-packages/source/file/master/w3m/patches/003-GC_set_warn_proc.patch" }
end

w3mのパッチは、同じところに4つほど転がってるのでこれで全部当てちゃってもいいかもしれない。 それぞれのパッチが何をしているからわからないけどな! ってことで自分はGCのやつしか当ててませんが。

posted by 麦汁 at 11:53 | Comment(0) | TrackBack(0) | Mac | このブログの読者になる | 更新情報をチェックする

2011年12月10日

Mac(Lionちゃん)で文字だけで素敵に動画を再生しちゃおう☆

最近の気分的に、(無駄に)文字ベースで色々済ませたくなってきたので 今回は動画の再生を文字ベースですることにチャレンジ☆

ってことでどうやったらそれが出来るか調べてきたよ☆ (実は昔も試したことあるけど)

必要なのは、AAlibもしくはlibcacaと、みんな大好き(ほんとか?)MPlayer!

AAlibちゃんは、画像なんかをAAに変換してくれる素敵なライブラリ。 MPlayer はこいつを使って動画をAAにしたものを再生するんだ!

libcacaちゃんはそれのカラー版。 AAlibはモノクロなんだけどlibcacaを使うと色まで着いてとってもゴージャス!

MPlayerは、言うまでもないけど動画再生するやつね。うん。

じゃあ、まずはaalibちゃんを

$ brew install aalib

でインストール! あっさり入るよ!

そしてlibcacaちゃんも

$ brew install libcaca --use-gcc

でちゃちゃっとインストール!

その後にMPlayerもインストール!

$ brew install mplayer --use-gcc

–use-gcc しないとインスコできないよ! 気を付けてね!

あとは適当な動画を用意して

$ mplayer -vo aa hoge.mpg

としたら(白黒だけど)動画が再生されるよ! 感動!

出て来るwindowのサイズがちっちゃい? それなら

$ mplayer -vo aa:width=250:height=80 hoge.mpg

って感じで幅、高さを指定できるよ! できるけど自分の環境だとちょっと変になるけど><

で、白黒だと味気無いと思うならそこでlibcacaの出番!

$ mplayer -vo caca hoge.mpg

これで、カラー付きで文字で動画が再生されちゃうっ! ひゃっはー!

フォントサイズを変えたり、表示されるwindowの大きさを変えるのは

$ CACA_FONT=6x10 CACA_GEOMETRY=200x64 mplayer -vo caca ~/hoge.mpg

こんな感じ。 CACA_FONTとかちゃんとドキュメントに書いてないから適当にやったけどうまくいったよ!

で、どちらにしてもデフォルトだとX11のウインドウが出てきちゃう>< せっかくの文字での再生なんだからTerminal上でやりたいよね>< そのためのオプションなんかもしっかり用意されているよ!

AAlibの方だと

$ mplayer -vo aa:driver=curses hoge.mpg

で、

libcacaの方だと

$ CACA_DRIVER=ncurses mplayer -vo caca hoge.mpg

でいける!

んだけどTerminalがなのかcursesの方の問題なのかスムーズに再生されません残念><

本当は「CUIだと動画見られないだって? Terminalでも動画再生できるよ?(ドヤァ」したかったのに>< 昔LinuxでAAlibを試した時はいい感じだった気がするけどな……。

posted by 麦汁 at 10:44 | Comment(4) | TrackBack(0) | Mac | このブログの読者になる | 更新情報をチェックする

2011年10月09日

Lion+homebrew で w3m が動かなかったのがなんとかなったヒャッハー

※bdw-gcを開発版にしているのでw3m以外でそれに依存しているものがある場合等は要注意

Lionちゃんを使ってて、自分の環境だとw3mが動かなくって困っておりました。 なんだけど、 {macports} w3mがLionで動かないので対処してみた という記事で、MacPorts環境では動かせたというのがあったので、 ならばhomebrewでも試行錯誤したらどうにかなるのではっ! と思い 三日ぐらいかけてどうにかしました。

まず例の記事によると、 bdw-gc が 7.1 では駄目らしいので HomeBrew の Formula を編集する。 ってことで

$ sudo brew edit bdw-gc

Formulaファイルを開いて以下のようにする。

require 'formula'

class BdwGc < Formula
#  url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz'
  url 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha6.tar.gz'
  homepage 'http://www.hpl.hp.com/personal/Hans_Boehm/gc/'
# 7.1
#  md5 '2ff9924c7249ef7f736ecfe6f08f3f9b'
#  7.2alpha6
  md5 '319d0b18cc4eb735c8038ece9df055e4'

  fails_with_llvm "LLVM gives an unsupported inline asm error", :build => 2335

  def install
    # ucontext has been deprecated in 10.6
    # use this flag to force the header to compile
#    ENV.append 'CPPFLAGS', "-D_XOPEN_SOURCE" if MacOS.snow_leopard?
    ENV.append 'CPPFLAGS', "-D_XOPEN_SOURCE"# if MacOS.snow_leopard?

    system "./configure", "--disable-debug", "--disable-dependency-tracking",
                          "--prefix=#{prefix}"
    system "make install"
  end
end

なんだかんだ戻せるようにコメントアウトで本来のコードを残しているのは愛嬌ってことで。 (CPPFLAGS のところはいらないかもしれないけどこれで動いているからいいや)

そんでもって

$ sudo brew install bdw-gc

これだけでlinkはされるのかな? わかんないから心配なら

$ sudo brew link bdw-gc

しておくといいかもしれない。

それからw3mのFormulaをいじるために

$ sudo brew edit w3m

中身は

require 'formula'

class W3m < Formula
#  url 'http://downloads.sourceforge.net/project/w3m/w3m/w3m-0.5.2/w3m-0.5.2.tar.gz'
  url 'http://downloads.sourceforge.net/project/w3m/w3m/w3m-0.5.3/w3m-0.5.3.tar.gz'
  homepage 'http://w3m.sourceforge.net/'
#  md5 'ba06992d3207666ed1bf2dcf7c72bf58'
  md5 '1b845a983a50b8dec0169ac48479eacc'

  depends_on 'bdw-gc'

  fails_with_llvm :build => 2334

  def install
    system "./configure", "--disable-debug", "--disable-dependency-tracking",
                          "--prefix=#{prefix}"
    system "make install"
  end

  def patches
    "http://projects.qi-hardware.com/index.php/p/openwrt-packages/source/file/master/w3m/patches/003-GC_set_warn_proc.patch"
  end
end

どんな変更をしているかというと まずHomeBrewのw3mが古いので0.5.3を使うように変更。 これはpatchを当てるための前準備でもある。 で、patchesというメソッドを定義。 これを書いておくとパッチを当ててくれるよ! (参考: https://github.com/mxcl/homebrew/wiki/Formula-Cookbook)

ちなみにパッチの内容は

--- a/main.c
+++ b/main.c
@@ -833,7 +833,8 @@ main(int argc, char **argv, char **envp)
     mySignal(SIGPIPE, SigPipe);
 #endif

-    orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);
+    orig_GC_warn_proc = GC_get_warn_proc();
+    GC_set_warn_proc(wrap_GC_warn_proc);
     err_msg = Strnew();
     if (load_argc == 0) {
  /* no URL specified */

こんなん。 bdw-gcの使い方が変わってるっぽいですね。 GC_set_warn_proc がnullを返すようにでもなったのかな。

あ、それとついでにimageも見られるように./configureのoptionも削ってます。

これで

$ brew install w3m

したらLionちゃんで動くw3mが手に入るよ! これでemacs-w3mも動いてむぎちゃん快適!

ちなみにEasyPackageだと余裕で動くそうです。 それに最初に張ったリンクによるとMacPortsでも余裕で動くようです。

タグ:Mac LION w3m HOMEBREW
posted by 麦汁 at 17:53 | Comment(0) | TrackBack(0) | Mac | このブログの読者になる | 更新情報をチェックする