ファン
検索
<< 2024年12月 >>
1
2 3 4 5 6 7
8
9 10 11 12 13 14
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技術ブログ プログラム・プログラマーへ
にほんブログ村

2024年01月28日

システム管理: キーボードが故障する

昨日, うっかりしてキーボードに水をこぼしてしまった.

慌てて拭いたが, 結局一部のキーが入力できなくなった. 主にキーボードの真ん中あたりの, t, y, g, スペースキーなどが無効になってしまっている.

キーボードが使えないのは非常に困る.

ネットで新しいキーボードを購入した.
長く使うものなので, 少し値段がかかっても良いものを買いたい.
それで迷った結果, Happy Hacking Keyboard を選んだ.

思わぬ出費になったが, いい機会だったかも知れない.

2024年01月06日

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

Emacs: Emacs HEAD のコンパイルとインストール ── 2024 年 1 月

Emacs HEAD のコンパイルとインストールを行う.

export AUTOCONF_VERSION="2.71"
export AUTOMAKE_VERSION="1.16"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/gcc/x86_64-unknown-openbsd7.4/11.2.0
$ ./autogen.sh
$ ./configure \
'CFLAGS=-I/usr/include -I/usr/X11R6/include -I/usr/local/include' \
'LDFLAGS=-L/usr/lib -L/usr/X11R6/lib -L/usr/local/lib -lgccjit' \
--prefix=/usr/local \
--mandir=/usr/local/share/man \
--infodir=/usr/local/info \
--with-x-toolkit=athena \
--with-imagemagick \
--with-xaw3d \
--with-x \
--without-xim \
--with-xpm=ifavailable \
--with-native-compilation
$ git pull
$ gmake bootstrap
$ gmake check
# gmake install

問題無く終わった.
タグ: Emacs HEAD emacs30

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

昨日から走らせていたベースシステムのコンパイルは, 先月と同じ箇所でエラー終了した.

/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')

少し調べてみようと思い, stable 版のベースシステムのソースコードを取得してコンパイルしてみる.

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

このプロセスを流したまま, 区切りを付ける.

X のコンパイルを行う.

# cd /usr/xenocara
# make bootstrap
# make obj
# make build

これは問題無く終わった.

ports のアップデートを行う.

# pkg_add -uv

ひとまず, ベースシステム以外のアップグレード・アップデートは終了した.

2024年01月01日

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

新しい月になったので, OpenBSD のアップグレード作業を行う.

ベースシステムのソースコードのアップデート.

$ cd /usr/src
$ cvs -q up -Pd -A

X 関連のソースコードのアップグレード.

$ cd /usr/xenocara
$ cvs -q up -Pd -A

ports のアップグレード.

$ cd /usr/ports
$ cvs -q up -Pd -A

システムの最新スナップショットへのアップグレード.

# sysupgrade -s


リブート後, カーネルの再構築を行う.

# cd /sys/arch/amd64/compile/GENERIC.MP
# make obj
# make config
# make && make install

ベースシステムのコンパイルを行う.

# cd /usr/src
$ make obj && make build

これは時間がかかるので, プロセスを流したまま今日は区切りを付ける.

2023年12月05日

Emacs: Emacs HEAD のコンパイルとインストール ── 2023 年 12 月

Emacs HEAD のコンパイルとインストールを行う.

環境変数の設定.

AUTOCONF_VERSION="2.71"
AUTOMAKE_VERSION="1.16"
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/gcc/x86_64-unknown-openbsd7.4/11.2.0

コンパイル・インストール。

$ ./autogen.sh
$ ./configure \
'CFLAGS=-I/usr/include -I/usr/X11R6/include -I/usr/local/include' \
'LDFLAGS=-L/usr/lib -L/usr/X11R6/lib -L/usr/local/lib -lgccjit' \
--prefix=/usr/local \
--mandir=/usr/local/share/man \
--infodir=/usr/local/info \
--with-x-toolkit=athena \
--with-imagemagick \
--with-xaw3d \
--with-x \
--without-xim \
--with-xpm=ifavailable \
--with-native-compilation
$ git pull
$ gmake bootstrap
$ gmake check
# gmake install

時間はかかったが問題無く終わった. ほっとする.

M-x emacs-version
This is GNU Emacs 30.0.50 (build 1, x86_64-unknown-openbsd7.4,
X toolkit, cairo version 1.18.0, Xaw3d scroll bars) of 2023-12-05
タグ: emacs30 Emacs HEAD

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

