Rabbit Slide Show

Tokyo Debian Update Mozc

2024-11-16

Description

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は対応すすんでいるのでとりくみが参考になるかも
興味がある人はぜひ手を動かしていると面白いかも

Other slides

DebConf20 DebConf20
2020-08-25