LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Мой вариант работает всегда, а твой только в том случае, если asdf не загружен ранее (например, в образ лиспа)

Нет, твой тоже работает не всегда - я приводил пример, когда не сработает.

Но в целом спасибо за замечания! Теперь этот кусок кода выглядит так:

(assert (null (find-package :uiop)))
(require :uiop)
(defconstant *clcon-uiop-user-cache-override* #P"c:/clcon/fasl-cache/asdf/")
(setf uiop:*user-cache* *clcon-uiop-user-cache-override*)
(require 'asdf)
(defun check-output-translations-ok ()
  "Call it now and once again at the end of loading to ensure that fasls are placed to a right place"
  (assert (equalp (asdf:apply-output-translations "c:/aaa.bbb")
    (merge-pathnames "c/aaa.bbb" *clcon-uiop-user-cache-override*))))
(check-output-translations-ok)
....
;и в конце ещё раз
(check-output-translations-ok)

Исходная версия den73, :

Мой вариант работает всегда, а твой только в том случае, если asdf не загружен ранее (например, в образ лиспа)

Нет, твой тоже работает не всегда - я приводил пример, когда не сработает.

Но в целом спасибо за замечания! Теперь этот кусок кода выглядит так:

(assert (null (find-package :uiop)))
(require :uiop)
(defvar *clcon-uiop-user-cache-override* #P"c:/clcon/fasl-cache/asdf/")
(setf uiop:*user-cache* *clcon-uiop-user-cache-override*)
(require 'asdf)
(defun check-output-translations-ok ()
  "Call it now and once again at the end of loading to ensure that fasls are placed to a right place"
  (assert (equalp (asdf:apply-output-translations "c:/aaa.bbb")
    (merge-pathnames "c/aaa.bbb" *clcon-uiop-user-cache-override*))))
(check-output-translations-ok)
....
;и в конце ещё раз
(check-output-translations-ok)