Регистрация | Войти
Lisp — программируемый язык программирования
RSS
проблемы с установкой iterate
anaumov - 15.09.2017 14:25, Сообщений - 16
Всем привет!

Очень расчитываю на вашу, ребята, помощь. Не могу поставить iterate. Он мне понадобился только из-за cl-tetris3d.
Ставлю вот так:
> (ql:system-apropos "iterate")
#<SYSTEM com.clearly-useful.iterate+ / com.clearly-useful.iterate-plus-20121013-git / quicklisp 2014-02-11>
#<SYSTEM generic-sequences-iterate / generic-sequences-20130128-git / quicklisp 2014-02-11>
#<SYSTEM hu.dwim.reiterate / hu.dwim.reiterate-20130312-darcs / quicklisp 2014-02-11>
#<SYSTEM hu.dwim.reiterate.test / hu.dwim.reiterate-20130312-darcs / quicklisp 2014-02-11>
#<SYSTEM iterate / iterate-20140211-darcs / quicklisp 2014-02-11>
#<SYSTEM iterate-clsql / iterate-clsql-20130312-http / quicklisp 2014-02-11>
#<SYSTEM iterate-pg / iterate-20140211-darcs / quicklisp 2014-02-11>
#<SYSTEM iterate-tests / iterate-20140211-darcs / quicklisp 2014-02-11>
#<SYSTEM x.fdatatypes-iterate / x.fdatatypes-20120703-git / quicklisp 2014-02-11>


> (ql:quickload "iterate")
To load "iterate":
  Load 1 ASDF system:
    iterate
