GNU bug report logs - #59226
29.0.50; unable to load package-vc.el if package-vc-selected-packages is non-nil

Previous Next

Package: emacs;

Reported by: emacs18 <at> gmail.com

Date: Sat, 12 Nov 2022 21:14:02 UTC

Severity: normal

Found in version 29.0.50

Done: Philip Kaludercic <philipk <at> posteo.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 59226 in the body.
You can then email your comments to 59226 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#59226; Package emacs. (Sat, 12 Nov 2022 21:14:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to emacs18 <at> gmail.com:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 12 Nov 2022 21:14:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Richard Kim <emacs18 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Sat, 12 Nov 2022 13:12:53 -0800
[Message part 1 (text/plain, inline)]
#+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



[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59226; Package emacs. (Mon, 14 Nov 2022 11:32:01 GMT) Full text and rfc822 format available.

Message #8 received at 59226 <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Richard Kim <emacs18 <at> gmail.com>
Cc: 59226 <at> debbugs.gnu.org
Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Mon, 14 Nov 2022 11:31:33 +0000
Richard Kim <emacs18 <at> gmail.com> writes:

> 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


> 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

Can you try the scratch/package-vc-fixes branch.  I haven't merged it
yet, because I might need to revise some commits and I don't want to be
pushing minor fixes to master all the time.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59226; Package emacs. (Tue, 15 Nov 2022 23:06:02 GMT) Full text and rfc822 format available.

Message #11 received at 59226 <at> debbugs.gnu.org (full text, mbox):

From: Richard Kim <emacs18 <at> gmail.com>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: 59226 <at> debbugs.gnu.org
Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Tue, 15 Nov 2022 15:04:47 -0800
Thanks Philip.  I built scratch/package-vc-fixes branch, and verified
that the problem reported by me is gone.

I would like to ask a follow-up question.  I'm trying to use
package-vc as a replacement for straight.el in my setup.
I've been using straight.el within spacemacs for some time.  If you
are interested, the details can be found at
https://github.com/emacs18/spacemacs/tree/sm-straight

The key thing I have not yet figured out is how to activate packages
installed by package-vc when emacs starts up.
Package activation is done by the latter part of package-vc--unpack-1
function.  Would it be possible to split out
activation as a separate function?

On Mon, 14 Nov 2022 at 03:31, Philip Kaludercic <philipk <at> posteo.net> wrote:
>
> Richard Kim <emacs18 <at> gmail.com> writes:
>
> > 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
>
>
> > 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
>
> Can you try the scratch/package-vc-fixes branch.  I haven't merged it
> yet, because I might need to revise some commits and I don't want to be
> pushing minor fixes to master all the time.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59226; Package emacs. (Wed, 16 Nov 2022 07:48:02 GMT) Full text and rfc822 format available.

Message #14 received at 59226 <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Richard Kim <emacs18 <at> gmail.com>
Cc: 59226 <at> debbugs.gnu.org
Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Wed, 16 Nov 2022 07:47:22 +0000
Richard Kim <emacs18 <at> gmail.com> writes:

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

Splendid.

> I would like to ask a follow-up question.  I'm trying to use
> package-vc as a replacement for straight.el in my setup.
> I've been using straight.el within spacemacs for some time.  If you
> are interested, the details can be found at
> https://github.com/emacs18/spacemacs/tree/sm-straight

I am unfamiliar with both spacemacs and straight, so I'd be lost on my
own.  Could you point me to some specific example in the repository?

> The key thing I have not yet figured out is how to activate packages
> installed by package-vc when emacs starts up.
> Package activation is done by the latter part of package-vc--unpack-1
> function.  Would it be possible to split out
> activation as a separate function?

Package "activation" (in the sense of `package-activate', checking for
dependencies, adding the right directories to the load path, loading the
info manuals, ...) is still handled by package.el.  package-vc.el is
firmly based on package.el, but just provides an alternative to fetching
source code.  That is also why package-vc doesn't need to be loaded for
source packages to be usable -- which speeds up the initialisation.

The functionality of `package-vc--unpack-1' is exposed via
`package-vc-rebuild', but I don't think that that is what you need.

If you are having issues with the activation of source packages, then
that is a bug we have to understand and resolve.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59226; Package emacs. (Sat, 19 Nov 2022 17:25:01 GMT) Full text and rfc822 format available.

Message #17 received at 59226 <at> debbugs.gnu.org (full text, mbox):

From: Richard Kim <emacs18 <at> gmail.com>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: 59226 <at> debbugs.gnu.org
Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Sat, 19 Nov 2022 09:23:50 -0800
Spacemacs <https://github.com/syl20bnr/spacemacs> is one large emacs
setup designed to be the initialization code, i.e., emacs
--init-directory spacemacs-directory.  It uses use-package to install
typically hundreds of packages.

straight.el <https://github.com/radian-software/straight.el> is an
alternative to package.el where packages are installed by cloning git
(or other) repositories and building packages from source directly.
This is similar to package-vc.el. The key difference is that the git
clone directories are not added to load-path. Rather a new directory
is created where symlinks to *.el files are used plus byte compiled
files, e.g., following would be added to load-path:

    $ cd .../spacemacs/.local/straight/build-29.0-102921/dash/
    $ ls -l
    total 360
    -rw-rw-r-- 1 kimr kimr   2936 Oct 29 22:04 dash-autoloads.el
    lrwxrwxrwx 1 kimr kimr     63 Oct 29 22:04 dash.el ->
/home/kimr/.emacs.d/sm-ms/.local/straight/repos/dash.el/dash.el
    -rw-rw-r-- 1 kimr kimr 147632 Oct 29 22:04 dash.elc
    -rw-rw-r-- 1 kimr kimr 198812 Oct 29 22:04 dash.info
    lrwxrwxrwx 1 kimr kimr     65 Oct 29 22:04 dash.texi ->
/home/kimr/.emacs.d/sm-ms/.local/straight/repos/dash.el/dash.texi
    -rw-rw-r-- 1 kimr kimr    617 Oct 29 22:04 dir
    $

I have an update to my previous email. I think I'm understanding
better how package-vc is supposed to work. So please disregard my
previous question on activation. Instead I would like to share that
package-vc seems to work fine except for packages that house *.el
files within a sub-directory, e.g., magit or git-commit packages which
use lisp sub-directories. For these packages I either have to install
magit package using package.el (even though I installed it via
package-vc) or I would have to manually add the lisp sub-directory to
load-path in my startup file. If I do that, then magit and git-commit
packages installed via package-vc work.  Following is what I currently
have in my startup file to be able to use package-vc installed magit
and git-commit packages.

    (add-to-list 'load-path "~/.emacs.d/sm-my/elpa/29.0/site/git-commit/lisp")
    (add-to-list 'load-path "~/.emacs.d/sm-my/elpa/29.0/site/magit/lisp")

In my typical spacemacs setup, I have between 300 and 400 hundred
packages installed. I think more than half were installed via
package-vc and rest were installed via pacakge.el. I'm trying to see
if I can use package-vc to install all packages.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59226; Package emacs. (Sun, 20 Nov 2022 11:58:02 GMT) Full text and rfc822 format available.

Message #20 received at 59226 <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Richard Kim <emacs18 <at> gmail.com>
Cc: 59226 <at> debbugs.gnu.org
Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Sun, 20 Nov 2022 11:57:36 +0000
Richard Kim <emacs18 <at> gmail.com> writes:

> Spacemacs <https://github.com/syl20bnr/spacemacs> is one large emacs
> setup designed to be the initialization code, i.e., emacs
> --init-directory spacemacs-directory.  It uses use-package to install
> typically hundreds of packages.
>
> straight.el <https://github.com/radian-software/straight.el> is an
> alternative to package.el where packages are installed by cloning git
> (or other) repositories and building packages from source directly.
> This is similar to package-vc.el. The key difference is that the git
> clone directories are not added to load-path. Rather a new directory
> is created where symlinks to *.el files are used plus byte compiled
> files, e.g., following would be added to load-path:
>
>     $ cd .../spacemacs/.local/straight/build-29.0-102921/dash/
>     $ ls -l
>     total 360
>     -rw-rw-r-- 1 kimr kimr   2936 Oct 29 22:04 dash-autoloads.el
>     lrwxrwxrwx 1 kimr kimr     63 Oct 29 22:04 dash.el ->
> /home/kimr/.emacs.d/sm-ms/.local/straight/repos/dash.el/dash.el
>     -rw-rw-r-- 1 kimr kimr 147632 Oct 29 22:04 dash.elc
>     -rw-rw-r-- 1 kimr kimr 198812 Oct 29 22:04 dash.info
>     lrwxrwxrwx 1 kimr kimr     65 Oct 29 22:04 dash.texi ->
> /home/kimr/.emacs.d/sm-ms/.local/straight/repos/dash.el/dash.texi
>     -rw-rw-r-- 1 kimr kimr    617 Oct 29 22:04 dir
>     $

Thanks for this explanation, I wasn't familiar with this detail.

> I have an update to my previous email. I think I'm understanding
> better how package-vc is supposed to work. So please disregard my
> previous question on activation. Instead I would like to share that
> package-vc seems to work fine except for packages that house *.el
> files within a sub-directory, e.g., magit or git-commit packages which
> use lisp sub-directories. For these packages I either have to install
> magit package using package.el (even though I installed it via
> package-vc) or I would have to manually add the lisp sub-directory to
> load-path in my startup file. If I do that, then magit and git-commit
> packages installed via package-vc work.  Following is what I currently
> have in my startup file to be able to use package-vc installed magit
> and git-commit packages.
>
>     (add-to-list 'load-path "~/.emacs.d/sm-my/elpa/29.0/site/git-commit/lisp")
>     (add-to-list 'load-path "~/.emacs.d/sm-my/elpa/29.0/site/magit/lisp")

This _is_ handled, if the package specification has a `:lisp-dir' entry
pointing to the right directory.  If I had to guess, I'd say you are
using MELPA and it is probably the first entry in `package-archives'?
If so, the issue would be that MELPA doesn't provide any public package
specifications, the way GNU ELPA and NonGNU ELPA do.

What is probably required is some kind of a heuristic to detect a lisp
directory, but I haven't come up with a good solution to that yet.

> In my typical spacemacs setup, I have between 300 and 400 hundred
> packages installed. I think more than half were installed via
> package-vc and rest were installed via pacakge.el. I'm trying to see
> if I can use package-vc to install all packages.

It would be possible in theory, but note that package-vc installs
dependencies using regular tarballs installations.




Reply sent to Philip Kaludercic <philipk <at> posteo.net>:
You have taken responsibility. (Sun, 27 Nov 2022 14:12:02 GMT) Full text and rfc822 format available.

Notification sent to emacs18 <at> gmail.com:
bug acknowledged by developer. (Sun, 27 Nov 2022 14:12:02 GMT) Full text and rfc822 format available.

Message #25 received at 59226-done <at> debbugs.gnu.org (full text, mbox):

From: Philip Kaludercic <philipk <at> posteo.net>
To: Richard Kim <emacs18 <at> gmail.com>
Cc: 59226-done <at> debbugs.gnu.org
Subject: Re: bug#59226: 29.0.50; unable to load package-vc.el if
 package-vc-selected-packages is non-nil
Date: Sun, 27 Nov 2022 14:11:44 +0000
Richard Kim <emacs18 <at> gmail.com> 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.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 26 Dec 2022 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 199 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.