蛇にお茶入れる

Pythonやその他プログラミングで学んだ知識のメモ用です

YosemiteでPhantomJS 2.0をソースからコンパイルするときに困ってた話

PhantomJS 2.0を使用してマクロを作ってたのだが,Upload Fileにinputがうまくいかず..
これは2.0のバグみたいで,ホームページでも1.9と比較してRegressionな部分としてあげられてました
PhantomJS 2.0 Release Notes | PhantomJS
Githubのissueに解決策があったので試してみました(Webpage.uploadFile not working in phantomjs 2.0 · Issue #12506 · ariya/phantomjs · GitHub)

やり方はすごく簡単で

src/qt/qtwebkit/Source/WebCore/html/FileInputType.cpp

を以下のようにコメントアウトするだけ

-    if (!ScriptController::processingUserGesture())
-        return;
+    // PATCH related to #12506 - commented out to allow programmatic form file uploads
+    //if (!ScriptController::processingUserGesture())
+    //    return;

あとはリビルドするだけなのが,yosemiteでソースからビルドするときにはまたバグがあるみたい
PhantomJS 2 does not build on OS X 10.0 (Yosemite) · Issue #12630 · ariya/phantomjs · GitHub
に書いてあるように公式からではなく,バグを修正したではなく以下のgitから2.0をクローン
https://github.com/bprodoehl/phantomjs/releases

そして公式ページに書いてあるとおりにビルド(Build | PhantomJS)しようと以下を入力

./build.sh --qt-config "-I /usr/local/include/ -L /usr/local/lib/"

これで完了かとおもったのだが,どうやらエラーが出てすすまないすすまないw
なんとか解決策を2日ほど探ってたのですが,参考になるのがあまりなく詰みかけてました.
最終的に --qt-configを付けなかったらどうなるんだという考えから

./build.sh

にするとうまくリビルドしてくれました.うん.うん...

あとは,./binの中身をphantomjsを/usr/local/binか何かにコピーするとうまくuploadにinputしてくれました!