I have this code that used to work fine until today:
(let* ((newest-pkg (cadr (assq 'org package-archive-contents)))
(installed-pkg (cadr (or (assq 'org package-alist)
(assq 'org package--builtins)))))
(when (version-list-<= (package-desc-version newest-pkg) (package-desc-version installed-pkg))
;; Instalamos la nueva versión de org-mode
;;(package-install newest-pkg)
(message (format "Paquete «%s» actualizado de la versión %s a la versión %s"
(package-desc-name newest-pkg)
(car (package-desc-version newest-pkg))
(car (package-desc-version installed-pkg))))
;;(delete-directory (package-desc-dir installed-pkg) t)
))
However, it is failing with this error:
Debugger entered--Lisp error: (wrong-type-argument listp [nil nil "Outline-based notes management and organizer"])
cadr((org . [nil nil "Outline-based notes management and organizer"]))
(let* ((newest-pkg (cadr (assq (quote org) package-archive-contents))) (installed-pkg (cadr (or (assq (quote org) package-alist) (assq (quote org) package--builtins))))) (if (version-list-<= (progn (or (and (memq (aref newest-pkg 0) cl-struct-package-desc-tags)) (error "%s accessing a non-%s" (quote package-desc-version) (quote package-desc))) (aref newest-pkg 2)) (progn (or (and (memq (aref installed-pkg 0) cl-struct-package-desc-tags)) (error "%s accessing a non-%s" (quote package-desc-version) (quote package-desc))) (aref installed-pkg 2))) (progn (message (format "Paquete «%s» actualizado de la versión %s a la versión %s" (progn (or (and ...) (error "%s accessing a non-%s" ... ...)) (aref newest-pkg 1)) (car (progn (or ... ...) (aref newest-pkg 2))) (car (progn (or ... ...) (aref installed-pkg 2))))))))
eval((let* ((newest-pkg (cadr (assq (quote org) package-archive-contents))) (installed-pkg (cadr (or (assq (quote org) package-alist) (assq (quote org) package--builtins))))) (if (version-list-<= (progn (or (and (memq (aref newest-pkg 0) cl-struct-package-desc-tags)) (error "%s accessing a non-%s" (quote package-desc-version) (quote package-desc))) (aref newest-pkg 2)) (progn (or (and (memq (aref installed-pkg 0) cl-struct-package-desc-tags)) (error "%s accessing a non-%s" (quote package-desc-version) (quote package-desc))) (aref installed-pkg 2))) (progn (message (format "Paquete «%s» actualizado de la versión %s a la versión %s" (progn (or (and ...) (error "%s accessing a non-%s" ... ...)) (aref newest-pkg 1)) (car (progn (or ... ...) (aref newest-pkg 2))) (car (progn (or ... ...) (aref installed-pkg 2)))))))) nil)
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
What am I doing wrong?
EDIT: This is how I'm setting the package archive.
(setf package-enable-at-startup nil)
(package-initialize)
(setf package-archives '(("melpa" . "https://melpa.org/packages/")
("org" . "http://orgmode.org/elpa/")
("gnu" . "https://elpa.gnu.org/packages/")))
(unless package-archive-contents
(package-refresh-contents))
My Emacs version is GNU Emacs 24.5.1 (i686-pc-linux-gnu, GTK+ Version 3.20.6) of 2016-06-04 on juergen.
package-archives
and do you callpackage-refresh-contents
prior to this? etc.) It appears as though yourpackage-archive-contents
might contain a list of conses instead of a list of lists, which I can't reproduce on emacs 24.5package-refresh-contents
.~/.emacs.d/elpa
and restarting emacs to see if the problem goes away.(debug)
in that code, or if it is in a function you can you could just useM-x debug-on-entry
for that function. You can put(debug)
into the firstlet*
binding usingprogn
:(progn (debug) (newest-pkg (cadr (assq 'org package-archive-contents))))
. Then step through the debugger to see whichcadr
is the problem. That might give you a clue. But I'd start by doing what @nispio suggested - simplify your debugging context.