【 Topics 】

ブログを引っ越しました。こちらのブログは現状のまま凍結します。(2020年10月14日)

引越し先: Operation Normal ? (v2)(同一サイト内です)

Mozc を python3 対応にする 3 つのパッチ

Mozc を python3 対応にするパッチは、現在のところ下記の3つが存在することを確認しています。(これら以外にも公開されているものがあれば教えてください)

  1. Debian の 2.23.2815.102+dfsg-7 パッケージで適用されている パッチ (約3.5KiB)
  2. Fedora31 の mozc-2.23.2815.102-8.fc31 パッケージで適用されているパッチ (約48KiB)
  3. Mozcの Issue #462 でArfrever氏によって投稿されたパッチ (約108KiB)

3つのパッチのサイズがかなり異なっていますが、Debian のものは Linux 上でビルドする際の必要最低限な修正のみを行ったということなのでしょうか?

ちなみに Mageia で 2 または 3 のパッチを適用すると、ビルド時にエラーを吐いてしまいます。例えば 3 のパッチを使用した場合には下記のような感じ。

[266/957] ACTION(host) [oss] Generating user pos data.
FAILED: gen/data_manager/oss/user_pos_token_array.data gen/data_manager/oss/user_pos_string_array.data gen/data_manager/oss/pos_list.data 
cd ../../data_manager/oss; python ../../dictionary/gen_user_pos_data.py "--id_file=../../data/dictionary_oss/id.def" "--special_pos_file=../../data/rules/special_pos.def" "--user_pos_file=../../data/rules/user_pos.def" "--cforms_file=../../data/rules/cforms.def" "--output_token_array=../../out_linux/Release/gen/data_manager/oss/user_pos_token_array.data" "--output_string_array=../../out_linux/Release/gen/data_manager/oss/user_pos_string_array.data" "--output_pos_list=../../out_linux/Release/gen/data_manager/oss/pos_list.data"
Traceback (most recent call last):
  File "../../dictionary/gen_user_pos_data.py", line 107, in 
    main()
  File "../../dictionary/gen_user_pos_data.py", line 99, in main
    options.output_token_array, options.output_string_array)
  File "../../dictionary/gen_user_pos_data.py", line 67, in OutputUserPosData
    sorted(x.encode('utf-8') for x in string_index.keys()), output_string_array)
  File "../../dictionary/gen_user_pos_data.py", line 67, in 
    sorted(x.encode('utf-8') for x in string_index.keys()), output_string_array)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
[268/957] ACTION(host) Generating gen/dictionary/pos_map.inc
FAILED: gen/dictionary/pos_map.inc 
cd ../../dictionary; python gen_pos_map.py "--user_pos_file=../data/rules/user_pos.def" "--third_party_pos_map_file=../data/rules/third_party_pos_map.def" "--output=../out_linux/Release/gen/dictionary/pos_map.inc"
Traceback (most recent call last):
  File "gen_pos_map.py", line 129, in 
    main()
  File "gen_pos_map.py", line 125, in main
    OutputPosMap(pos_map, stream)
  File "gen_pos_map.py", line 93, in OutputPosMap
    key = code_generator_util.ToCppStringLiteral(key)
  File "/home/tomcat/rpm/BUILD/mozc-2.23.2815.102/src/build_tools/code_generator_util.py", line 48, in ToCppStringLiteral
    return b'"%b"' % b''.join(br'\x%02X' % c for c in s)
  File "/home/tomcat/rpm/BUILD/mozc-2.23.2815.102/src/build_tools/code_generator_util.py", line 48, in 
    return b'"%b"' % b''.join(br'\x%02X' % c for c in s)
TypeError: %X format: a number is required, not str
[271/957] ACTION Generating gen/gui/character_pad/data/unihan_data.h.
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "build_mozc.py", line 1236, in 
    main()
  File "build_mozc.py", line 1223, in main
    BuildMain(cmd_opts, cmd_args)
  File "build_mozc.py", line 854, in BuildMain
    BuildWithNinja(options, targets)
  File "build_mozc.py", line 828, in BuildWithNinja
    RunOrDie([ninja, '-C', build_arg] + ninja_targets)
  File "/home/tomcat/rpm/BUILD/mozc-2.23.2815.102/src/build_tools/util.py", line 99, in RunOrDie
    '==========']))
build_tools.util.RunOrDieError: 
==========
 ERROR: ninja -C out_linux/Release mozc_server mozc_renderer mozc_tool mozc_emacs_helper uim-mozc fcitx-mozc ibus_mozc

python3 やその他のライブラリーなどのバージョンの違いによるものなのか、あるいは他の原因によるものなのか、私のスキルでは原因解明は難しそうなので深追いしていません(-_-;)
なので拙作の野良パッケージでは、Debian のパッチを多少モディファイしたものを使っています。

【2020年1月22日 追記】

上述のエラーの件ですが、システムのデフォルトの python のバージョンが 2 系の場合に発生する模様です。

Mageia | comments (0) | -