Search code examples
common-lispquicklisp

Suddenly got quri.parser::parse-scheme-string is undefined


I was a happy user of Dexador. Suddenly, a simple dex:get<url> throws me a

quri.parser::parse-scheme-string is undefined

error.

Trying (dex:get url):

0: ("undefined function")
 1: (quri.parser::parse-uri-string #<unavailable argument> :start #<unavailable argument> :end #<unavailable argument>)
2: (quri.uri:uri "http://1337x.to/sort-search/sintel/seeders/desc/1/" :start 0 :end nil)
3: (dexador.backend.usocket:request #<unavailable argument> #<unavailable &REST argument> :method #<unused argument> :version #<unused argument> :content #<unavailable argument> :headers #<unavailable ar.

It seems related to my environment. I think it popped out after I downgraded my QL version (because of a Slime error).

edit: I once accepted this error on the debugger, it doesn't pop-up anymore.

It's weird: neither Dexador nor Quri were modified recently. It used to work.

Also, I greped Dexador and Quri, in my QL's local dist projects, to find this function, and it only appears once in Quri. It is not even a defined function, so how could it even work ? (given the package uses cl, quri.error and quri.util) https://github.com/fukamachi/quri/blob/83f3b8612be826b602f3584acac1b82691a141e6/src/parser.lisp#L96

I deleted the fasl files found in my project.

Anyway, how would you approach this problem ?

I still don't want to upgrade Quicklisp, Slime didn't release a new version.

edit: I upgraded QL, then deleted ~/quicklisp/ and re-installed it, deleted all ~/.cache/common-lisp: the same.

thanks.

SBCL Debian 1.2.4 (installed 1.4.13, couldn't load my project with another ironclad error). Quicklisp dist "2018-04-30".

I also asked in an issue https://github.com/fukamachi/dexador/issues/61#issuecomment-433672052


Solution

  • The macro used format to intern new symbols, and I set *print-case* to :downcase in my .sbclrc.

    There's a fix: https://github.com/fukamachi/quri/pull/24

    Deleting the fasl cached in ~/.cache/common-lisp/sbcl-xx/quri/ and quickloading quri was then enough to have the function back.