Chromium browserをNetBSDで使う計画の経過報告

日付が変わってしまいましたが、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アカウントによるサインインができず、ブックマークの同期等ができない。
しかし、2016年11月8日にchristos@がhttp://mail-index.netbsd.org/source-changes/2016/11/08/msg078942.htmlでPR kern/49691で提案されていた修正をコミットしたので、安心してChromiumを試すことができるようになりました。

今回の取り組み

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 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

pkgsrc/mail/dkimproxyを使ってみたが、受信時の動作は、現在の用途には合わないようだった

とある過去に利用者のいたドメインを所有しているのだが、相当に雑な運用だったようで、いまだにSPAM以外の電子メールが来るし、 そのドメインの存在しないアカウントを装った電子メールが多く送信されているようだった。 しばらく、キャッチオール設定をして受信してみて気付いた...