個人用のGentooリポジトリにAtomのパッケージを入れているのですが、しばらく更新をサボっている間にバージョンが1.10.2から1.14.4まで上がっていました。
ビルド方法が変わったらしく、これまでのパッケージそのままでは使えなかったのでいろいろ試行錯誤しました。その奮闘記です。
まずはビルドを。
まずは1.14.4のドキュメントにしたがってビルドを試してみました。$ git clone https://github.com/atom/atom.git ...(略)... $ cd atom $ git checkout v1.14.4 $ ./script/build Node: v6.9.4 Npm: v3.10.5 Installing script dependencies ...(略)... module.exports = new Proxy({}, { ^ ReferenceError: Proxy is not definedなんやて工藤
レッツ調査。
エラーメッセージで検索してみると、どうやらProxyはNode.jsのバジョン6で登場した機能らしい。でも上のログを見てわかるとおり、Nodeのバージョンは6.9.4だから問題ないはず。
ここから数時間にわたる地道な調査を続けましたが、どういう調査をしたのかはだいたい忘れたので結論だけ書くと
つまり勝手にバージョン4.4.5でProxyを使ったソースを実行していたので「そんなの知らないよ」というエラーが起きていたようです。
解決方法は?
無事原因はわかったのですが、さてどうやって解決しましょう。どうしてもソースに手を加える必要がありそうですが、正直あまりあちこちにパッチを当てたくはありません。
いろいろ試して気づいたのは、Atomの最新ブランチなら問題なくビルドできるということ。
そこで最新ブランチと1.14.4の差分を調べたところ、1.14.4で使っているapmのバージョンは1.15.3ですが、最新ブランチでは1.16.0だったことがわかりました。そして1.16.0ではちゃんとNodeのバージョン6系を使っていまいた。
えーっと、つまり…
atom@1.14.4でもapm@1.16.0をインストールすればいいんじゃね?
というわけで依存パッケージのバージョンを変更するパッチを書くと無事ビルドできました!
そして今。
あらためてこの記事を書くためにもう一度ビルドしてみると。なんと。
パッチも何も当てずにあっさりビルド成功!
( ゚д゚)?
調べてみると、fs-plusの問題だった場所が元に戻っていました。
今までの苦労は何だったんだ…
ところで。
インストール方法も変わって、
$ ./script/build --installを実行すると
/usr/local
以下にインストールしてくれるようになったわけですが、このインストール先を変更できないんですよね。Gentooのebuildではサンドボックス外への書き込みができないので、そのまま実行するとエラーが起きてしまいます。
仕方ないので地道に
insinto
とか doins
でインストールすることにしました。
0 件のコメント:
コメントを投稿