; Loading "iterate"
......
........................; in: DEFUN RETURN-COLLECTION-CODE
;     (ITERATE::WITH-TEMPORARY ITERATE::TEMP-VAR
;       (LET* ((ITERATE::UPDATE-CODE
;               `(IF ,ITERATE::COLLECT-VAR
;                    #
;                    #))
;              (ITERATE::MAIN-CODE (COND # # #)))
;         (ITERATE::RETURN-CODE :BODY
;          `((PROGN ,.ITERATE::MAIN-CODE ,ITERATE::COLLECT-VAR)) :FINAL
;          (IF (EQ ITERATE::RESULT-TYPE 'LIST)
;              NIL
;              `(#)))))
;
; caught ERROR:
;   during macroexpansion of
;   (WITH-TEMPORARY TEMP-VAR
;     (LET* #
;       #)).
;   Use *BREAK-ON-SIGNALS* to intercept.
;  
;    invalid number of arguments: 1

; file: /home/alex/quicklisp/dists/quicklisp/software/iterate-20140211-darcs/iterate.lisp
; in:
;      DEFCLAUSE (ADJOINING EXPR &OPTIONAL INTO VAR AT (PLACE 'END) TEST
;             (TEST '#'EQL) RESULT-TYPE (TYPE 'LIST))
;     (ITERATE::WITH-TEMPORARY ITERATE::TEMP
;       (ITERATE::RETURN-COLLECTION-CODE :VARIABLE ITERATE::VAR :EXPRESSION
;        ITERATE::EXPR :START-OPERATION
;        `(SUBST (ITERATE::EXPR ITERATE::VAR)
;                (PROGN
;                 ,ITERATE::TEMP
;                 (ADJOIN ITERATE::EXPR ITERATE::VAR :TEST ,ITERATE::TEST)))
;        :TEST `(SUBST (ITERATE::VAR ITERATE::EXPR) (PROGN (SETQ #) (NOT #)))
;        :END-OPERATION `(SUBST (ITERATE::VAR ITERATE::EXPR) (LIST ,ITERATE::TEMP))
;        :ONE-ELEMENT ...))
;
; caught ERROR:
;   during macroexpansion of
;   (WITH-TEMPORARY TEMP
;     (RETURN-COLLECTION-CODE :VARIABLE VAR ...)).
;   Use *BREAK-ON-SIGNALS* to intercept.
;  
;    invalid number of arguments: 1
.
; in:
;      DEFCLAUSE (ADJOINING EXPR &OPTIONAL INTO VAR AT (PLACE 'END) TEST
;             (TEST '#'EQL) RESULT-TYPE (TYPE 'LIST))
;     (ITERATE::WITH-TEMPORARY ITERATE::TEMP
;       (ITERATE::RETURN-COLLECTION-CODE :VARIABLE ITERATE::VAR :EXPRESSION
;        ITERATE::EXPR :START-OPERATION
;        `(SUBST (ITERATE::EXPR ITERATE::VAR)
;                (PROGN
;                 ,ITERATE::TEMP
;                 (ADJOIN ITERATE::EXPR ITERATE::VAR :TEST ,ITERATE::TEST)))
;        :TEST `(SUBST (ITERATE::VAR ITERATE::EXPR) (PROGN (SETQ #) (NOT #)))
;        :END-OPERATION `(SUBST (ITERATE::VAR ITERATE::EXPR) (LIST ,ITERATE::TEMP))
;        :ONE-ELEMENT ...))
;
; caught ERROR:
;   during macroexpansion of
;   (WITH-TEMPORARY TEMP
;     (RETURN-COLLECTION-CODE :VARIABLE VAR ...)).
;   Use *BREAK-ON-SIGNALS* to intercept.
;  
;    invalid number of arguments: 1
...
debugger invoked on a UIOP/LISP-BUILD:COMPILE-FILE-ERROR in thread
#<THREAD "main thread" RUNNING {1002A465C3}>:
  COMPILE-FILE-ERROR while compiling #<CL-SOURCE-FILE "iterate" "iterate">

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [RETRY                        ] Retry
                                     compiling #<CL-SOURCE-FILE "iterate" "iterate">.
  1: [ACCEPT                       ] Continue, treating
                                     compiling #<CL-SOURCE-FILE "iterate" "iterate">
                                     as having been successful.
  2: [ABORT                        ] Give up on "iterate"
  3:                                 Reduce debugger level (to debug level 1).
  4:                                 Retry
                                     compiling #<CL-SOURCE-FILE "iterate" "iterate">.
  5:                                 Continue, treating
                                     compiling #<CL-SOURCE-FILE "iterate" "iterate">
                                     as having been successful.
  6:                                 Retry ASDF operation.
  7: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
                                     configuration.
  8:                                 Give up on "cl-tetris3d"
  9:                                 Exit debugger, returning to top level.

(UIOP/LISP-BUILD:CHECK-LISP-COMPILE-RESULTS NIL T T "~/asdf-action::format-action/" ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "iterate" "iterate">)))
Это проблема Quicklisp или самого пакета iterate? Или я что-то забыл и делаю не так?
У меня SBCL версии 1.3.11.

[#]
Вроде всё работает у меня, причём и в 1.3.11 только что скачал и работает. Т.е. даже нет идей. Что у тебя ещё было перед этим загружено в образ? Попробуй стереть все фаслы и загрузить только сам iterate в новый экземпляр SBCL. 
den73 - 15.09.2017 20:47
[#]
> iterate-20140211-darcs
это старая  и всеми забытая и бажная версия.
сейчас в QL

> http://beta.quicklisp.org/archive/iterate/2016-08-25/iterate-20160825-darcs

Все обновились, у всех работает
flyamt - 15.09.2017 21:38
[#] Ответ на комментарий от flyamt 15.09.2017 21:38

> (ql:system-apropos "iterate")
#<SYSTEM com.clearly-useful.iterate+ / com.clearly-useful.iterate-plus-20121013-git / quicklisp 2017-08-30>
#<SYSTEM generic-sequences-iterate / generic-sequences-20150709-git / quicklisp 2017-08-30>
#<SYSTEM hu.dwim.reiterate / hu.dwim.reiterate-20170830-darcs / quicklisp 2017-08-30>
#<SYSTEM hu.dwim.reiterate+hu.dwim.logger / hu.dwim.reiterate-20170830-darcs / quicklisp 2017-08-30>
#<SYSTEM hu.dwim.reiterate/test / hu.dwim.reiterate-20170830-darcs / quicklisp 2017-08-30>
#<SYSTEM iterate / iterate-20160825-darcs / quicklisp 2017-08-30>
#<SYSTEM iterate-clsql / iterate-clsql-20130312-http / quicklisp 2017-08-30>
#<SYSTEM iterate/tests / iterate-20160825-darcs / quicklisp 2017-08-30>
#<SYSTEM x.fdatatypes-iterate / x.fdatatypes-20150709-git / quicklisp 2017-08-30>

> (ql:quickload "iterate")
To load "iterate":
 Load 1 ASDF system:
   iterate
; Loading "iterate"
[package iterate].................................
.

("iterate")
Большое спасибо. После обновления все заработало. Я догадывался, что что-то не так с самим пакетом, но пока ни разу не обновлял систему при помощи QL. Надеюсь, обновление не поломало мой stumpwm.
Еще раз спасибо!
anaumov - 16.09.2017 01:41
[#] Ответ на комментарий от anaumov 16.09.2017 01:41
В CCL 1.12-dev-r16615-trunk (LinuxARM32)  iterate-20160825-darcs не компилится. Clozure "криво" макро раскрывает. Но можно с "костылем"  заставить.
dima0905 - 17.09.2017 22:25
[#] Ответ на комментарий от anaumov 16.09.2017 01:41
Пишу из Fluxbox. StumpWM после обновления все же сломался... желания разбираться не было (делаю ремонт дома, был страшно уставший в тот вечер, хотел просто посмотреть какой-нить фильмец).
Если CL для хакинга, стоит разделять проекты, которые должны работать всегда (stumpwm), а которые могут и не работать (cl-tetris3d из-за iterate).
anaumov - 17.09.2017 22:45
[#] Ответ на комментарий от anaumov 17.09.2017 22:45
я не нахожу функции, которая обновит только один пакет. 
dima0905 - 17.09.2017 23:53
[#] Ответ на комментарий от dima0905 17.09.2017 23:53
Ой, только не пакет, а систему
dima0905 - 17.09.2017 23:54
[#] Ответ на комментарий от dima0905 17.09.2017 23:53
> я не нахожу функции, которая обновит только один пакет. 

Ну в рамках CL это фактически просто невозможно. И проблема даже не в quicklisp, а скорей в ASDF и в том как её используют.

При желании можно иметь несколько "версий" qucklisp, одну типо обновлять регулярно, а другую только по праздникам когда есть чинить если что сломается.
archimag - 18.09.2017 00:09
[#] Ответ на комментарий от archimag 18.09.2017 00:09
ну как-то так, да
такая ситуация имеет место

mvk - 20.09.2017 01:55
[#] Ответ на комментарий от archimag 18.09.2017 00:09
По-моему для создания исключения из общего правила нужно скачать нужную версию в отдельное место, потом сделать uninstall той версии, которая идёт в quicklisp, а потом отдельную версию положить в local-projects и удалить system-index.txt. Хотя может быть есть какая-то специальная функция, которая регистрирует систему в local-projects - то мне неведомо и вроде не было нужно. 

den73 - 20.09.2017 10:57
[#] Ответ на комментарий от den73 20.09.2017 10:57
> потом сделать uninstall той версии, которая идёт в quicklisp, а потом отдельную версию положить в local-projects и удалить system-index.txt. 

Ну это уже как-то слишком... У меня есть более просто рецепт. 
  1. Настраиваем ASDF для поиска систем в указанном месте. Например в файл ~/.config/common-lisp/source-registry.conf.d/local.conf пишем типа следующее: (:tree "/path/to/common-lisp/folder/")
  2. Качаем либо в этот каталог.
  3. ...
  4. Profit!
Но, теперь скачанная либа будет использоваться для всех систем, т.е. не то, что требовалось в задаче.

archimag - 20.09.2017 12:20
[#] Ответ на комментарий от den73 20.09.2017 10:57
Uninstall не нужен. У local-projects приоритет выше.
andy128k - 20.09.2017 15:52
[#] Ответ на комментарий от archimag 20.09.2017 12:20
Ненавижу asdf и ненавижу его настраивать. Предпочитаю смотреть на asdf через очки quicklisp - это в 100 раз проще. Скачал в local-projects и всё. Но это личный выбор каждого. 

> Но, теперь скачанная либа будет использоваться для всех систем, т.е. не то, что требовалось в задаче. 

А разве такое требовалось? Ну если так, то тогда наверное действительно без asdf не обойтись, хотя в ql есть ql:*local-project-directories* . Правда, это вряд ли сработает, т.к. system-index.txt кеширует результаты поиска. 

den73 - 20.09.2017 17:24
[#] Ответ на комментарий от andy128k 20.09.2017 15:52
Может и не нужен, но для чистоты в доме лучше сделать. Дабы потом грепом не находить два исходника и не удивляться. 
den73 - 20.09.2017 17:25
[#] Ответ на комментарий от den73 20.09.2017 17:24
> Предпочитаю смотреть на asdf через очки quicklisp - это в 100 раз проще

Однако, quicklisp работает поверх ASDF и основан именно на возможностях ASDF. ASDF это фундамент. А без понимания фундамента, как известно, ну и т.п.
archimag - 20.09.2017 17:39
[#] Ответ на комментарий от archimag 20.09.2017 17:39
Чтобы ехать на автобусе, не нужно знать его устройство и марку. ASDF славен тем, что они не особо парятся об обратной совместимости. Например, сейчас собираются удалить run-shell-command. То ли это неизбежно ввиду ранее совершённых ошибок, то ли люди такие.  Но их деятельность (теоретически) приводит к отрезанию хвоста в виде годных, но неподдерживаемых ныне библиотек, которые постепенно перестанут собираться. При этом руководство пользователя далеко от идеала (было когда я его последний раз смотрел). К тому же там навороченное внутреннее устройство - из-за with-upgradibility даже по коду ходится с трудом. Т.е. я понимаю конечно, что задача обезпечить сборку под разными версиями - это не слишком простая задача. Но ведь SWANK тоже не слишком простая задача, а в нём всё довольно понятно. Т.е. мне кажется, что asdf просто родился под несчастливой звездой изначально (чего стоит один только старый интерфейс в виде oos). Поэтому я предпочитаю автобус под названием quicklisp, и всем рекомендую. Если автобус сломается в горах, то придётся его чинить и пассажирам. Но пока этого не случилось, можно на нём просто ехать. Правда, грешен, я последнее время стал много использовать утилиты из uiop, но после их решения удалить run-shell-command постараюсь больше так не делать. К сожалению, uiop я не нашёл альтернативы - была cllib, но под чуждой мне лицензией. 

den73 - 22.09.2017 11:13
@2009-2013 lisper.ru