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してくれました!