/usr/src 以下のベースシステムのソースコードのコンパイルがエラー終了する問題に関して少し調べた.
今回のエラーで, そのような名前のメンバー関数が存在しないと通知されたものは以下の通りである.

emitCast, emitRem, emitDiv, emitBitOr, emitShl, emitShr, emitBitXor,
emitSubPtr, emitCall, emitIncPop, emitDecPop, emitPop.

LLVM/clang の以前のソースコードを見ると, これらのメンバー関数は実際に存在し, 定義されている.
なぜ, 今回の OpenBSD のソースコードで削除されたのか?

古いソースコードから上記のメンバー関数をコピーしてきて再コンパイルすることも考えたが, 全体の整合性がとれるか, そもそもそうしたところでコンパイルが通るかどうかはわからない. 簡単には行かないだろう.
これらのメンバー関数が削除された何らかの理由があるのかも知れないが, わからない.

現在の OpenBSD 用の LLVM/clang のソースコードは改修途上にあるのかも知れない.

どうも自分の手に負える類のものではないようである.
残念だが, ベースシステムのコンパイルは一旦諦める.

X 関連のファイルのコンパイル・インストールを行う.

# cd /usr/xenocara
# make bootstrap
# make obj
# make build

パッケージのアップデートを行う.

# pkg_add -uv

ところが, 途中で

pkg_add: Installation of llvm-13.0.0p21 failed, partial installation recorded as partial-llvm-13.0.0p21

というエラーメッセージが出て先に進めなくなってしまう.
それで, pkg_add を対話的に実行するオプション -i を付けて再度実行する.

# pkg_add -uv -i

なぜか今度は成功した. こちらの判断も求められることは無く終わった.

ひとまず, 今回のアップグレード作業はこれで区切りを付けることにする.

$ uname -a
OpenBSD mybsd.local 7.4 GENERIC.MP#24 amd64

2023年12月03日

システム管理: OpenBSD のアップグレード作業 ── 2023 年 12 月 (2)

/usr/src 以下のライブラリーのソースのコンパイルでエラーが出て止まっている.

/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:204:26:
error: no member named 'emitRem' in 'clang::interp::ByteCodeExprGen '
return Discard(this->emitRem(*T, BO));
・ ・ ・ ・
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')

調べてみると, 上記エラーメッセージにあるとおり, 確かに /usr/src のソースコード内には emitCast, emitRem などの関数が存在しない.
ただ, 自分が C++ について知らないのでそれ以上深く原因を探るのが難しい.
引き続き調べてみるが, /usr/src のソースコードがアップデートされるのを待つということも並行して進めていきたい.

2023年12月02日

ブログが見れなくなってしまう

昨日, ふと思い付いてブログ管理のためのパスワードを変えようと思った.

ところがブログの管理画面からのパスワードの変更方法がわからない.
いろいろやっているうちに, ブログのページ認証にパスワードを設定したら, ブログ管理のためのパスワードも変更できた.

昨日はそのまま寝た.

今朝になって自分のブログにアクセスしようとしたらユーザー ID とパスワードの入力を求められた.
ページ認証のためのユーザー ID とパスワードを設定したのだから当然である.

システム管理のためのノートを読み直して, 以下のことを行った.

・ ページ認証は行わない. パスワード入力など無しに記事を見ることができるように再設定する.
・ ブログ管理ページの管理を行うページがあって, そこを介してブログ管理のパスワードを変更することが正しいやり方である. そのような方法でパスワードを再設定する.

とりあえずこれで, ブログへのアクセスが以前のとおりにできるようになった.
普段やっていないことを, 思い付きでやるといろいろ問題が起こる.

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

月初めの OpenBSD のアップグレード作業を行う.

システムソース, X ライブラリー, ports のアップデート.

$ cd /usr/src
$ cvs -q up -Pd -A
$ cd /usr/xenocara
$ cvs -q up -Pd -A
$ cd /usr/ports
$ cvs -q up -Pd -A


最新のスナップショットへのアップグレード

# sysupgrade -s


アップグレード後, カーネルのコンパイルとインストールを行う.

# cd /sys/arch/amd64/compile/GENERIC.MP
# make obj
# make config
# make && make install


次いでコマンドやシステムライブラリーのコンパイルを行う.

# /usr/src
# make obj && make build


このビルド作業には明日まで時間がかかるので, ひとまずプロセスを流しっ放しにして区切りを付ける.
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: