日付が変わってしまいましたが、NetBSD Advent Calendar2016の2日目の記事です。
はじめに
Chromium browserは、Google Chromeのopen source版のような位置付けのウェブブラウザーです。 WebkitのforkであるBlinkというレンダリングエンジンを搭載しており、私の愛用しているFirefoxよりも軽快に動作すると言う話です。
これまでの経緯
Chromium browserについては、2016年7月頃にバージョン51をNetBSD/amd64 currentで動かそうと試みていました。 しかし、以下の理由で積極的には使用できない状態でした。
- PR kern/49691に該当してしまい、頻繁にkernel panicを引き起こしてしまう。
- Googleアカウントによるサインインができず、ブックマークの同期等ができない。
今回の取り組み
Chromium 51は、FreeBSD Portsのパッチをベースに、NetBSD向けに修正して行く形で進めました。 今回も、Chromium 54に対するFreeBSD向けのパッチをベースにしました。 ですが、公式なFreeBSD Portsのツリーには収録されていませんでしたので、https://github.com/gliaskos/freebsd-chromiumにあるパッチをベースにしました。
ですがこのパッチは、*BSD向けとしてFreeBSDのみに該当するような内容を含めている箇所が数多くありました。 NetBSDとFreeBSDは、同じと考えられない部分も多いですので、ここでされているような対処は行き過ぎだと考えています。
ですので、NetBSDで動かす際には、なるべくFreeBSDでも動くと考えられるようにしつつ、NetBSDに対応するように変更しました。 最終的には、FreeBSDの環境でも試すべきですが、そこまではできていません。
移植し結果は、 pkgsrc/wip/chromium-newとして公開しました。
関門1
ビルドを開始して最初に気付いたのは、51の頃に使われていたGYPがもう十分にメンテナンスされていないようだと言うことです。 私の記憶では、GYPはGenerate Your Projectsの略で、mozcのビルドにも使われていました。 ですが、少なくともChromium 54では、GN (Generate Ninjaの略らしい)を使うのが良いようです。ですが、GYPで実現されていた内容が全てバージョン54のGNで実現されているのではありません。
また、GNで*BSDを認識する変数として、is_bsdと言う変数が定義されていますが、これがFreeBSD用に使われるようになっていて、NetBSD特有な処理をさせることができないという問題がありました。 https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=blob;f=chromium-new/patches/patch-tools_gn_bootstrap_bootstrap.py;h=f74016c0fc743b1cba38ccf2ca7fa76026eb83cf;hb=HEADや、https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=blob;f=chromium-new/patches/patch-tools_gn_args.cc;h=b8daf3aee96f157d8c3232351a78f97dc2975cd0;hb=HEADのように、is_netbsdを定義する必要がありました。
関門2
関門2と書きましたが、関門は1つしかありません。 あえて言うのであれば、私のラップトップでは一回のビルドに4から5時間を要するので、試行錯誤が難しいという点があります。 他は良くあるNetBSD向けのプログラムの移植と言う感じです。
実際にChromuium 54を使ってみよう
http://www.pkgsrc.org/wip/に記載の手順に従ってpkgsrc-wipをcloneしましょう。 具体的には、以下のようにします。
$ cd /usr/pkgsrc/devel/git-base
$ make update
$ cd /usr/pkgsrc
$ git clone git://wip.pkgsrc.org/pkgsrc-wip.git wip
既にpkgsrc-wipを/usr/pkgsrc/wipにclone済みの方は、最新の状態に更新してください。 具体的には、以下のようにします。
$ cd /usr/pkgsrc/wip
$ git pull
CVSの時代のpkgsrc-wipのままの場合には、ローカルでの変更をバックアップした上で、ggit cloneし直してください。
それでは、Chromium 54をビルドしてインストールします。 具体的には、以下のようにします。
$ cd /usr/pkgsrc/wip/chromium-new
$ make update
これで約5時間待つと完了します。
自動的にsudoを使ってパッケージのインストールをするようにしていない場合には、適宜進捗を確認してrootのパスワードを入力してください。
この際、以下の内容を/etc/mk.confに足しておくことをお勧めします。
.if exists(/usr/pkg/bin/sudo)
SU_CMD=/usr/pkg/bin/sudo /bin/sh -c
.endif
残された課題
/usr/pkgsrc/wip/chromium-new/TODOにも書いていますが、以下のような問題が残っています。
- オーディオ出力がされない。
- Passwords cryptographer error was encountered:というエラーが発生する。
おわりに
普通にウェブサイトを見て回るような用途では、問題なく使用できます。 オーディオが出力されない問題については、大きな問題ですので、良いアイディアがあれば教えてください。 それが解決すれば、pkgsrc/www/chromiumとしてインポートしたいと考えています。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。