#+LINK: cl https://navigator/SWE_NAVIGATOR/perforce/view_changelist.nhtml?port=1777&changelist=%s #+LINK: jira https://jira.internal.synopsys.com/browse/%s I would like to report what appears to be a bug in ~package-vc.el~ where emacs is unable to load this file if ~package-vc-selected-packages~ variable is ~not-nil~. To see this problem I created following simple test file: #+begin_src elisp $ cat ~/demo-package-vc-issue (setq package-vc-selected-packages '((treemacs-projectile :lisp-dir "src/extra" :main-file "treemacs-projectile.el" :url "https://github.com/Alexander-Miller/treemacs"))) (setq debug-on-error t) (load-library "package-vc.el") #+end_src Following shows some background information. #+begin_example In GNU Emacs 29.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2022-11-12 built on kimr-dell Repository revision: f8c11b5a92e78801d71e88cb4ac419e02d85953f Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12201001 System Description: Ubuntu 22.04.1 LTS Configured using: 'configure '--program-transform-name=s/^ctags$/ctags.emacs/' --with-dbus --with-file-notification=yes --with-gif=yes --with-gnutls=yes --with-imagemagick --with-jansson --with-mailutils --with-modules --with-nativecomp --with-pdumper=yes --with-png=yes --with-rsvg --with-sound=yes --with-tiff=yes --with-x-toolkit=yes --with-xml2 --with-xwidgets --without-compress-install --prefix /home/kimr/opt/emacs29/20221112' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ IMAGEMAGICK JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB #+end_example If above test file is loaded via emacs as follows #+begin_src shell $ emacs -q -l ~/demo-package-vc-issue #+end_src then following error is reported #+begin_example Debugger entered--Lisp error: (void-function package-vc--archives-initialize) (package-vc--archives-initialize) (cond ((null spec) (package-vc-install name)) ((stringp spec) (package-vc-install name nil spec)) ((listp spec) (package-vc--archives-initialize) (package-vc--unpack pkg-desc spec))) (if (and name (package-installed-p name) (eq (progn (or (progn (and (memq ... cl-struct-package-desc-tags) t)) (signal 'wrong-type-argument (list 'package-desc pkg-desc))) (aref pkg-desc 5)) 'vc)) nil (cond ((null spec) (package-vc-install name)) ((stringp spec) (package-vc-install name nil spec)) ((listp spec) (package-vc--archives-initialize) (package-vc--unpack pkg-desc spec)))) (let ((pkg-desc (car (cdr (assoc name package-alist #'string=))))) (if (and name (package-installed-p name) (eq (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... pkg-desc))) (aref pkg-desc 5)) 'vc)) nil (cond ((null spec) (package-vc-install name)) ((stringp spec) (package-vc-install name nil spec)) ((listp spec) (package-vc--archives-initialize) (package-vc--unpack pkg-desc spec))))) (let ((name x1) (spec x2)) (let ((pkg-desc (car (cdr (assoc name package-alist #'string=))))) (if (and name (package-installed-p name) (eq (progn (or (progn ...) (signal ... ...)) (aref pkg-desc 5)) 'vc)) nil (cond ((null spec) (package-vc-install name)) ((stringp spec) (package-vc-install name nil spec)) ((listp spec) (package-vc--archives-initialize) (package-vc--unpack pkg-desc spec)))))) (let* ((x2 (cdr-safe x0))) (let ((name x1) (spec x2)) (let ((pkg-desc (car (cdr (assoc name package-alist ...))))) (if (and name (package-installed-p name) (eq (progn (or ... ...) (aref pkg-desc 5)) 'vc)) nil (cond ((null spec) (package-vc-install name)) ((stringp spec) (package-vc-install name nil spec)) ((listp spec) (package-vc--archives-initialize) (package-vc--unpack pkg-desc spec))))))) (progn (ignore (symbolp x1)) (let* ((x2 (cdr-safe x0))) (let ((name x1) (spec x2)) (let ((pkg-desc (car (cdr ...)))) (if (and name (package-installed-p name) (eq (progn ... ...) 'vc)) nil (cond ((null spec) (package-vc-install name)) ((stringp spec) (package-vc-install name nil spec)) ((listp spec) (package-vc--archives-initialize) (package-vc--unpack pkg-desc spec)))))))) (let* ((x1 (car-safe x0))) (progn (ignore (symbolp x1)) (let* ((x2 (cdr-safe x0))) (let ((name x1) (spec x2)) (let ((pkg-desc (car ...))) (if (and name (package-installed-p name) (eq ... ...)) nil (cond (... ...) (... ...) (... ... ...)))))))) (progn (ignore (consp x0)) (let* ((x1 (car-safe x0))) (progn (ignore (symbolp x1)) (let* ((x2 (cdr-safe x0))) (let ((name x1) (spec x2)) (let ((pkg-desc ...)) (if (and name ... ...) nil (cond ... ... ...)))))))) (let ((x0 (car tail))) (progn (ignore (consp x0)) (let* ((x1 (car-safe x0))) (progn (ignore (symbolp x1)) (let* ((x2 (cdr-safe x0))) (let ((name x1) (spec x2)) (let (...) (if ... nil ...))))))) (setq tail (cdr tail))) (while tail (let ((x0 (car tail))) (progn (ignore (consp x0)) (let* ((x1 (car-safe x0))) (progn (ignore (symbolp x1)) (let* ((x2 ...)) (let (... ...) (let ... ...)))))) (setq tail (cdr tail)))) (let ((tail package-vc-selected-packages)) (while tail (let ((x0 (car tail))) (progn (ignore (consp x0)) (let* ((x1 (car-safe x0))) (progn (ignore (symbolp x1)) (let* (...) (let ... ...))))) (setq tail (cdr tail))))) package-vc-ensure-packages() (closure (t) (sym val) (custom-set-default sym val) (package-vc-ensure-packages))(package-vc-selected-packages ((treemacs-projectile :lisp-dir "src/extra" :main-file "treemacs-projectile.el" :url "https://github.com/Alexander-Miller/treemacs"))) custom-initialize-reset(package-vc-selected-packages (funcall #'(closure (t) nil "" 'nil))) custom-declare-variable(package-vc-selected-packages (funcall #'(closure (t) nil "" 'nil)) "List of packages that must be installed.\nEach memb..." :type (alist :tag "List of packages you want to be installed" :key-type (symbol :tag "Package") :value-type (choice (const :tag "Any revision" nil) (string :tag "Specific revision") (plist :options ((:url string) (:branch string) (:lisp-dir string) (:main-file string) (:vc-backend symbol))))) :set (closure (t) (sym val) (custom-set-default sym val) (package-vc-ensure-packages)) :version "29.1") eval-buffer(# nil "/home/kimr/opt/emacs29/20221112/share/emacs/29.0.5..." nil t) ; Reading at buffer position 6633 load-with-code-conversion("/home/kimr/opt/emacs29/20221112/share/emacs/29.0.5..." "/home/kimr/opt/emacs29/20221112/share/emacs/29.0.5..." nil nil) load("package-vc.el") load-library("package-vc.el") eval-buffer(# nil "/home/kimr/.emacs-debug-1" nil t) ; Reading at buffer position 262 load-with-code-conversion("/home/kimr/.emacs-debug-1" "/home/kimr/.emacs-debug-1" nil t) load("/home/kimr/.emacs-debug-1" nil t) command-line-1(("-l" "/home/kimr/.emacs-debug-1")) command-line() normal-top-level() #+end_example