アフィリエイト広告を利用しています

2024年01月06日

散歩と買い物と食事

3 時起床.

やりかけの OpenBSD アップグレード作業の続きをやる.

昼前までかかって終了する.

散歩に出かける.
天気がいいので, ゆっくり陽射しを浴びながら歩く.

1 時間半ほど歩いた.

ついでにいつものスーパーに寄って買い物をする.
野菜や魚などを買う.

帰宅して本を読む.
太宰治『御伽草子』「新釈諸国噺」から「裸の川」, 「義理」, 「女賊」.
「裸の川」は, 川にお金を落としてしまった侍が下足に命じてそれを探させる話.
「義理」は, つまらぬ義理を果たしたことで大切なものを失ってしまう武士の話.
「女賊」は山賊の頭領の妻になった公卿の娘とその子どもの話.
どれも面白い.

戸部良一他『失敗の本質』.
ミッドウェー海戦における日本軍の敗北に関する分析.
情報と防御に対する日米の意識の差を思い知らされる.

夕方に食事.
鰯丸干しと数の子とご飯.
数の子は正月用に買ったのだが, 今日食べた.

眠剤と頓服を飲んで休む.
posted by 底彦 at 20:09 | Comment(0) | TrackBack(0) | 日常生活

システム管理: OpenBSD のアップグレード作業 ── 2024 年 1 月 (3)

間が空いたが, OpenBSD ベースシステムのコンパイルエラーについて調べる.

前回, stable のベースシステムのコンパイルを行ったところ, current のベースシステムのコンパイルで起こったエラー:

/usr/src/gnu/usr.bin/clang/libclangAST/../../../llvm/clang/lib/AST/Interp/ByteCodeExprGen.cpp:119:18: error: no member named 'emitCast' in 'clang::interp::ByteCodeExprGen'
return this->emitCast(*FromT, *ToT, CE);
~~~~ ^
/usr/src/gnu/usr.bin/clang/libclangAST/../../../llvm/clang/lib/AST/Interp/ByteCodeExprGen.cpp:1428:16: note: in instantiation of member function 'clang::interp::ByteCodeExprGen::VisitCastExpr' requested here
template class ByteCodeExprGen;
^
. . . .

fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
*** Error 1 in gnu/usr.bin/clang/libclangAST (:67 'ByteCodeExprGen.o': @c++ -O2 -pipe -fno-ret-protector -mno-retpoline -ffunct...)
*** Error 2 in gnu/usr.bin/clang (:48 'all': @for entry in include/llvm/Config libLLVMSupport libLLVMTableGen llvm-tblgen inc...)
*** Error 2 in gnu/usr.bin (:48 'all': @for entry in clang cvs binutils binutils-2.17 perl texinfo; do set -e; if test -d /u...)
*** Error 2 in gnu (:48 'all': @for entry in lib usr.bin usr.sbin; do set -e; if test -d /usr/src/gnu/${entry}.amd64; then ...)
*** Error 2 in . (:48 'all': @for entry in lib include bin libexec sbin usr.bin usr.sbin share games gnu sys; do set -e; if ...)
*** Error 2 in . (Makefile:97 'do-build')
*** Error 2 in /usr/src (Makefile:74 'build')

は発生せずうまく通った.

それが反映されている可能性もあると思い, ベースシステムの current のソースコードをあらためて取得し直してコンパイルしてみる.

$ cd /usr
# mv src src.stable
$ cvs -qd anoncvs@anoncvs.example.org:/cvs checkout -P src
# make obj && make build

stable 版と同様, 以前のエラーは出ない.

しかし, 次のようなエラーが発生した.

error: error opening 'ByteCodeStmtGen.o.d': Permission denied

この ByteCodeStmtGen.o.d というファイルは中間ファイルのようだが, それに対するアクセスパーミッションが無いというのである.
調べてみると, この部分に対する make がオーナー build で実行されているにも拘らず, ByteCodeStmtGen.o.d のオーナーは root になっている. おそらくこれが原因だろうと思う.
同じディレクトリーに Interp.o.d というファイルがあるが, これもオーナーは root になっている.
それぞれのファイルのオーナーを build に変更する.

# cd /usr/obj/gnu/usr.bin/clang/libclangAST
# chown build ByteCodeStmtGen.o.d Interp.o.d

中間ファイルは, そのままもう一度 make build を走らせると削除され, 作り直されてしまうので, /usr/src/Makefile に次のような変更を加えてそれを防ぐ.

$ diff Makefile.orig Makefile
86,87c86,87
< exec ${MAKE} cleandir
< exec ${MAKE} includes
---
> # exec ${MAKE} cleandir
> # exec ${MAKE} includes

