3

I found that sometimes ql:quickload just silently skips serious errors like:

;Compiler warnings for "home:common-lisp;mito-email-auth;src;models.lisp.newest" :
;   In SEND-CODE: In the form ("Для входа на сайт [Skazorama.ru](~A), перейдите по [этой ссылке](~A)" URL URL), "Для входа на сайт [Skazorama.ru](~A), перейдите по [этой ссылке](~A)" is not a symbol or lambda expression.

(I forgot to import a macro into the package. This macro should transform the code into something useful).

But when I'm loading this library using asdf:load-system, an error pops up and is available for debugging.

How do you live with that behavior?

sds
  • 58,617
  • 29
  • 161
  • 278
Alexander Artemenko
  • 21,378
  • 8
  • 39
  • 36
  • Generally it makes no sense to continue loading a library when an error is generated -> a single error often would cause zillions of further errors. – Rainer Joswig Sep 06 '18 at 19:00
  • In my case, library was loaded "fine" without any warnings in the REPL. I've tried :verbose option, and others, but with no visible changes. – Alexander Artemenko Sep 06 '18 at 19:06

1 Answers1

8

This is a problem with Quicklisp, and I don't know a good fix.

It happens because Quicklisp, by design, suppresses the loading output of the libraries it provides, and summarizes progress by printing .s. The idea is that these supporting libraries are settled infrastructure, and the output is unnecessary extra noise.

However, this is bad behavior when loading your own projects, which might be in flux, and for which verbose and informative messages are useful.

I have not yet come upon a system to show verbose output for your own projects and terse output for Quicklisp-provided projects. In the meantime, for my own purposes, I find that (ql:quickload "my-project" :verbose t) or setting *quickload-verbose* to true work as I need. If those options don't work for you, I'd be curious to know more about your configuration, e.g. what implementation and version is in play.

Xach
  • 11,774
  • 37
  • 38
  • Here is the sample output which shows that there no difference between `:verbose nil` and `:verbose t`: https://gist.github.com/svetlyak40wt/3af3b4db094c284e5e0ee931f56a9f3a – Alexander Artemenko Sep 06 '18 at 20:13
  • I have QL client version 2017-03-06, asdf version: 3.3.2.2, and running them under Closure CL 1.11.5/v1.11.5 (DarwinX8664) (OSX). – Alexander Artemenko Sep 06 '18 at 20:18
  • @AlexanderArtemenko I tested locally and most likely the second call only loads the existing object file and does not recompile code. Change your files to update the timestamps between your tests, in my case I see the warnings the second time. – coredump Sep 07 '18 at 08:18
  • 1
    I solved a problem with verbose output for my code and non-verbose more for by separating loading into two steps. At first step, I load only dependencies, enumerated in a separate system "app-deps". At second step, I load with verbose setting applications code – system "app" which depends only on "app-deps". @Xach what do you think about such solution? – Alexander Artemenko Sep 07 '18 at 15:20
  • That is a nice local option, but I want something automatic that works for everyone without changing how they work. – Xach Sep 11 '18 at 12:53