ASDF ищет библиотеку в слишком многих каталогах - PullRequest
0 голосов
/ 22 ноября 2018

Когда мое приложение пытается подключиться к sqlite DB с mito:connect-toplevel, это занимает много времени, и действительно, ASDF рекурсивно сканирует каталоги и сканирует несколько node_modules!

Но это происходит только сисполняемый файл, а не в Slime .

Возможно, это ошибка моей среды, но у меня нет ничего более фантастического в моем .sbclrc (больше).

И дело в том,Я уже наблюдал такое поведение с asdf:system-relative-pathname, которого я избегал в другом приложении, но теперь это происходит со сторонней библиотекой.

Мои модели.connect:

(defun connect ()
  (format t "connecting to ~a...~&" *db-name*)
  (force-output)
  (setf *db* (connect-toplevel :sqlite3 :database-name *db-name*))
  (format t "...done~&")
  (force-output))

Затем я собираюисполняемый файл, я запускаю его из командной строки в каталоге ~/projects/bookshops (не ~/bacasable, который мы видим ниже) и убиваю его, когда он занят:

connecting to db.db...
^CUnhandled SB-SYS:INTERACTIVE-INTERRUPT in thread #<SB-THREAD:THREAD
                                                "main thread" RUNNING
                                                    {1008E269A3}>:
