システム管理: 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月14日

何もしない一日

8 時起床.
布団の中でだらだらと過ごす.

昼に買い物に行く.
野菜などを買う.

帰宅して横になって休む.

夕方になって起き上がり, 本を読む.
太宰治『御伽草子』「御伽草子」から「瘤取り」.
絵本の「こぶとりじいさん」の太宰治による解釈. 面白い.

それから食事をとる.
大根と豆腐の鍋.

今日はのんびりできた.

眠剤と頓服を飲んで布団に入る.
posted by 底彦 at 18:07 | Comment(0) | TrackBack(0) | 日常生活

2024年01月13日

無気力が辛い

7 時起床.

何とか鬱からは回復した.

朝食をとる.
納豆と卵かけご飯と味噌汁.

疲れている.
このところ, ぐっすり眠るということができていない.
疲れがとれない.

昼に買い物に行く.
野菜や肉などを買う.

なぜか気力が出ない.

本を読む.
太宰治『御伽草子』「新釈諸国噺」から「吉野山」.
半ば自暴自棄になり出家遁世した男の, 浮き世への未練がましい告白. 生々しい. 自分にもこのような潔くないところがある.

次いで同じ『御伽草子』から「竹青」.
悉く世間でうまく生きられない男が, 烏になるという奇妙な体験を経て幸福な最期を迎える話.
主人公の要領の悪さ, 真面目さゆえの愚鈍さなどに共感できる.

無気力が辛い.
何か深いところで非常に疲れている気がする.
何もせずに休みたい.

夕食をとる.
豚生姜焼きと玉葱炒め.

眠剤と頓服を飲んで布団に入る.

疲れている.
しばらく早い時間に起きるのを止めようと思う.
posted by 底彦 at 19:15 | Comment(0) | TrackBack(0) | 日常生活

2024年01月12日

終日寝込む

鬱が辛い.

気分がどんよりしている.

頭の中に灰色の靄がかかっているような感覚がある.

昼まで起き上がれず.

午後になって何とか起き上がる.

買い物に行く.
いつものスーパーまで歩く気力が無いので, 近所のパン屋でパンを買う.

帰宅して食べる.

再び寝込む.

夕方を過ぎても回復せず.

今日は何もできなかった.

そのまま休む.
posted by 底彦 at 17:48 | Comment(0) | TrackBack(0) |

2024年01月11日

買い物 〜 デイケアに行く

7 時起床.

体がふらふらする. 眠剤が効き過ぎたようだ.

朝食をとる.
キャベツと目玉焼きとコーヒー.

少し休んでから昼前に買い物に行く.
野菜などを買う.

午後からデイケアに行く.
今日のプログラムは『幸せについて考える』.

テーマを与えられて, それについて自分の感じることや思うところを書いていく.
自分でも思ってみなかったような事柄が出てきて面白い.

夕方に帰宅.

食事をとる.
大根の中華スープ.

昨日作った豆腐の中華スープが美味しかったので, 今日は大根で試してみた.
中華と言っても市販の鶏ガラスープの素を使うだけなので, いろいろなバリエーションが考えられる.

眠剤と頓服を飲んで布団に入る.
posted by 底彦 at 20:08 | Comment(0) | TrackBack(0) | 日常生活

2024年01月10日

午後まで寝込む 〜 買い物と食事

7 時起床.

起きられたが鬱が辛い.

のろのろと朝食を用意する.
キャベツと目玉焼きとコーヒー.
コーヒーの香りに癒される.

やはり鬱が苦しい.
将来に関する不安に苛まれる.
頓服を飲んで寝込んだ.

そのまま午後まで動けず.

夕方前に何とか起き上がる.
買い物に行く.
気分が重くて, 足を一歩前に出すのも辛い.

買い物をして帰宅.

夕食をとる.
豆腐の中華スープ.
温かい食事でほっとする.

まだ早いが眠剤と頓服を飲んで休む.
posted by 底彦 at 18:00 | Comment(0) | TrackBack(0) |

2024年01月08日

終日寝込む

朝から鬱が辛い.
頓服を飲んで寝込む.

夕方前に何とか起き上がる.
食事をとる.
納豆と卵かけご飯と味噌汁.

まだ夕方だが, 眠剤と頓服を飲んで休む.
posted by 底彦 at 16:52 | Comment(0) | TrackBack(0) |

2024年01月07日

眠剤が効き過ぎる 〜 デイケアの友人と会う

9 時起床.

ふらふらする. まだ眠剤が残っている.
たまにこういう時がある.

コーヒーを淹れる.
香りで寛ぐが, 体が麻痺したような状態で辛い.

横になって昼まで休む.

午後からデイケアの友人と会う.
食事をとりながら, お互いの近況など話す.
体調のことや仕事のことなど.

夕方に別れて帰宅.

食事をとる.
ソーセージとキャベツ.

眠剤と頓服を飲んで布団に入る.
posted by 底彦 at 19:46 | Comment(0) | TrackBack(0) | 日常生活

2024年01月06日

散歩と買い物と食事

3 時起床.

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

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

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

1 時間半ほど歩いた.

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

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

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

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

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

2024年01月05日

ほぼ終日寝込む

1 時起床.

早い時間に目が覚めたが鬱が辛い.
何とか起き上がる.

無気力で何もする気にならない.

よろよろと本棚からスケッチブックを取り出して, 絵を描く.
思い付くまま, わけのわからない形を描いた.
線が弱々しい.

コーヒーを淹れて一休みする.

数学をやる.
圏論の教科書を読むが, 内容が頭に入ってこない.

灰色の靄が立ち込めている感じがする.
体が重い.

結局, 明け方に寝込んだ.
そのまま午後まで起きられず.

枕元の頓服を飲んで, 午後に起きる.
買い物に行く気力が無いので, 冷蔵庫の中のもので食事を作る.

大根煮, 納豆と卵かけご飯, 味噌汁.

温かい大根が美味しい. ほっとする.
時間をかけてゆっくり食べた.
食事ができたことだけはよかった.

今日は苦しかった.
まだ夕方だが, 眠剤と頓服を飲んで布団に入る.
posted by 底彦 at 16:06 | Comment(0) | TrackBack(0) |
ファン
検索
<< 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)
(1463)
借金 (8)
勉強 (13)
(13)
数学 (97)
運動 (8)
日常生活 (1407)
(204)
健康 (38)
読書 (21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: