LINUX.ORG.RU

CL, пакеты


0

1

Объясните, как ставить. Имеется SBCL, стал ставить по инструкции: http://common-lisp.net/project/cl-gtk2/tutorial.html cl-gtk2, чтобы поставить все зависимости использовал clbuild форкнутый Архимагом, всё поставилось. После зависимостей поставил из гита cl-gtk2, сделал в ~/.sbcl/systems/ симлинки по инструкции.

CL-USER> (asdf:operate 'asdf:load-op :cl-gtk2-gtk)

component :ITERATE not found, required by
#<SYSTEM "cl-gtk2-pango" {AA8F241}>
   [Condition of type ASDF:MISSING-DEPENDENCY]

Iterate устаовлен, наверно, надо как-то загружать его, как?

я вот руками все ставлю, потому как на винде

распаковываю каждую библиотеку куда-нибудь и делаю симлинк(в висте тоже есть такие) на нее в отдельную директорию
а в sbclrc - функция, которая эту директорию отображает в asdf:*central-registry*

Love5an
()

У тебя часть симлинков в одном месте, а другая в другом. Надо asdf настроить так, что бы в обоих каталогах искала. Мне сейчас надо ребёнка класть, если через часик будет ещё актуально, то напишу.

archimag ★★★
()
Ответ на: комментарий от korvin_

CL-USER> (asdf-install:install 'cl-gtk2-gtk)

SB-INT:SIMPLE-READER-PACKAGE-ERROR at 21 (line 1, column 21) on #<SB-IMPL::STRING-INPUT-STREAM {AE92981}>:
package «ASDF-INSTALL» not found
[Condition of type SB-INT:SIMPLE-READER-PACKAGE-ERROR]


2Love5an:

Ну, я когда спросил, как ставить пакеты, Архимаг сказал, используй clbuild.

TirNaNOg
() автор топика
Ответ на: комментарий от korvin_

С помощью (asdf-install:install 'xxxx) не ставится ничего, ругается на отсутствующий gpg ключ.

No key found for key id 0x#1=FC001F4F13126769. Try some command like gpg --recv-keys 0x#1# [Condition of type ASDF-INSTALL::KEY-NOT-FOUND]

Сижу, читаю руководство по asdf, где этот ключ брать.

2Archimag: в догонку, вопрос возник, зачем появился внешний clbuild, если есть asdf, который тоже тянет из интернета пакеты?

TirNaNOg
() автор топика

Значит смотри, у тебя есть ~/.sbcl/systems/, где я понял у тебя лежит часть симлинков. Потом у тебя есть каталог clbuild, в котором есть каталог systems - там симлинки на пакеты, установленные с помощью clbuild.

Твоя задача - правильно настроить ASDF. Лучше всего это видимо сделать в ~/.sbclrc например так:

(require :asdf)

(push #p"/path/to/clbuild/systems/" asdf:*central-registry*)
(push #p"/path/to/home/.sbcl/systems/" asdf:*central-registry*)

(let ((*compile-print* nil)
      (*compile-verbose* nil)
  (handler-bind ((warning #'muffle-warning))
    (asdf:oos 'asdf:load-op :asdf-binary-locations)))
(setf asdf:*centralize-lisp-binaries* t)

В данном коде используется так же пакет asdf-binary-locations, который можно поставить через clbuild.

Всё, пробуй и сообщай о результатах ;)

archimag ★★★
()
Ответ на: комментарий от TirNaNOg

asdf-install не является частью asdf, это отдельный пакет. И работает он не нормально.

archimag ★★★
()
Ответ на: комментарий от TirNaNOg

эээ... я просто выбирал «Пропустить проверку ключа» и все ставилось норм =)

korvin_ ★★★★★
()
Ответ на: комментарий от archimag
CL-USER> (print asdf:*central-registry*)

((MERGE-PATHNAMES ".clc/systems/" (USER-HOMEDIR-PATHNAME))
 (MERGE-PATHNAMES ".sbcl/systems/" (USER-HOMEDIR-PATHNAME))
 (LET ((ASDF::HOME (POSIX-GETENV "SBCL_HOME")))
   (WHEN (AND ASDF::HOME (NOT (STRING= ASDF::HOME "")))
     (MERGE-PATHNAMES "site-systems/" (TRUENAME ASDF::HOME))))
 *DEFAULT-PATHNAME-DEFAULTS* #P"/usr/share/common-lisp/systems/") 

всё равно надо:

(push #p"/path/to/home/.sbcl/systems/" asdf:*central-registry*) 

? (он уже есть)

после:

CL-USER> (push #p"bin/systems/" asdf:*central-registry*)

CL-USER> (print asdf:*central-registry*)

(#P"bin/systems/"
 (MERGE-PATHNAMES ".clc/systems/" (USER-HOMEDIR-PATHNAME))
 (MERGE-PATHNAMES ".sbcl/systems/" (USER-HOMEDIR-PATHNAME))
 (LET ((ASDF::HOME (POSIX-GETENV "SBCL_HOME")))
   (WHEN (AND ASDF::HOME (NOT (STRING= ASDF::HOME "")))
     (MERGE-PATHNAMES "site-systems/" (TRUENAME ASDF::HOME))))
 *DEFAULT-PATHNAME-DEFAULTS* #P"/usr/share/common-lisp/systems/") 

потом поставил используя clbuild asdf-binary-locations.

Следующий код:

(let ((*compile-print* nil) 
      (*compile-verbose* nil) 
  (handler-bind ((warning #'muffle-warning)) 
    (asdf:oos 'asdf:load-op :asdf-binary-locations)))
 (setf asdf:*centralize-lisp-binaries* t))

на попытку компиляции выдаёт:

;   READ failure in COMPILE-FILE:
;     SB-INT:SIMPLE-READER-PACKAGE-ERROR at 198 (line 5, column 38) on #<SB-SYS:FD-STREAM for "file /tmp/fileoVzzdg" {BA44F31}>:
;       Symbol "*CENTRALIZE-LISP-BINARIES*" not found in the ASDF package.;
TirNaNOg
() автор топика
Ответ на: комментарий от TirNaNOg

Используй полные пути, как там относительные рулятся от других настроек зависит. Просто поставь везде полные, когда заработает сможешь с относительными поиграть. И да, повторый push ничего страшного не сделает, не бойся, просто сделай с полным путем.

archimag ★★★
()
Ответ на: комментарий от archimag

В общем, полный путь не помог, та же ошибка - не найден символ asdf:*centralize-lisp-binaries*. Додумался сделать:

(require :asdf-binary-locations)

запустил компиляцию, получил:

Execution of a form compiled with errors.
Form:
  (LET ((*COMPILE-PRINT* NIL)
      (*COMPILE-VERBOSE* NIL)
      (HANDLER-BIND
       ((WARNING #'MUFFLE-WARNING))
       (OOS 'LOAD-OP ASDF-BINARY-LOCATIONS)))
  (SETF *CENTRALIZE-LISP-BINARIES* T))
Compile-time error:
  The LET binding spec (HANDLER-BIND ((WARNING #'MUFFLE-WARNING))
                                   (ASDF:OOS 'ASDF:LOAD-OP
                                             :ASDF-BINARY-LOCATIONS)) is malformed.
   [Condition of type SB-INT:COMPILED-PROGRAM-ERROR]
TirNaNOg
() автор топика
Ответ на: комментарий от archimag

Поставил через

(asdf-install:install 'cl-gtk2-gtk)

игнорируя отсутствие gpg. Но если есть ещё рецепты по скрещиванию с clbuild, то всё равно интересно.

TirNaNOg
() автор топика
Ответ на: комментарий от archimag

Вот теперь скомпилировалось. Только непонятно, на чём я остановился в итоге. clbuild-ом поставил зависимости, cl-gtk2 asdf-ом. :)

Снёс всё, переименовал clbuild директорию, чтобы исключить её systems. Начинаю заново.

(require 'asdf-install) 
(asdf-install:install 'cl-gtk2-gtk)

игнорю gpg-key. Поставилось всё само, работает, инструкция по установке cl-gtk2, что на сайте смотрел, оказалась совсем ненужна.

Чёт я даже не знаю... clbuild - надо и пути править и бинари-локейшн ставить, и чё-то там править опять, и симлинки прокидывать вручную... У тебя не устарели знания насчёт asdf-install, может лишние телодвижения с clbuild-ом и самим clbuild-oм не нужны больше?

TirNaNOg
() автор топика
Ответ на: комментарий от TirNaNOg

> У тебя не устарели знания насчёт asdf-install, может лишние

телодвижения с clbuild-ом и самим clbuild-oм не нужны больше?


Нет, dmitry_vk совсем недавно сделал возможной уставноку cl-gtk2 через asdf-install, но так делают далеко не все авторы пакетов. В общем случае - clbuild более надёжный инструмент, хотя тоже не ахти. Ставь Gentoo ;) и сможешь пользоваться gentoo-lisp-overlay - аналогов ему сейчас нет.

archimag ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.