Interactive interrupt at #x10002A6808.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1008E269A3}>
0: (SB-KERNEL:HAIRY-DATA-VECTOR-SET #<unavailable argument> #<unavailable argument> #<unavailable argument>) [tl,external]
1: (CONCATENATE SIMPLE-STRING "/" "home" "/" "vince" "/" "bacasable" "/" "testabelujo" "/" "abelujo" "/" "node_modules" "/" "testcafe-browser-tools" "/" "bin" "/" "linux" "/")
2: (SB-IMPL::UNPARSE-UNIX-NAMESTRING #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/testcafe-browser-tools/bin/linux/")
3: (NAMESTRING #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/testcafe-browser-tools/bin/linux/")
4: ((FLET ASDF/SOURCE-REGISTRY::PATHNAME-KEY :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/testcafe-browser-tools/bin/linux/")
5: ((FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/testcafe-browser-tools/bin/linux/")
6: (UIOP/FILESYSTEM:COLLECT-SUB*DIRECTORIES #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/testcafe-browser-tools/bin/" #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::COLLECTP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1CB}> #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1FB}> #<CLOSURE (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) {100923C21B}>)
7: (UIOP/FILESYSTEM:COLLECT-SUB*DIRECTORIES #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/testcafe-browser-tools/" #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::COLLECTP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1CB}> #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1FB}> #<CLOSURE (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) {100923C21B}>)
8: (UIOP/FILESYSTEM:COLLECT-SUB*DIRECTORIES #P"/home/vince/bacasable/testabelujo/abelujo/node_modules/" #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::COLLECTP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1CB}> #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1FB}> #<CLOSURE (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) {100923C21B}>)
9: (UIOP/FILESYSTEM:COLLECT-SUB*DIRECTORIES #P"/home/vince/bacasable/testabelujo/abelujo/" #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::COLLECTP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1CB}> #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1FB}> #<CLOSURE (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) {100923C21B}>)
10: (UIOP/FILESYSTEM:COLLECT-SUB*DIRECTORIES #P"/home/vince/bacasable/testabelujo/" #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::COLLECTP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1CB}> #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1FB}> #<CLOSURE (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) {100923C21B}>)
11: (UIOP/FILESYSTEM:COLLECT-SUB*DIRECTORIES #P"/home/vince/bacasable/" #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::COLLECTP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1CB}> #<CLOSURE (FLET ASDF/SOURCE-REGISTRY::RECURSEP :IN ASDF/SOURCE-REGISTRY:COLLECT-SUB*DIRECTORIES-ASD-FILES) {100923C1FB}> #<CLOSURE (LAMBDA (&REST SB-IMPL::ARGUMENTS) :IN CONSTANTLY) {100923C21B}>)
12: (ASDF/SOURCE-REGISTRY:COMPUTE-SOURCE-REGISTRY NIL #<HASH-TABLE :TEST EQUAL :COUNT 17 {10091B5463}>)
13: (ASDF/SOURCE-REGISTRY:ENSURE-SOURCE-REGISTRY NIL)
14: (ASDF/SYSTEM-REGISTRY:SYSDEF-SOURCE-REGISTRY-SEARCH "dbd-sqlite3")
15: ((FLET ASDF/SYSTEM-REGISTRY::TRY :IN ASDF/SYSTEM-REGISTRY:SEARCH-FOR-SYSTEM-DEFINITION) ASDF/SYSTEM-REGISTRY:SYSDEF-SOURCE-REGISTRY-SEARCH)
16: ((FLET ASDF/SYSTEM-REGISTRY::TRY :IN ASDF/SYSTEM-REGISTRY:SEARCH-FOR-SYSTEM-DEFINITION) ASDF/SYSTEM-REGISTRY:SYSDEF-SOURCE-REGISTRY-SEARCH) [external]
17: (SB-KERNEL:%MAP-FOR-EFFECT-ARITY-1 #<CLOSURE (FLET ASDF/SYSTEM-REGISTRY::TRY :IN ASDF/SYSTEM-REGISTRY:SEARCH-FOR-SYSTEM-DEFINITION) {10091B480B}> (ASDF/PACKAGE-INFERRED-SYSTEM:SYSDEF-PACKAGE-INFERRED-SYSTEM-SEARCH ASDF/SYSTEM-REGISTRY:SYSDEF-CENTRAL-REGISTRY-SEARCH ASDF/SYSTEM-REGISTRY:SYSDEF-SOURCE-REGISTRY-SEARCH QUICKLISP-CLIENT:LOCAL-PROJECTS-SEARCHER QL-DIST:SYSTEM-DEFINITION-SEARCHER))
18: (ASDF/SYSTEM-REGISTRY:SEARCH-FOR-SYSTEM-DEFINITION "dbd-sqlite3")
19: ((LAMBDA NIL :IN ASDF/FIND-SYSTEM:LOCATE-SYSTEM))
20: ((LAMBDA NIL :IN ASDF/SYSTEM:FIND-SYSTEM))
21: (ASDF/SESSION:CONSULT-ASDF-CACHE (ASDF/SYSTEM:FIND-SYSTEM "dbd-sqlite3") #<CLOSURE (LAMBDA NIL :IN ASDF/SYSTEM:FIND-SYSTEM) {10091B387B}>)
22: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/SYSTEM:FIND-SYSTEM) {10091B387B}> :OVERRIDE NIL :KEY (ASDF/SYSTEM:FIND-SYSTEM "dbd-sqlite3") :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
23: ((LABELS QUICKLISP-CLIENT::RECURSE :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) "dbd-sqlite3")
24: ((LAMBDA NIL :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY)) [external]
25: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<CLOSURE (LAMBDA NIL :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) {10091B37DB}>)
26: (QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY #<unavailable argument>)
27: (QUICKLISP-CLIENT::AUTOLOAD-SYSTEM-AND-DEPENDENCIES "dbd-sqlite3" :PROMPT NIL)
28: ((:METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION (T T)) #<unavailable argument> #<CLOSURE (FLET QUICKLISP-CLIENT::QL :IN QUICKLISP-CLIENT:QUICKLOAD) {10091B301B}>) [fast-method]
29: ((:METHOD QL-IMPL-UTIL::%CALL-WITH-QUIET-COMPILATION :AROUND (QL-IMPL:SBCL T)) #<QL-IMPL:SBCL {10011057E3}> #<CLOSURE (FLET QUICKLISP-CLIENT::QL :IN QUICKLISP-CLIENT:QUICKLOAD) {10091B301B}>) [fast-method]
30: ((:METHOD QUICKLISP-CLIENT:QUICKLOAD (T)) #<unavailable argument> :PROMPT NIL :SILENT T :VERBOSE NIL) [fast-method]
31: (QL-DIST::CALL-WITH-CONSISTENT-DISTS #<CLOSURE (LAMBDA NIL :IN QUICKLISP-CLIENT:QUICKLOAD) {100919ECDB}>)
32: (DBI::LOAD-DRIVER :SQLITE3)
33: (DBI:CONNECT :SQLITE3 :DATABASE-NAME "db.db")
34: (MITO.CONNECTION:CONNECT-TOPLEVEL :SQLITE3 :DATABASE-NAME "db.db")
35: (BOOKSHOPS.MODELS:CONNECT)
36: (BOOKSHOPS::INIT)
37: (BOOKSHOPS:MAIN)
38: ((LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE))
39: (UIOP/IMAGE:CALL-WITH-FATAL-CONDITION-HANDLER #<CLOSURE (LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE) {1008E3CD2B}>)
40: ((FLET #:WITHOUT-INTERRUPTS-BODY-89 :IN SAVE-LISP-AND-DIE))
41: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

Что может вызвать это в моей среде?

Это нормально, ASDF делает это, почему только с исполняемым файлом?

ASDF "3.3.1.2"

1 Ответ

0 голосов
/ 22 ноября 2018

ASDF создает свой исходный реестр из нескольких возможных мест в файловой системе:

  • ~/common-lisp/
  • ~/.local/share/common-lisp/source/
  • определения в ~/.config/common-lisp/source-registry.confи ~/.config/common-lisp/source-registry.conf.d/
  • и более…

См .:

Quicklisp добавляет свою директорию local-projects, я думаю.

Вам нужно было бы просмотреть эти списки, чтобы выяснить, что происходит.Я предполагаю, что вы где-то поместили символическую ссылку на этот каталог ~/bacasable/ в каталог, который ищется ASDF.

Кстати, я нахожу программную загрузку необходимого драйвера библиотекой во время выполнения немногосомнительный.Должен быть какой-то обходной путь.

Возможно, вы могли бы попытаться принудительно загрузить драйвер перед сохранением вашего исполняемого файла.

...