こうしておいて make build を実行する.
ある程度コンパイルは進んだが, 今度は次のようなエラーが発生した.

In file included from /usr/src/gnu/usr.bin/clang/lldb-server/../../../llvm/lldb/tools/lldb-server/lldb-gdbserver.cpp:289:
/usr/src/gnu/usr.bin/clang/lldb-server/obj/LLGSOptions.inc:14:1: error: no matching function for call to 'size'
PREFIX(prefix_0, {nullptr})
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/src/gnu/usr.bin/clang/lldb-server/../../../llvm/lldb/tools/lldb-server/lldb-gdbserver.cpp:288:20: note: expanded from macro 'PREFIX'
NAME##_init, std::size(NAME##_init) - 1);
^~~~~~~~~
/usr/include/c++/v1/__iterator/size.h:30:16: note: candidate template ignored: substitution failure [with _Cont = llvm::StringLiteral[]]: member reference base type 'const llvm::StringLiteral[]' is not a structure or union
constexpr auto size(const _Cont& __c)
. . . .

12 errors generated.
*** Error 1 in gnu/usr.bin/clang/lldb-server (:124 'lldb-gdbserver.o')
*** Error 2 in gnu/usr.bin/clang (:48 'all': @for entry in include/llvm/Config libLLVMSupport libLLVMTableGen llvm-tblgen inc...)
*** Error 2 in gnu/usr.bin (:48 'all': @for entry in clang cvs binutils binutils-2.17 perl texinfo; do set -e; if test -d /u...)
*** Error 2 in gnu (:48 'all': @for entry in lib usr.bin usr.sbin; do set -e; if test -d /usr/src/gnu/${entry}.amd64; then ...)
*** Error 2 in . (:48 'all': @for entry in lib include bin libexec sbin usr.bin usr.sbin share games gnu sys; do set -e; if ...)
*** Error 2 in . (Makefile:97 'do-build')
*** Error 2 in /usr/src (Makefile:74 'build')

つまり, 中間ファイル /usr/src/gnu/usr.bin/clang/lldb-server/obj/LLGSOptions.inc というファイル内の記述:

PREFIX(prefix_0, {nullptr})

における型 nullptr_t を持つ nullptr という変数を型 const llvm::StringLiteral に変換できないというものである.

同様のエラーが出ている箇所が他にもある.
いろいろ試行錯誤した結果, 汚いやり方だが次のような変更を行うことでコンパイルは通るようになった.

# cd /usr/src/gnu/llvm/lldb/tools/lldb-server
# diff lldb-gdbserver.cpp.orig lldb-gdbserver.cpp
292c292
< static constexpr opt::OptTable::Info InfoTable[] = {
---
> static opt::OptTable::Info InfoTable[] = {
# cd /usr/obj/gnu/usr.bin/clang/lldb-server
# diff LLGSOptions.inc.orig LLGSOptions.inc
14,17c14,17
< PREFIX(prefix_0, {nullptr})
< PREFIX(prefix_2, {"-" COMMA nullptr})
< PREFIX(prefix_3, {"--" COMMA nullptr})
< PREFIX(prefix_1, {"--" COMMA "-" COMMA nullptr})
---
> PREFIX(prefix_0, {""})
> PREFIX(prefix_2, {"-" COMMA ""})
> PREFIX(prefix_3, {"--" COMMA ""})
> PREFIX(prefix_1, {"--" COMMA "-" COMMA ""})
25c25
< OPTION(nullptr, "connection", grp_connect, Group, INVALID, INVALID, nullptr, 0, 0,
---
> OPTION({""}, "connection", grp_connect, Group, INVALID, INVALID, nullptr, 0, 0,
27c27
< OPTION(nullptr, "general options", grp_general, Group, INVALID, INVALID, nullptr, 0, 0,
---
> OPTION({""}, "general options", grp_general, Group, INVALID, INVALID, "", 0, 0,
29c29
< OPTION(nullptr, "target selection", grp_target, Group, INVALID, INVALID, nullptr, 0, 0,
---
> OPTION({""}, "target selection", grp_target, Group, INVALID, INVALID, nullptr, 0, 0,

ベースシステムのコンパイルとインストールができたので, マージ作業とデバイスファイルの作成を行う.

# sysmerge
# cd /dev/ && ./MAKEDEV all

これで OpenBSD のアップグレード作業がひとまず終了する.
ファン
検索
<< 2024年01月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(44)
コンピューター(211)
(1460)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1407)
(204)
健康(38)
読書(21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村