6月に入ったくらいから、mozcのemergeがエラーを吐いて失敗するようになってしまった。
どうやら、GCCのバージョンが14になってからはemergeできていないように思う。Bugzillaを探ってみると、
というのがあったので、ここで紹介されている次のebuildを拾ってきてemergeすると、また別のエラーが出てくる。(これは、Bugzillaでも指摘されているのだが)
(エラーの様子)
[6/9] /usr/bin/x86_64-pc-linux-gnu-g++ -MMD -MF obj/unix/emacs/mozc_emacs_helper.mozc_emacs_helper.o.d -DOS_LINUX -DMOZC_BUILD -DCHANNEL_DEV -DNDEBUG -DQT_NO_DEBUG -DMOZC_NO_LOGGING -DIGNORE_HELP_FLAG -DIGNORE_INVALID_FLAG -I/var/tmp/portage/app-i18n/mozc-2.28.5029.102-r5/work/mozc-2.28.5029.102/src -Igen -Igen/proto_out -fmessage-length=0 -fno-strict-aliasing -funsigned-char -pipe -pthread -fno-omit-frame-pointer -fstack-protector --param=ssp-buffer-size=4 -Wall -Wno-char-subscripts -Wno-sign-compare -Wno-deprecated-declarations -Wwrite-strings -Wno-unknown-warning-option -Wno-inconsistent-missing-override -fPIC -fno-exceptions -Wtype-limits -march=native -O2 -pipe -Wno-deprecated -Wno-covered-switch-default -Wno-unnamed-type-template-args -Wno-c++11-narrowing -std=c++17 -c ../../unix/emacs/mozc_emacs_helper.cc -o obj/unix/emacs/mozc_emacs_helper.mozc_emacs_helper.o
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
File "/var/tmp/portage/app-i18n/mozc-2.28.5029.102-r5/work/mozc-2.28.5029.102/src/build_mozc.py", line 956, in <module>
sys.exit(main())
~~~~^^
File "/var/tmp/portage/app-i18n/mozc-2.28.5029.102-r5/work/mozc-2.28.5029.102/src/build_mozc.py", line 941, in main
BuildMain(cmd_opts, cmd_args)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/var/tmp/portage/app-i18n/mozc-2.28.5029.102-r5/work/mozc-2.28.5029.102/src/build_mozc.py", line 681, in BuildMain
BuildWithNinja(options, targets)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/var/tmp/portage/app-i18n/mozc-2.28.5029.102-r5/work/mozc-2.28.5029.102/src/build_mozc.py", line 655, in BuildWithNinja
RunOrDie([ninja, '-j32', '-l0', '-v', '-C', build_arg, target_name])
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/tmp/portage/app-i18n/mozc-2.28.5029.102-r5/work/mozc-2.28.5029.102/src/build_tools/util.py", line 91, in RunOrDie
raise RunOrDieError('\n'.join(['',
...<2 lines>...
'==========']))
build_tools.util.RunOrDieError:
そこで、ChatGPTにエラーの修正方法聞いてみると、簡単に答えが返ってきてコンパイルもうまくいったので次のようなパッチを作った。前記のebuildを修正して作成したパッチを適用するようにしたところ、とりあえずemergeできるようになった。
diff --git a/src/unix/emacs/mozc_emacs_helper_lib.cc b/src/unix/emacs/mozc_emacs_helper_lib.cc
index ee6d244..dd52544 100644
--- a/src/unix/emacs/mozc_emacs_helper_lib.cc
+++ b/src/unix/emacs/mozc_emacs_helper_lib.cc
@@ -406,7 +406,7 @@ void PrintField(const protobuf::Message &message,
const protobuf::FieldDescriptor &field,
std::vector<std::string> *output) {
output->push_back("(");
- output->push_back(NormalizeSymbol(field.name()));
+ output->push_back(NormalizeSymbol(std::string(field.name())));
if (!field.is_repeated()) {
output->push_back(" . "); // Print an object as a value.
@@ -475,7 +475,7 @@ void PrintFieldValue(const protobuf::Message &message,
break;
case protobuf::FieldDescriptor::CPPTYPE_ENUM: // enum
- output->push_back(NormalizeSymbol(GET_FIELD_VALUE(Enum)->name()));
+ output->push_back(NormalizeSymbol(std::string(GET_FIELD_VALUE(Enum)->name())));
break;
case protobuf::FieldDescriptor::CPPTYPE_STRING: { // string
ただ、943518 – app-i18n/mozc-2.30.5618.102: version bumpでも指摘されているように 2.30.5618.102は2年近く前のバージョンであるため、最新のebuildを求める声も出ており、自分が2週間で作るぞという人もいたようなのだが、その後はどうなっているのだろうか?(まずはBazelの勉強が必要とも書いてあったので、とてもじゃないけど2週間では無理なようだが・・・)