Building GNOME 3.16 release (TAKE2).

くどいようだけれど、既に GNOME 3.16.2 のビルド・インストールは完了済み。
今回も適当に (というか、やっと systemd を採用した) Ubuntu Desktop をベースに800個以上パッケージをビルドしている。で、自分のマシンは NVIDIA GPU GeForce GTX 960 を搭載しているので、当然ながら Proprietary なドライバをインストールしているのだけれど、GNOME 3.16 の cheese とか totem とか gnome-maps なんかを起動すると:


(totem:23229): Gdk-ERROR **: The program 'totem' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
(Details: serial 401 error_code 8 request_code 154 (GLX) minor_code 31)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the GDK_SYNCHRONIZE environment
variable to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
[1]    23229 trace trap (core dumped)  totem

てな具合に GDK/X11 向けのバックエンドで SIGSEGV して起動しない現象が多発して手を焼いた。clutter / clutter-Gtk ライブラリ経由で地図なんかを描画しようとすると落ちる。ビルド時のオプションで無効にしたり、次のように clutter のバックエンドをソフトウェア制御することでなんとか凌いでいた:


$ CLUTTER_BACKEND=x11 cheese

まぁ意外と大勢の人達が直面していた問題だったようで、”Bug 747489 – No access to the Visual used to build the CoglOnscreen” として登録されて対応が進んでいたようだ。clutter の開発版である clutter 1.23.2 と、こちらは未だリリースされていないようだけれど clutter-gtk にもパッチが必要。こちらは、登録済みの Bug 747489 のコメント37 に添付されているので、自前でビルド・インストールしている。
これで正常にアプリを起動することが出来るようになって一安心 :):
GNOME-3.16.2-Desktop-04.png

Building GNOME 3.16 release (TAKE1).

