Subject: bug#59226: closed (Re: bug#59226: 29.0.50; unable to load package-vc.el if package-vc-selected-packages is non-nil)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 27 Nov 2022 14:12:02 +0000

Your bug report

#59226: 29.0.50; unable to load package-vc.el if package-vc-selected-packages is non-nil

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
59226: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59226
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if package-vc-selected-packages is non-nil
From: Philip Kaludercic <[email-masked]>
To: Richard Kim <[email-masked]>
Cc: [email-masked]
Date: Sun, 27 Nov 2022 14:11:44 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Richard Kim <[email-masked]> writes:

> Thanks Philip.  I built scratch/package-vc-fixes branch, and verified
> that the problem reported by me is gone.

As the changes have been applied onto master, I'll be closing the report.

Subject: 29.0.50; unable to load package-vc.el if package-vc-selected-packages is non-nil
From: Richard Kim <[email-masked]>
To: [email-masked]
Date: Sat, 12 Nov 2022 13:12:53 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

#+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(#<buffer  *load*-179493> 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(#<buffer  *load*> 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