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

2023年11月03日

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

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

コンパイルは問題無く終了したが, インストール後に実行してみると起動時に,

Error in post-command-hook (ccc-update-buffer-local-frame-params): (void-function facemenu-color-equal)

というエラーが出る.
少し調べると, SKK の Emacs Lisp ソース 'ccc.el' 内で使用されている facemenu-color-equal という関数が定義されていない.

幸いなことに, このエラーについては,
(void-function facemenu-color-equal) in Emacs-28 #188
Facemenu require error in Emacs-28 #189
Use faces instead of facemenu for Emacs 28 #1948
に経緯が記載されている.

・ facemenu-color-equal という関数は Emacs ソースに含まれる facemenu.el 内で定義されている.
・ Emacs ソース内の NEWS.28 ファイルに, Emacs28 から facemenu.el はプリロードされなくなったという記述がある.

** facemenu.el is no longer preloaded.

・ したがって SKK が init.el から読み込まれる時には facemenu-color-equal という関数が未定義状態であるため, 上記のエラーが出る.
・ 暫定的な対処としては, init.el 内に

(require 'facemenu)

という記述を追加すればよい.
・ このエラーへの恒久的な対処として, すでに開発版の SKK 自体が facemenu.el に依存しないように変更されている.

以上のことから, このエラーを回避するためには, 上記の暫定的な措置を行うか, 最新版の SKK をインストールすればいいことになる.

今回は, 最新版の SKK をインストールすることにより対応した.


これで最初のエラーは出力されなくなったが, 今度は起動時に

Wrong number of arguments: sit-for, 3

というエラーが出力されてしまう.
sit-for 関数の引数が間違って 3 個使用されているという内容である. この関数は Emacs が再描画するまでの時間を指定する.

調べてみると init.el 内で読み込んでいる key-chord.el というパッケージに

(sit-for delay 0 'no-redisplay)

というコードが含まれている. 引数が 3 個である (なお, 自分の環境では読み込まれているこれ以外の sit-for 関数には全て 1 個または 2 個の引数が指定されている).

さらに Emacs Lisp Manual を見ると,

For instance, in old versions of Emacs the sit-for function accepted three arguments, like this

(sit-for seconds milliseconds nodisp)

However, calling sit-for this way is considered obsolete.

Function: sit-for seconds &optional nodisp

とある.
つまり, 古いバージョンの Emacs では sit-for 関数は seconds, milliseconds, およびオプションの nodisp という 3 個の引数を指定する定義になっていたものが, 新しいバージョンの Emacs では

(sit-for seconds &optional nodisp)

という 1 個あるいは 2 個の引数を指定する定義に変更されている.

実際に Emacs30 に含まれる NEWS ファイルの中には,

** The obsolete calling convention of 'sit-for' has been removed.
That convention was: '(sit-for SECONDS MILLISEC &optional NODISP)'.

という記述があり, 2 個または 3 個の引数をとる sit-for 関数は削除されて, 1 個あるいは 2 個の引数を指定するようになっていることがわかる.

そこで key-chord.el 内の 3 変数の sit-for 関数の呼び出し部分を

(sit-for delay 0 'no-redisplay)

から

(sit-for (+ delay 0) 'no-redisplay)

に変更した.

これで Emacs が問題無く起動するようになる.

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-11-03
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/12288552

この記事へのトラックバック
ファン
検索
<< 2024年11月 >>
          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)
(44)
コンピューター(211)
(1448)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1404)
(204)
健康(38)
読書(21)
プロフィール

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