Изменить путь скомпилированных файлов в формате asdf? - PullRequest
0 голосов
/ 11 января 2020

Как изменить путь, в котором находятся файлы .fas? По коду lisp, а не по файлу конфигурации.

Я делаю так:

(asdf:disable-output-translations)
(push *default-pathname-defaults* asdf:*central-registry*)
(setq asdf:*central-registry*
      (append asdf:*central-registry*
             (directory (merge-pathnames
                         (make-pathname :directory '(:relative :wild))
                         *default-pathname-defaults*))))

С ECL он генерирует файлы .fas и .o в каталоге скомпилированного исходного кода, но Я не хочу, чтобы он находился в каталоге проекта, который находится по пути, через который я go, чтобы лучше организовать себя здесь.

Что-то вроде:

(asdf:set-path-compiled-files "/home/noloop/lisp-armv7a-libs/builds")

1 Ответ

0 голосов
/ 12 января 2020

asdf:*central-registry* для местоположения SOURCE, нет единого местоположения для скомпилированных результатов, потому что asdf2 явно обрабатывает вас, используя несколько реализаций, которые имеют несовместимые форматы fasl (это точка улучшения в asdf2 по сравнению с предыдущим состоянием дел).

В соответствии с [1] (asdf:initialize-output-translations list) может использоваться для установки перевода программно, а (asdf:ensure-output-translations) может использоваться для просмотра текущего значения

Как упомянуто в DSL , вы должны включать один и только один из :inherit-configuration или :ignore-inherited-configuration.

Не ясно, нужно ли вам также установить один из :enable-user-cache или :disable-cache, но выбор одного кажется разумным.

Как указано в [2], порядок имеет значение.

На моей машине с sbcl:

cl-user> (asdf::initialize-output-translations '(:output-translations (t #p"/tmp/asdf/") :disable-cache :ignore-inherited-configuration))

Дает:

((#P"/home/peter/Programming/unix-built/sbcl/lib/sbcl/**/*.*" T)
 (#P"/tmp/asdf/" T) (T #P"/tmp/asdf/") (T T)
 (#P"/home/peter/.cache/common-lisp/sbcl-2.0.0.104-b5a4454ca-linux-x64/**/*.*"
  T)
 (T
  #P"/home/peter/.cache/common-lisp/sbcl-2.0.0.104-b5a4454ca-linux-x64/**/*.*"))

И после этого я вижу FASL в / tmp / asdf при попытке загрузить систему.

1: http://soc.if.usp.br/manual/cl-asdf/asdf/Controlling-where-ASDF-saves-compiled-files.html#Controlling -where- ASDF-сохраняет-скомпилированные файлы

2: https://gitlab.common-lisp.net/asdf/asdf/issues/22

...