fukamachi / caveman

Lightweight web application framework for Common Lisp.
http://8arrow.org/caveman/
782 stars 63 forks source link

caveman2:make-project Condition of type SB-INT:SIMPLE-FILE-ERROR #73

Closed yanyingwang closed 8 years ago

yanyingwang commented 8 years ago

I'm new to common-lisp and caveman, please confirm this problem and help me out:

when I load caveman2 and make-project, it thows an error like error opening #P"/home/yanying/myapp": is a directory......

caveman2

aarvid commented 8 years ago

I tested it on my machine and it works for me:

; SLIME 2015-06-01
CL-USER> (ql:quickload :caveman2)
To load "caveman2":
  Load 1 ASDF system:
    caveman2
; Loading "caveman2"
..............
(:CAVEMAN2)
CL-USER> (caveman2:make-project #P "/home/andy/lisp/foo"  :author "foobar")
writing /home/andy/lisp/foo/.gitignore
writing /home/andy/lisp/foo/README.markdown
writing /home/andy/lisp/foo/app.lisp
writing /home/andy/lisp/foo/foo-test.asd
writing /home/andy/lisp/foo/foo.asd
writing /home/andy/lisp/foo/db/schema.sql
writing /home/andy/lisp/foo/src/config.lisp
writing /home/andy/lisp/foo/src/db.lisp
writing /home/andy/lisp/foo/src/main.lisp
writing /home/andy/lisp/foo/src/view.lisp
writing /home/andy/lisp/foo/src/web.lisp
writing /home/andy/lisp/foo/static/css/main.css
writing /home/andy/lisp/foo/t/foo.lisp
writing /home/andy/lisp/foo/templates/index.html
writing /home/andy/lisp/foo/templates/_errors/404.html
writing /home/andy/lisp/foo/templates/layouts/default.html
T
CL-USER> (caveman2:make-project #P "/home/andy/lisp/myapp"  :author "foobar")
writing /home/andy/lisp/myapp/.gitignore
writing /home/andy/lisp/myapp/README.markdown
writing /home/andy/lisp/myapp/app.lisp
writing /home/andy/lisp/myapp/myapp-test.asd
writing /home/andy/lisp/myapp/myapp.asd
writing /home/andy/lisp/myapp/db/schema.sql
writing /home/andy/lisp/myapp/src/config.lisp
writing /home/andy/lisp/myapp/src/db.lisp
writing /home/andy/lisp/myapp/src/main.lisp
writing /home/andy/lisp/myapp/src/view.lisp
writing /home/andy/lisp/myapp/src/web.lisp
writing /home/andy/lisp/myapp/static/css/main.css
writing /home/andy/lisp/myapp/t/myapp.lisp
writing /home/andy/lisp/myapp/templates/index.html
writing /home/andy/lisp/myapp/templates/_errors/404.html
writing /home/andy/lisp/myapp/templates/layouts/default.html
T
CL-USER> (asdf:system-source-directory :caveman2)
#P"/media/common/hack/lisp/quick/dists/quicklisp/software/caveman-20150923-git/"
CL-USER> 

We have the same version of caveman2. What version of SBCL are you using?

What are the arguments to copy-file-to-file?

yanyingwang commented 8 years ago

Mine versions:

CL-USER> (ql:system-apropos "caveman2")
#<SYSTEM caveman2 / caveman-20150923-git / quicklisp 2015-09-24>
#<SYSTEM caveman2-db / caveman-20150923-git / quicklisp 2015-09-24>
#<SYSTEM caveman2-test / caveman-20150923-git / quicklisp 2015-09-24>
; No value
➜  ~  sbcl --version
SBCL 1.1.14.debian

But, how to show arguments of copy-file-to-file ? Please help me through this.

aarvid commented 8 years ago

I am using sbcl 1.2.14. the current version is 1.2.16. version 1.1.14 is from 2013-12. I would suggest you install the most recent version from sbcl.org. Though I downloaded an old 1.1.14 binary and it still works.

yanyingwang commented 8 years ago

Thanks! I'll try a new version of sbcl and see the result.

ghost commented 8 years ago

That is weird, could you try to eval (ql:quickload :cl-project-test) and check the report? Caveman2's make-project depends on that lib.

yanyingwang commented 8 years ago

@macdavid313 Well, I try to eval (ql:quickload :cl-project-test) and it gives me an error:

error opening #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/t/cl-project-sample/": is a directory....

new-caveman2

yanyingwang commented 8 years ago

@aarvid Too bad that I've updated sbcl version to '1.2.16' and nothing changed.

aarvid commented 8 years ago

run the following 3 commands:

CL-USER> cl-project::*skeleton-directory*
#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/"
CL-USER> cl-project::*skeleton-parameters*
NIL
CL-USER> (uiop:directory-files cl-project::*skeleton-directory*)
(#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd")

It appears you have a problem with the uiop:directory-files function. It should only return a list of files but without any subdirectories.

You might as well run this command:

CL-USER> (mapcar #'uiop:directory-files (uiop:subdirectories  cl-project::*skeleton-directory*)) 
((#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/skeleton.lisp")
 (#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/skeleton.lisp"))

Also find the definition of uiop:directory-files function. Easy way is to put the cursor over the function and use the M-. key stroke (hold alt press period). That should go to the definition. See what file it is in:

/media/common/hack/lisp/quick/dists/quicklisp/software/uiop-3.1.5/filesystem.lisp
yanyingwang commented 8 years ago

@aarvid I think you're right. This is output of mine:

CL-USER> cl-project::*skeleton-directory*
#P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/"

CL-USER> cl-project::*skeleton-parameters*
NIL

CL-USER> (uiop:directory-files cl-project::*skeleton-directory*)
(#P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/")

CL-USER> (mapcar #'uiop:directory-files (uiop:subdirectories  cl-project::*skeleton-directory*)) 
((#P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/skeleton.lisp")
 (#P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/skeleton.lisp"))
CL-USER> 

As we can see, those two lines are different from (uiop:directory-files cl-project::*skeleton-directory*)’s output of yours.

 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/"
 #P"/home/yanying/quicklisp/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/")

Those are infos of ASDF:

CL-USER> (ql:system-apropos "ASDF")
#<SYSTEM asdf-defdoc / nst-4.0.3 / quicklisp 2015-09-24>
#<SYSTEM asdf-dependency-grovel / asdf-dependency-grovel-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-driver / uiop-3.1.5 / quicklisp 2015-09-24>
#<SYSTEM asdf-encodings / asdf-encodings-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-encodings/test / asdf-encodings-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-finalizers / asdf-finalizers-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-finalizers-test / asdf-finalizers-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-finalizers-test/1 / asdf-finalizers-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-linguist / asdf-linguist-20150923-git / quicklisp 2015-09-24>
#<SYSTEM asdf-nst / nst-4.0.3 / quicklisp 2015-09-24>
#<SYSTEM asdf-package-system / asdf-package-system-20150608-git / quicklisp 2015-09-24>
#<SYSTEM asdf-system-connections / asdf-system-connections-20140211-git / quicklisp 2015-09-24>
#<SYSTEM bytecurry.asdf-ext / bytecurry.asdf-ext-20150505-git / quicklisp 2015-09-24>
#<SYSTEM com.dvlsoft.asdf-flv / asdf-flv-1.0 / quicklisp 2015-09-24>
#<SYSTEM hu.dwim.asdf / hu.dwim.asdf-20150709-darcs / quicklisp 2015-09-24>
#<SYSTEM hu.dwim.asdf.documentation / hu.dwim.asdf-20150709-darcs / quicklisp 2015-09-24>
#<SYSTEM iolib.asdf / iolib-20150804-git / quicklisp 2015-09-24>
#<SYSTEM iolib/asdf / iolib-20150804-git / quicklisp 2015-09-24>
#<SYSTEM list-of / asdf-finalizers-20150608-git / quicklisp 2015-09-24>
#<SYSTEM prove-asdf / prove-20150923-git / quicklisp 2015-09-24>
#<SYSTEM test-serial-system / asdf-dependency-grovel-20150608-git / quicklisp 2015-09-24>
; No value
aarvid commented 8 years ago

Edit: I upgraded to SBCL 1.2.16 and reran the commands.

It is clear that you have a problem with the function _uiop:directory-files_. it should not return actual directories.

CL-USER> (ql:system-apropos "ASDF")

This does not help. It shows what can be installed by quicklisp. It does not show what actually is installed, nor does it show if you have two UIOP systems on your computer which one it has loaded. Furthermore, UIOP is the utilities file of ASDF but it can be loaded separately.

Run the following commands (it assumes you are using slime):

CL-USER> (loop for sym in *features* when (search "ASDF" (symbol-name sym)) collect sym)
(:ASDF-PACKAGE-SYSTEM :ASDF3.1 :ASDF3 :ASDF2 :ASDF :ASDF-UNICODE)

CL-USER> (asdf:asdf-version)
"3.1.5"

CL-USER> (swank:find-definitions-for-emacs "UIOP:DIRECTORY-FILES")
(("(DEFUN UIOP/FILESYSTEM:DIRECTORY-FILES)"
  (:LOCATION (:FILE "/home/andy/lisp/sbcl-1.2.16/contrib/asdf/uiop.lisp")
   (:POSITION 132831)
   (:SNIPPET "(with-upgradability ()
  (defun truename* (p)
    \"Nicer variant of TRUENAME that plays well with NIL, avoids logical pathname contexts, and tries both files and directories\"
    (when p
      (when (stringp p) (setf p (with-pathname-defaults () (parse-nam")))
 ("(DECLAIM UIOP/FILESYSTEM:DIRECTORY-FILES
         NOTINLINE)"
  (:LOCATION (:FILE "/home/andy/lisp/sbcl-1.2.16/contrib/asdf/uiop.lisp")
   (:POSITION 132831)
   (:SNIPPET "(with-upgradability ()
  (defun truename* (p)
    \"Nicer variant of TRUENAME that plays well with NIL, avoids logical pathname contexts, and tries both files and directories\"
    (when p
      (when (stringp p) (setf p (with-pathname-defaults () (parse-nam"))))

CL-USER> (ql:quickload :cl-project)
To load "cl-project":
  Load 1 ASDF system:
    cl-project
; Loading "cl-project"
...
(:CL-PROJECT)

CL-USER> (swank:find-definitions-for-emacs "UIOP:DIRECTORY-FILES")
(("(DEFUN UIOP/FILESYSTEM:DIRECTORY-FILES)"
  (:LOCATION
   (:FILE
    "/media/common/hack/lisp/quick/dists/quicklisp/software/uiop-3.1.5/filesystem.lisp")
   (:POSITION 2921)
   (:SNIPPET "(with-upgradability ()
  (defun truename* (p)
    \"Nicer variant of TRUENAME that plays well with NIL, avoids logical pathname contexts, and tries both files and directories\"
    (when p
      (when (stringp p) (setf p (with-pathname-defaults () (parse-nam")))
 ("(DECLAIM UIOP/FILESYSTEM:DIRECTORY-FILES
         NOTINLINE)"
  (:LOCATION
   (:FILE
    "/media/common/hack/lisp/quick/dists/quicklisp/software/uiop-3.1.5/filesystem.lisp")
   (:POSITION 2921)
   (:SNIPPET "(with-upgradability ()
  (defun truename* (p)
    \"Nicer variant of TRUENAME that plays well with NIL, avoids logical pathname contexts, and tries both files and directories\"
    (when p
      (when (stringp p) (setf p (with-pathname-defaults () (parse-nam"))))

CL-USER> 

As you can see, loading cl-project, loads a different version of UIOP (quicklisp version) than which SBCL had loaded on startup.

These command should tell us if you have an older/wrong version of UIOP on your computer that is loaded into lisp.

aarvid commented 8 years ago

Edit: I upgraded to SBCL 1.2.16 and reran the commands, but nothing changed.

The following should help debug _uiop:directory-files_:

CL-USER> (trace uiop:directory-files uiop:directory* uiop:directory-pathname-p remove-if)
(UIOP/FILESYSTEM:DIRECTORY-FILES UIOP/FILESYSTEM:DIRECTORY*
                                 UIOP/PATHNAME:DIRECTORY-PATHNAME-P REMOVE-IF)

CL-USER> (uiop:directory-files cl-project::*skeleton-directory*)
  0: (UIOP/FILESYSTEM:DIRECTORY-FILES
      #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/")
    1: (UIOP/FILESYSTEM:DIRECTORY*
        #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/*.*")
    1: UIOP/FILESYSTEM:DIRECTORY* returned
         (#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/")
    1: (REMOVE-IF UIOP/PATHNAME:DIRECTORY-PATHNAME-P
                  (#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
                   #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
                   #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
                   #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
                   #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd"
                   #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/"
                   #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/"))
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned NIL
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned NIL
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned NIL
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned NIL
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned NIL
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/src/")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned T
      2: (UIOP/PATHNAME:DIRECTORY-PATHNAME-P
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/t/")
      2: UIOP/PATHNAME:DIRECTORY-PATHNAME-P returned T
    1: REMOVE-IF returned
         (#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
          #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd")
  0: UIOP/FILESYSTEM:DIRECTORY-FILES returned
       (#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
        #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
        #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
        #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
        #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd")

(#P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/.gitignore"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.markdown"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/README.org"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton-test.asd"
 #P"/media/common/hack/lisp/quick/dists/quicklisp/software/cl-project-20150923-git/skeleton/skeleton.asd")

CL-USER> 

when you are done do

CL-USER> (untrace uiop:directory-files uiop:directory* uiop:directory-pathname-p remove-if)
T

to get rid of future traces.

yanyingwang commented 8 years ago

I've run the debug code and as a result, it seems that this thing comes from a version of UIOP from my system being loaded which should be from quicklisp.

CL-USER> (swank:find-definitions-for-emacs "UIOP:DIRECTORY-FILES")
(("(DEFUN UIOP/FILESYSTEM:DIRECTORY-FILES)"
  (:LOCATION
   (:FILE
    "/home/csr21/src/lisp/sbcl-release-dir-20150930-tP58IU1wx/sbcl-1.2.16/contrib/asdf/uiop.lisp")
   (:POSITION 1) (:SNIPPET "(defun DIRECTORY-FILES ")))
 ("(DECLAIM UIOP/FILESYSTEM:DIRECTORY-FILES
         NOTINLINE)"
  (:LOCATION
   (:FILE
    "/home/csr21/src/lisp/sbcl-release-dir-20150930-tP58IU1wx/sbcl-1.2.16/contrib/asdf/uiop.lisp")
   (:POSITION 1) NIL)))
CL-USER> (ql:quickload :cl-project)
To load "cl-project":
  Load 1 ASDF system:
    cl-project
; Loading "cl-project"
...
(:CL-PROJECT)
CL-USER> (swank:find-definitions-for-emacs "UIOP:DIRECTORY-FILES")
(("(DEFUN UIOP/FILESYSTEM:DIRECTORY-FILES)"
  (:LOCATION
   (:FILE "/usr/share/common-lisp/source/cl-asdf/uiop/filesystem.lisp")
   (:POSITION 2899)
   (:SNIPPET "(with-upgradability ()
  (defun truename* (p)
    \"Nicer variant of TRUENAME that plays well with NIL and avoids logical pathname contexts\"
    ;; avoids both logical-pathname merging and physical resolution issues
    (and p (handler-case (with-pathname-d")))
 ("(DECLAIM UIOP/FILESYSTEM:DIRECTORY-FILES
         NOTINLINE)"
  (:LOCATION
   (:FILE "/usr/share/common-lisp/source/cl-asdf/uiop/filesystem.lisp")
   (:POSITION 2899)
   (:SNIPPET "(with-upgradability ()
  (defun truename* (p)
    \"Nicer variant of TRUENAME that plays well with NIL and avoids logical pathname contexts\"
    ;; avoids both logical-pathname merging and physical resolution issues
    (and p (handler-case (with-pathname-d"))))
CL-USER> 

I'm such a fool to ignore WARNING message when I run command sbcl --load quicklisp.lisp to install quicklisp.

This is SBCL 1.2.16, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
WARNING:
   You are using ASDF version 3.1.5 (probably from (require "asdf") or loaded
   by quicklisp) and have an older version of ASDF 3.0.3 registered at
   #P"/usr/share/common-lisp/source/cl-asdf/asdf.asd". Having an ASDF installed
   and registered is the normal way of configuring ASDF to upgrade itself, and
   having an old version registered is a configuration error. ASDF will ignore
   this configured system rather than downgrade itself. In the future, you may
   want to either: (a) upgrade this configured ASDF to a newer version, (b)
   install a newer ASDF and register it in front of the former in your
   configuration, or (c) uninstall or unregister this and any other old version
   of ASDF from your configuration. Note that the older ASDF might be
   registered implicitly through configuration inherited from your system
   installation, in which case you might have to specify
   :ignore-inherited-configuration in your in your
   ~/.config/common-lisp/source-registry.conf or other source-registry
   configuration file, environment variable or lisp parameter. Indeed, a likely
   offender is an obsolete version of the cl-asdf debian or ubuntu package,
   that you might want to upgrade (if a recent enough version is available) or
   else remove altogether (since most implementations ship with a recent asdf);
   if you lack the system administration rights to upgrade or remove this
   package, then you might indeed want to either install and register a more
   recent version, or use :ignore-inherited-configuration to avoid registering
   the old one. Please consult ASDF documentation and/or experts.

Finally, I just run sudo aptitude purge cl-asdf to remove system ASDF package and everything works now!

@aarvid Thanks for help !

aarvid commented 8 years ago

You are welcome. I had a similar problem years ago (asdf existed but not quicklisp) with an old version installed of a library hunchentoot depended on.

By the way, it is a bad idea to install implementations or libraries from a linux package system. They are usually hopelessly out-of-date and rarely updated.