SBCL ASDF проблема против CCL Re: Циркуляр Ref? - PullRequest
0 голосов
/ 08 апреля 2019

Это прекрасно компилируется на ccl, но завершается неудачно с циклической ссылкой. ошибка на SBCL:

kp.asd:

(in-package :asdf)
(defsystem kp
  :components
  ((:module "utils"
            :components
            ((:file "utils")
             ))
   ))
(load-system :kp)

------------------------
utils.lisp:

(defpackage :utils)
(in-package :utils)

(defvar *kp-version-utime* (get-universal-time))

------------------------
Error reported by SBCL:

debugger invoked on a LOAD-SYSTEM-DEFINITION-ERROR in thread #<THREAD "main thread" RUNNING {10005E85B3}>: Error while trying to load definition for \
system kp from pathname /var/www/ai/insights/kp.asd: Circular dependency: ((#<DEFINE-OP > . #<SYSTEM "kp">) (#<LOAD-OP > . #<SYSTEM "kp">) (#<LOAD-OP\
 > . #<MODULE "kp" "utils">) (#<LOAD-OP > . #<CL-SOURCE-FILE "kp" "utils" "utils">) (#<PREPARE-OP > . #<CL-SOURCE-FILE "kp" "utils" "utils">) (#<PREP\
ARE-OP > . #<MODULE "kp" "utils">) (#<PREPARE-OP > . #<SYSTEM "kp">))

(Похоже, ваше сообщение в основном содержит код; пожалуйста, добавьте еще несколько деталей.)

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019
(load-system :kp)

Вы не должны иметь это в декларации ASDF.Лучше не рассматривать системное определение как программу на Лиспе, а только как декларативный способ определения ваших зависимостей.

Если при объявлении системы вам также необходимо загрузить другую систему, эта система становится зависимой.Скорее всего, при оценке SBCL файл рассматривается как единое целое, и при загрузке kp вы просите его загрузить kp, что действительно является циклической зависимостью.Может быть, CCL молча считает файл уже загруженным, я не знаю.

Если вы удалите его, ввод (ql:quickload :kp) в REPL работает отлично.Кроме того, (in-package :asdf) бесполезен (и если он указан, то должен быть asdf-user)

0 голосов
/ 24 апреля 2019

Ваш .asd недействителен и заслуживает потери.

У вас есть старый CCL с ASDF 3.2 или более ранней версией? Тогда он не может обнаружить ошибку в вашем .asd. ASDF 3.3 правильно определяет циклические зависимости при загрузке файлов .asd.

...