0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ECL Readlineを有効化した状態でのCFFI-LIBFFIのコンパイルエラーについて

Posted at

ECL Readlineを有効化した状態でのCFFI-LIBFFIのコンパイルエラーについて

はじめに

インストールしているパッケージのコンパイルキャッシュを全て削除してプログラムをビルドしようとしたところ、GROVEL-ERRORというものが発生して途中で止まってしまいました。
根本的な原因はわかっていませんが、ECL Readlineを使用している環境だとこの問題が発生する感じです(途中でECL Readline環境にしたため、気付かなかった)

環境

cffi-libffiのエラー

CFFIパッケージに含まれるcffi-libffiのコンパイルで次のようなエラーが出ます。

CL-USER[1]> (asdf:load-system :cffi-libffi)
; pkg-config libffi --cflags

; gcc -o /home/hiro/.cache/common-lisp/ecl-16.1.3-unknown-linux-x64/home/hiro/deepspace/share/deepspace/quicklisp/dists/quicklisp/software/cffi_0.20.1/libffi/libffi-types__grovel-tmpUWNGR0DC.o -c -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fdebug-prefix-map=/build/ecl-IeawtT/ecl-16.1.3+ds=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -D_THREAD_SAFE -Dlinux -fPIC -I/home/hiro/deepspace/share/deepspace/quicklisp/dists/quicklisp/software/cffi_0.20.1/ /home/hiro/.cache/common-lisp/ecl-16.1.3-unknown-linux-x64/home/hiro/deepspace/share/deepspace/quicklisp/dists/quicklisp/software/cffi_0.20.1/libffi/libffi-types__grovel.c

Condition of type: GROVEL-ERROR
:INPUT argument to RUN-PROGRAM does not have a file handle:
#<two-way stream 000055be22c0e5a0>

INPUT argument to RUN-PROGRAM does not have a file handle〜と出るんですが、何か悪いのかわからない状態で、ひとまず--norcオプションで何も設定ファイルを読み込まないECLだと問題なくcffi-liffiをコンパイルできることがわかりました。

使用しているeclrcを確認して色々試していると、ECL Readlineの有効化によってこの問題が発生していることがわかりました。

使用しているeclrc

(defparameter *deepspace-home* (si:getenv "DEEPSPACE_HOME"))
(load (concatenate 'string *deepspace-home* "/lib/asdf.lisp"))
(require 'asdf)
(setf asdf:*asdf-verbose* nil)
(setf *load-verbose* nil)
(asdf:initialize-source-registry
`(:source-registry
   (:tree ,(concatenate 'string *deepspace-home* "/share/deepspace/quicklisp/dists/quicklisp/software"))
   (:tree ,(concatenate 'string *deepspace-home* "/lib/"))
   (:tree ,(namestring *default-pathname-defaults*))
   (:tree ,(concatenate 'string (namestring *default-pathname-defaults*) "lib"))
   :inherit-configuration))
(asdf:initialize-output-translations
 '(:output-translations
   :enable-user-cache
   :ignore-inherited-configuration))
(asdf:load-system :ecl-readline)
(ecl-readline::enable)

この中で、ECL Readlineを有効化している(ecl-readline::enable)を一時的にコメントアウトしREPLを起動し、その上でcffi-libffiをロードすると、問題なくコンパイルされることを確認済です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?