emacs-eldev / eldev

Elisp development tool
https://emacs-eldev.github.io/eldev/
GNU General Public License v3.0
229 stars 17 forks source link

eldev upgrade-self always fails with wrong-type-argument #11

Closed DarwinAwardWinner closed 4 years ago

DarwinAwardWinner commented 4 years ago

Whenever I try to run eldev upgrade-self, I get Wrong type argument: stringp, eldev--resolve-package-archive. Running with -d gives:

$ eldev -d upgrade-self
Debugger entered--Lisp error: (wrong-type-argument stringp eldev--resolve-package-archive)
  expand-file-name(eldev--resolve-package-archive "/Users/ryan/.eldev/26.3/bootstrap/archives")
  eldev--fetch-archive-contents(t)
  eldev--install-or-upgrade-dependencies(eldev nil t nil nil t)
  eldev-upgrade-self()
  apply(eldev-upgrade-self nil)
  eldev-cli(("-d" "upgrade-self"))
  (kill-emacs (eldev-cli (append (cdr (member "--" command-line-args)) nil)))
  eval((kill-emacs (eldev-cli (append (cdr (member "--" command-line-args)) nil))))
  command-line-1(("--execute" "(let ((eldev--emacs-version (format \"%s.%s\" emacs-major-version emacs-minor-version))\n      (eldev--dir           (getenv \"ELDEV_DIR\"))\n      ;; This is intentional.  First, this is in case ELDEV_LOCAL is\n      ;; defined, second, this is just Eldev default for packages.\n      (load-prefer-newer    t))\n  ;; Setting `debug-on-error' would be useful, but it can break many\n  ;; `package-*' functions, since those use `with-demoted-errors' and\n  ;; so `condition-case-unless-debug'.\n  (unless (and (fboundp 'version<=) (version<= \"24.1\" eldev--emacs-version))\n    (error \"Eldev requires Emacs 24.1 or newer\"))\n  (setf package-user-dir       (expand-file-name \"bootstrap\" (expand-file-name eldev--emacs-version (if (= (length eldev--dir) 0) \"~/.eldev\" eldev--dir)))\n        package-directory-list nil\n        package-archives       nil)\n  (require 'package)\n  (package-initialize t)\n  (let ((package-archives '((\"melpa-stable\" . \"http://stable.melpa.org/packages/\")))\n        (archive-name      \"Melpa stable\")\n        (inhibit-message  t)\n        (eldev-local      (getenv \"ELDEV_LOCAL\"))\n        eldev-pkg\n        requirements)\n    (unless (= (length eldev-local) 0)\n      (if (string-prefix-p \":pa:\" eldev-local)\n          (setf package-archives `((\"bootstrap-pa\" . ,(file-name-as-directory (substring eldev-local (length \":pa:\")))))\n                archive-name     \"a local package archive\")\n        (with-temp-buffer\n          (insert-file-contents-literally (expand-file-name \"eldev.el\" eldev-local))\n          (setf eldev-pkg                    (package-buffer-info)\n                (package-desc-dir eldev-pkg) (expand-file-name eldev-local))\n          ;; Currently Eldev has no external dependencies, but let's be generic.\n          (dolist (requirement (package-desc-reqs eldev-pkg))\n            (unless (package-activate (car requirement))\n              (push requirement requirements))))))\n    (when (if eldev-pkg\n              requirements\n            (not (package-activate 'eldev)))\n      (let ((inhibit-message nil))\n        (message \"Bootstrapping Eldev for Emacs %s from %s...\\n\" eldev--emacs-version archive-name)\n        (when eldev-pkg\n          (message \"Eldev package itself will be used from `%s'\\n\" eldev-local)))\n      (package-refresh-contents)\n      (if eldev-pkg\n          (package-download-transaction (package-compute-transaction nil requirements))\n        (package-install 'eldev)))\n    (when eldev-pkg\n      (push `(eldev . (,eldev-pkg)) package-alist)\n      ;; `package--autoloads-file-name' is package-private.\n      (let* ((autoloads-file     (expand-file-name (format \"%s-autoloads\" (package-desc-name eldev-pkg))\n                                                   (package-desc-dir eldev-pkg)))\n             (autoloads-disabler (lambda (do-load file &rest args) (unless (equal file autoloads-file) (apply do-load file args)))))\n        (advice-add #'load :around autoloads-disabler)\n        (package-activate-1 eldev-pkg)\n        (advice-remove #'load autoloads-disabler))))\n  (require 'eldev)\n  (eldev-start-up))" "--execute" "(kill-emacs (eldev-cli (append (cdr (member \"--\" command-line-args)) nil)))" "--" "-d" "upgrade-self"))
  command-line()
  normal-top-level()

I'm not sure how this error is being triggered, because I can't find anywhere in eldev--fetch-archive-contents where it calls expand-file-name on eldev--resolve-package-archive.

doublep commented 4 years ago

This is a duplicate of bug #10. It is fixed in master, but not released, I planned to release 0.3 with undercover plugin, but don't have much time currently...

If it is important for some reason, I can release 0.2.2.

DarwinAwardWinner commented 4 years ago

No, that's fine, I just didn't notice the duplicate. Whatever happens, people are going to have to manually install the next release.

doublep commented 4 years ago

Just released 0.3. When stable.melpa.org picks it up, you can just use the workaround described at https://github.com/doublep/eldev/releases/tag/0.3.