Text
Page: 1
より新しいMozcを Debianでも使いたい メンテナンス上の課題をどう解決するか Kentaro Hayashi ClearCode Inc. 2024年11月 東京エリア・関西合同Debian勉強会
Page: 2
スライドは Rabbit Slide Showにて公開済み より新しいMozcをDebianでも使いたい https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-update-mozc-202411
Page: 3
本日の内容 Debianにおける日本語入力パッケージの話 UpstreamであるMozcの動向 DebianにおけるMozcのメンテナンス状況
Page: 4
本日の内容 Debianにおける日本語入力パッケージの話 UpstreamであるMozcの動向 DebianにおけるMozcのメンテナンス状況
Page: 5
Debianにおける日本語入力 パッケージの話 task-japanese-dekstop 日本語を扱うデスクトップ環境にインストールすべきものを規定 推奨はuimもしくはanthy 通常uim-mozcが選択される
Page: 6
task-japanese-desktop $ apt depends task-japanese-desktop task-japanese-desktop 依存: tasksel (= 3.77) |推奨: firefox-esr-l10n-ja 推奨: firefox-l10n-ja 推奨: fonts-vlgothic 推奨: fonts-ipafont 推奨: uim |推奨: uim-mozc 推奨: uim-anthy 推奨: mozc-utils-gui 推奨: anthy 推奨: libreoffice-l10n-ja 推奨: libreoffice-help-ja 推奨: poppler-data
Page: 7
GNOME環境だったら? task-japanese-gnome-dekstop 日本語を扱うGNOMEデスクトップ環境にインストールすべきものを規定 推奨はibus-mozcもしくはibus-anthy 通常ibus-mozcが選択される
Page: 8
task-japanse-gnome-desktopパッ ケージ $ apt depends task-japanese-gnome-desktop task-japanese-gnome-desktop 依存: tasksel (= 3.77) 推奨: thunderbird 推奨: thunderbird-l10n-ja |推奨: ibus-mozc 推奨: ibus-anthy
Page: 9
Debianにおける日本語入力の概要 Debianにおける日本語入力(変換エンジン)はMozcを前提(既定では) インプットメソッドのフレームワークは好みで選択(im-configによる支援) もちろんAnthyとかSKKとかいろいろ選択肢はあるけど今回は割愛
Page: 10
本日の内容 Debianにおける日本語入力パッケージの話 UpstreamであるMozcの動向 DebianにおけるMozcのメンテナンス状況
Page: 11
UpstreamであるMozcの変遷 2010年: Mozcの公開 2023年10月以降のMozcに対する主な変更 https://zenn.dev/komatsuh/articles/ komatsuh_mozc_updates_from_2023_10 ✅PRの受け入れ範囲の制限の撤廃
Page: 12
UpstreamであるMozcの変遷 継続的なメンテナンス ✅ビルドシステムがGYPからBazelに変更 ✅候補ウィンドウはGTK+からQtへ変更 ✅辞書・記号、絵文字データの更新
Page: 13
本日の内容 Debianにおける日本語入力の概要 UpstreamであるMozcの動向 DebianにおけるMozcのメンテナンス状況
Page: 14
DebianにおけるMozcの メンテナンス状況 https://salsa.debian.org/debian/mozc GunnarさんやIwamatsuさんによるメンテナンス https://discourse.ubuntu.com/t/in-memoriam-gunnar-hjalmarsson/42284 2022年以降はやや停滞気味 🤔 2024年はFTBFSへの対処がメイン メンテナンスしてくれている”誰か”によるベストエフォート
Page: 15
mozc 2.28.4715.102+dfsg-2.3 https://tracker.debian.org/news/1533411/accepted-mozc-2284715102dfsg-23-source- into-unstable/
Page: 16
MozcがFTBFSになると困ること testingから削除される ローカルビルドに支障がでる 独自にシステム辞書を差し替えて使う場合にリビルドできない 例: src/data/dictionary_oss/ https://github.com/utuhiro78/merge-ut-dictionaries https://github.com/reasonset/mozcdict-ext.git
Page: 17
Mozcのリリースとの乖離 Mozc (Debian) 2.28.4715.102+dfsg 一時期testingから削除されていたことも Mozc (Upstream): Debian採用バージョンより新しいもの 2.28系: 2.28.4880.102, 2.28.5029.102 2.29系: 2.29.5160.102, 2.29.5268.102, 2.29.5374.102, 2.29.5544.102 2.30系: 2.30.5544.102
Page: 18
他のディストリビューションの状況 Fedora 2.29.5111.102 GTK renderer openSUSE 2.29.5268.102 Bazelに移行済み
Page: 19
DebianにおけるMozcの更新の壁 ビルドシステム変更の壁 依存ライブラリの壁 パッチ更新の壁
Page: 20
ビルドシステム変更の壁(影響:大) MozcはビルドシステムをGYPからBazelに変更 2.29.5544.102でGYPは非推奨になった GYP対応は(それ以前からすでに)削除がはじまっている 例: --use_gyp_for_ibus_buildは2.29.5160.102で削除済み
Page: 21
ビルドシステム変更の壁(影響:大) Bazelは4.2.3までしかパッケージングされていない (Debian sid) Bazel 7.xにMozcは対応している 🤔 Bazelのパッケージングどうする? 😭 メーリングリスト(debian-bazel@lists.d.o)でも反応なし https://lists.debian.org/debian-bazel/2024/07/msg00000.html
Page: 22
依存ライブラリの壁(影響:中) Mozcはabseilに依存 2.30.5544.102からabseil 20240116.1以降が必要 Debian sidは20230802.1 experimentalに20240722.0が投入されている 😌 mozc 2.28.4715.102+abseil 20240722.0でFTBFSは発生しない
Page: 23
依存ライブラリの壁(影響:中) Mozcはprotobufに依存 🤔 特定のバージョンのprotobufでないとビルドに失敗する experimentalに3.25.4-1が投入されている 💣 mozc 2.28.4715.102+protobuf 3.25.4-1ではFTBFS発生
Page: 24
パッチ更新の壁(影響:大) 既存のパッチを更新していく必要がある Fcitx5サポート(Mozcのリポジトリとは独立) uim-mozcのサポート GYPサポートの復活と追従
Page: 25
パッチ更新の壁(影響:大) 既存のパッチの棚卸し 0001-Update-uim-mozc-to-c979f127acaeb7b35d3344e8b1e40848e.patch 0002-Support-fcitx.patch 0003-Change-compiler-from-clang-to-gcc.patch 0004-Add-usage_dict.txt.patch 0005-Enable-verbose-build.patch 0006-Update-gyp-using-absl.patch 0007-common.gypi-Use-command-v-instead-of-which.patch 0008-renderer-Convert-Gtk2-to-Gtk3.patch 0009-protobuf.gyp-Add-latomic-to-link_settings.patch 0010-Fix-the-compile-error-of-ParseCommandLineFlags-with.patch 0011-Fix-missing-abseil-gyp-link-settings.patch
Page: 26
どこまで視野に入れて 更新していくか? 時間的な制約 Debian 13 (trixie)のフリーズが来年からはじまるはず Bazel 7.xのtrixieへの投入は間に合わないだろう(私見) → GYPのパッチを維持していくのが現実的か ❌upstreamが放棄したものをメンテしていくコスト発生
Page: 27
どこまで視野に入れて 更新していくか?(GUI) 依存上の制約 Qtに移行する or しない 移行する → 2.29.5268.102以降 移行しない → 2.29.5160.102まで
Page: 28
どこまで視野に入れて 更新していくか?(abseil) 依存上の制約 abseil 20240722.0がDebian sidに投入されたら? → 2.30.5544.102以降も狙えるかも abseil 20230802.1のまま → 最大でも2.29.5544.102まで
Page: 29
どこまで視野に入れて更新していく か? Mozcのベースバージョンをどこに設定するか 💴 fcitx対応パッチの追従コスト💵 GYP対応パッチの追従コスト💶 uim対応パッチの追従コスト
Page: 30
Fcitx対応パッチ https://github.com/fcitx/mozc upstreamとのtagの対応がわかりづらい https://github.com/fcitx/mozc/pull/68 Bazel対応はすすめられていそう base/vlog.h使っているかどうかで対応バージョンを推測できる
Page: 31
UIM対応パッチ https://github.com/e-kato/macuim upstreamによるメンテナンス状況が不透明 upstreamパッチ+Debian独自パッチのメンテナンスが必要なはず fcitx/mozc方式のメンテナンスのほうが都合がよい?
Page: 32
個人的なビルド実験 2.29.5160.102 をターゲット いきなり2.30系はいろいろ違いすぎてつらそうな予感 GTK rendererがまだ削除されていない GYP非推奨化が本格化していない
Page: 33
2.29.5160.102 をターゲット ✅既存の11パッチの棚卸し ✅abseil GYPパッチ更新(システムのabseilを使う) ✅IBus向けGYPのバックポート --use_gyp_for_ibus_buildオプションの復活 ✅sidのprotobufでビルドできるように修正
Page: 34
Mozc本体のビルド実験 ✅unix/ibus/ibus.gyp:ibus_mozc ✅unix/emacs/emacs.gyp:mozc_emacs_helper ✅renderer/renderer.gyp:mozc_renderer ✅server/server.gyp:mozc_server
Page: 35
Fcitx対応 mozc/fcitxの追従状況を見極めてパッチを再作成 ✅unix/fcitx/fcitx.gyp:fcitx-mozc ✅unix/fcitx5/fcitx5.gyp:fcitx5-mozc
Page: 36
UIM対応 macuimの最新からパッチを再作成 コンパイルできるように追加修正 💣unix/uim/uim.gyp:uim-mozc
Page: 37
TODO: Debianパッケージへのパッチの適用とビルドの整備 d/copyrightのrepack整備 d/watchのとりこみ 動作確認とかもろもろ…
Page: 38
さいごに Debian sidではMozcのupstreamにあまり追従できていないのが現状 openSUSEは対応すすんでいるのでとりくみが参考になるかも 興味がある人はぜひ手を動かしていると面白いかも