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

2024年02月03日

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

昨日で Emacs HEAD のコンパイルが終わったので, チェックとインストールを行う.

$ gmake check
# gmake install

これで今月の Emacs の更新が行えた.

M-x emacs-vertion
GNU Emacs 30.0.50 (build 1, x86_64-unknown-openbsd7.4,
X toolkit, cairo version 1.18.0, Xaw3d scroll bars) of 2024-02-02

2024年02月02日

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

午後になって昨日から走らせているベースシステムのコンパイル状況を確認したらエラー無しでコンパイルが完了していた.
終わるまで 17 時間かかっている.

システムをマージして, デバイスフィイルを作成する.

# sysmerge
# cd /dev
# ./MAKEDEV all


次いで X 関連のファイルのコンパイルとインストールを行う.

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

これもうまく行った.

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

# pkg_add -uv

以上で, 今月分の OpenBSD のアップグレード作業が終了した.

$ uname -a
OpenBSD allegro-andante.local 7.4 GENERIC.MP#26 amd64

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

OpenBSD のアップグレード作業が終わったので, Emacs HEAD のコンパイル・インストールを行う.

いつもの通り, 環境変数を設定する.

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

それからコンパイルの準備とコンパイルの実行を行う.

$ ./autogen.sh
$ ./config.sh
$ git pull
$ gmake bootstrap

このプロセスにも時間がかかる.
結果を確認するのは明日にして区切りを付ける.

2024年02月01日

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

月が変わったので, OpenBSD のアップグレードをする. 体調が悪いため休み休み作業をする.

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

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

ところが, cvs を実行したところ,

CVS/Entries: Permission denied

というエラーが出る.
これに対して, root 権限で cvs を実行することによりエラーを回避したのだが, エラーの原因を調べればよかった.

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

次に X 関連のソースコードのアップデートを行う.

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

最期にl 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

また先々月, 先月のようなエラーが出るかも知れない.
とりあえず, 問題の gnu/llvm/ のコンパイルまで辿り着くのも時間がかかるので区切りを付ける.

2024年01月31日

システム管理: キーマップの変更 ── 続き

昨日中の記事で, キーマップの変更を /etc/kdbtype を編集することにより行うと書いたが, 調べてみたら kbd というコマンドがあった.
/etc/kbdtype の内容を

us

にするには,

# kbd us

とすれば良い.
どのようなキーボードの種類があるのかは,

# kbd -l

で確認できる.

# kbd -l
tables available for usb keyboard:
encoding

us
de
de.nodead
fr
fr.apple
fr.dvorak
dk
dk.nodead
it
uk
jp
sv
sv.nodead
no
no.nodead
us.dvorak
us.colemak
us.swapctrlcaps
us.iopener
uk.swapctrlcaps
jp.swapctrlcaps
fr.swapctrlcaps
fr.swapctrlcaps.apple
fr.swapctrlcaps.dvorak
be.swapctrlcaps
us.swapctrlcaps.dvorak
us.swapctrlcaps.colemak
us.swapctrlcaps.iopener
es
be
ru
ua
sg
sg.nodead
sf
sf.nodead
pt
pt.apple
lt
la
br
tr
tr.nodead
pl
hu
si
cf
cf.nodead
lv
nl
nl.nodead
is
is.nodead
ee
ee.nodead

勉強になった.

2024年01月30日

システム管理: キーマップの変更

Happy Hacking Keyboard が届いた.

このキーボード自体の設定は必要無いが, OS 側でキーマップを変更する必要がある.

現在使っている Mac Pro に付属していたキーボードでは, 'A' の左隣に Caps lock キーが置かれていた.
この Caps lock キーと Control キーを入れ換えるために /etc/kbdtype ファイル内で

us.swapctrlcaps

のような設定をしていた.

Happy Hacking Keyboard では, 'A' の左隣は Control キーなので, このような設定を行わなくていい.
/etc/kbdtype ファイルの記述を

us

に変更する.

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

問題無く終わった.

システム管理: 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年04月 >>
  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        
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(40)
コンピューター(197)
(1342)
借金(8)
勉強(7)
(12)
数学(97)
運動(8)
日常生活(1316)
(198)
健康(33)
読書(19)
プロフィール

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