既に GNOME 3.16.2 のビルド・インストールは完了済み。
実は、ここまで来るのにいろいろ紆余曲折があった。というのも、今年の初め、ちょうど出張に入る直前まで、昨年の9月にリリースされた GNOME 3.14 のビルドを「毎度のように」時間を見つけながらやっていたのだけれど、このリリースから部分的にサポートが始まった systemd に対応してみたり、使えない Unity デスクトップを排除するようなパッケージ (例えば unity-settings-daemon の古いサポートを無視したまま新しいバージョンの gnome-settings-daemon) をインストールしてデスクトップ再起動を繰り返しているうちに gnome-shell が起動できなくなり、さらには linux の shutdown さえもまともにできなくなってしまった :$。それがわかったのが出張の前日ということもあり、後ろ髪引かれる思いで出張へ。
毎度のことながら ja.po の更新を含めたパッケージ作成には時間がかかるもので、この時は (これも去年の長期出張により一つ前の GNOME 3.12 をスキップしているため) リリースが二つ古い GNOME 3.10 からのアップデートだったということもあり、いろいろなことで時間を食った。さらに改めて振り返ってみると、Running Machine でパッケージを作成しビルドしてインストールというスタイルの「限界」も痛感した :(。このスタイルは GNOME デスクトップのビルドを始めてからかれこれ10年近く変えていないのだけれど、近頃の GNOME はデスクトップの領分を越えてシステム規模の Requires まで要求するようになっていく傾向にあり、常々やりずらいなぁと思っていた。大昔だと、例えば Linux Kernel の Inotify やら HAL なんか。そういうことで、今回は systemd を部分的にインストールしたのが不味かったのかなぁと思っている。確か、この時点で Ubuntu デスクトップが systemd をサポートするのは 15.09 からだと聞いていたので、ubuntu 14.03 には少々強引だったかなぁとも。
そんな出張中に「systemd の導入が前倒しで 15.03から」というニュースを聞いたので、出張が終わったらゼロから構築しようと決めた。さらこのビルドからは仮想マシンをテスト機として用意し、ビルドしたパッケージのインストールや実行テストをきっちり行ってから Running Machine にインストールする方法を始めてみることにした。最初はこの二度手間が苦痛だったけど、何度か危ないケースを回避できたこともあり、今ではやってよかったと思っている。
それでもシステム全体をゼロから構築したので、ビルドの他にもいろいろ手間がかかったけれど、出来上がった現在の GNOME 3.16 デスクトップはこんな感じ:
GNOME3.16.2-Desktop-00.png
そんなこともあり、$HOME 配下に眠っていた大昔のドット・ファイルを一掃することができたもの良かった :D
GNOME 3.16 の出来の方だけれど、リリースノートを読めばわかる通り、大して嬉しい機能はなく、ちょっとした改善レベルであり、このビルドとインストールにかけた時間のことを考えると残念でならない。まぁ今に始まったことではないけれど。この程度の進歩ならば半年ではなく1年リリースで十分じゃないかと思うのは俺だけだろうか。

通知メカニズムの改善

「全面的な改良」を謳っているけど、数個先のリリースではまた改良されそうな気配:
GNOME3.16.2-Desktop-01.png
GNOME3.16.2-Desktop-02.png

Nautilus の改善

毎度「見やすさ」とか「見栄え」とかで手が加えられる「ファイルの一覧」こと Nautilus。但し一覧表示すると、「修正日時」や「詳細な修正日時」の項目の書式は US フォーマットのままで日本語。仕方ないので B.G.O #750917 に登録しておいた。直ぐ治したいのであれば、このチケットに貼り付けたパッチを参照のこと:

system-file-manager.png GNOME3.16.2-Desktop-03.png

ということで、しばらくこんな感じで「ぼやいていく」予定。

Building GNOME 3.14 release (TAKE 3).

ひとまず gnome-shell 関連はおいておいて、アプリ単体のビルドを継続中。
まずは Web こと epiphany ウェブブラウザ。WebKitGTK+ をレンダリング・エンジンとして持ち、GNOME デスクトップ向けに GTK+ ツールキットのバージョン3の UI を持つタブ対応ブラウザ。このバージョンでは、Google Chrome 同様にタブ毎にスレッド (プロセス) を割り当てることができるようになった。あとは表示しているウェブ・ページのソースをデフォルトのエディタで開くことができるようになった:

internet-web-browser.png epiphany-3.14.png

次は Glade ことユーザ・インタフェース・ビルダ。GTK+ バージョン2向けのビルダが Glade-3 と呼ばれ、こちらは GTK+ バージョン3系の UI を設計できる。このバージョンでは、なんとアンケート機能が追加された。同時にユーザ登録する際にメーリングリストの購読も選択できる。一応、個人情報の扱いには注意をはらっている模様。

glade.png glade-3.14-01.png

Glade には設計した UI をモックアップとして表示する機能が追加されているけど、さらに機能が追加されてスクリーンショットも撮れるようになっていた:

$ glade-previewer --help
用法:
glade-previewer [オプション...] - Glade UI 定義をプレビューする
ヘルプのオプション: -h, --help ヘルプのオプションを表示する --help-all ヘルプのオプションを全て表示する --help-gtk GTK+ のオプションを表示する
アプリケーションのオプション: -f, --filename=FILENAME プレビューするファイルの名前を指定する --template テンプレートを読み込むダミーのウィジェット・クラスを生成する -t, --toplevel=TOPLEVELNAME プレビューするトップレベルの名前を指定する --screenshot スクリーンショットを保存する先のファイル名を指定する --css 使用する CSS ファイルの名前を指定する -l, --listen 標準入力待ちにする --slideshow GtkStack を使って全てのトップレベル・ウィジェットのスライドショーを作成する -v, --version バージョンを表示する --display=DISPLAY 使用するXのディスプレイを指定する

次は画像ビューアこと Eye of GNOME。こちらは何が新しくなったか今ひとつ不明。GTK+ バージョン3の新しい API への移行だろうか。プラグインの方もあまり変わっていないような気がする:

eog.png eog-3.14-01.png
eog-3.14-02.png

最後はドキュメント・ビューアこと Evince。こちらも特にサポートするドキュメントの形式が追加されたわけでもなく、GTK+ バージョン3の新しい UI に追従したような感じ:

evince.png evince-3.14-01.png

例えば表示倍率を変えるメニューはこんな感じ:
evince-3.14-02.png
まだまだ半分もいっていないな :$

Building GNOME 3.14 release (TAKE 2).

せっかくなので NetworkManager のバージョン 1.0.0 をビルド・インストールしてみた。ライブラリの統廃合が大きな特徴だけれど、まだ古いライブラリも提供されているのでバージョン 0.9 系の最新版をインストールしているのとあまり変わらない感じ。と思ったら、g-c-c のネットワーク・アプレットが起動されなくなってしまった :$ :
gcc-panels-network-NM10-01.png
まぁ NetworkManager のバージョン 1.0 は GNOME 3.14 のずっと後にリリースされたから仕方がないとは思うのだけれど、なんだか「気持ち悪い」ので現在の開発ブランチである GNOME 3.15 の g-c-c のソースコードを確認してみたら、こんなログが

commit f30e6df1d4665b06a45ad7bbe7a2ed2bfa9387f5
Author: Bastien Nocera 
Date:   Thu Dec 18 08:04:00 2014 +0100
network: Also work with NM 1.0
Remove the NetworkManager version checking altogether. The code was made to check for now very old versions of NetworkManager, and anything newer than ancient should degrade gracefully if we support newer features.
https://bugzilla.gnome.org/show_bug.cgi?id=741661

このネットワーク・アプレットは起動時に実行中の NetworkManager のバージョンを取得してチェックしている:

static gboolean
panel_check_network_manager_version (CcNetworkPanel *panel)
{
const gchar *version;
gchar **split = NULL;
guint major = 0;
guint micro = 0;
guint minor = 0;
gboolean ret = TRUE;
/* 実行中のバージョンを取得して解析する */
version = nm_client_get_version (panel->priv->client);
if (version != NULL) {
split = g_strsplit (version, ".", -1);
major = atoi (split[0]);
minor = atoi (split[1]);
micro = atoi (split[2]);
}
/* そのバージョンが新しすぎるか、もしくは古すぎるか? */
if (major > 0 || minor > 9 || (minor <= 8 && micro priv->nm_warning_idle = g_idle_add ((GSourceFunc)display_version_warning_idle, panel);
}
g_strfreev (split);
return ret;
}

この実装、本来はバージョン 1.0 の NetworkManager の場合は through するはずなのが、どうやら引っかかっていたらしい。なにやらバージョン管理も面倒になったのか、バッサリ割愛されて、かなり古いバージョンのみ弾くような実装に変更されていた。こちらをそのまま適用してネットワーク設定画面を出すことができた:
gcc-panels-network-NM10-02.png
で肝心のコア・パッケージの方だけれど、安易に upstartsystemd で置き換えようとしたら、何だかいろいろ起動しなくなったので止めた。あと、このバージョンから日本語入力などの「IM 切り替えが gnome-setting-daemon から gnome-shell へ移行された」ようで、なにやらこちらも危険な匂いがしたので、ひとまず gnome-shell とそれに依存するパッケージは保留したまま Standalone なアプリを先にビルド中。
(現在インストール保留中のパッケージ)

  1. mutter
  2. clutter と clutter-gtk
  3. gnome-settings-daemon
  4. gnome-session
  5. gcj
  6. gnome-shell

ということで、現在のデスクトップは GNOME のバージョン 3.10 と 3.14 が混ざった状態。特に支障はないのでどうしょうかなぁと考え中 :|