~pkal/compat#4: 
compat 28.1.1.2 can't be installed from ELPA

Hi,

doing 'M-x list-packages RET U x' tries to update compat to version 28.1.1.2 from 28.1.1.1 and after downloading and unpacking the files, the following error occurs:

--8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (error "No version number could be extracted") error("No version number could be extracted") compat--generate-minimal(bool-vector #f(compiled-function (realname version) #<bytecode 0x1ece06136b60751c>) #f(compiled-function (realname version) #<bytecode -0x1dc63501bbc7dee3>) #f(compiled-function () #<bytecode -0x1bc79034a291e822>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat--generate-minimal-no-prefix(bool-vector #f(compiled-function (realname version) #<bytecode 0x1ece06136b60751c>) #f(compiled-function (realname version) #<bytecode -0x1dc63501bbc7dee3>) #f(compiled-function () #<bytecode -0x1bc79034a291e822>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat-generate-common(bool-vector #f(compiled-function (realname version) #<bytecode 0x1ece06136b60751c>) #f(compiled-function (realname version) #<bytecode -0x1dc63501bbc7dee3>) #f(compiled-function () #<bytecode -0x1bc79034a291e822>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat-common-fdefine(func bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec))) #f(compiled-function (name arglist docstring &rest rest) "Define NAME with arguments ARGLIST as a compatibility function.\nThe function must be documented in DOCSTRING. REST may begin\nwith a plist, that is interpreted by the macro but not passed on\nto the actual function. See compat-generate-common' for a\nlisting of attributes.\n\nThe definition will only be installed, if the version this\nfunction was defined in, as indicated by the:version'\nattribute, is greater than the current Emacs version." #<bytecode 0x1a1d284e8f652e82>)(bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) macroexpand((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) nil) macroexp-macroexpand((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) nil) macroexp--expand-all((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec))) macroexpand-all((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec))) (cons (macroexpand-all form) defs) (setq defs (cons (macroexpand-all form) defs)) (push (macroexpand-all form) defs) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs)))) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs))))) (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs)))))) (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '...) (push (macroexpand-all form) defs)) ((memq (car-safe form) '...) (push form defs)))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read ...))) (cond ((memq ... ...) (push ... defs)) ((memq ... ...) (push form defs)))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (with-current-buffer temp-buffer (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read ...))) (cond ((memq ... ...) (push ... defs)) ((memq ... ...) (push form defs)))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (let ((temp-buffer (generate-new-buffer " temp" t))) (with-current-buffer temp-buffer (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version ...) (form ...)) (cond (... ...) (... ...))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs)))))) (let* ((compat--generate-function 'compat--generate-minimal-no-prefix) (file (expand-file-name (format "compat-%d.el" version) (file-name-directory (or (let (...) (and ... file)) (bound-and-true-p byte-compile-current-file))))) defs) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '...) (push (macroexpand-all form) defs)) ((memq (car-safe form) '...) (push form defs)))))) (macroexp-progn (nreverse defs))) (cond ((or (not (eq compat--generate-function 'compat--generate-minimal)) (bound-and-true-p compat-testing)) (load ,(format "compat-%d.el" version))) ((let* ((compat--generate-function 'compat--generate-minimal-no-prefix) (file (expand-file-name (format "compat-%d.el" version) (file-name-directory (or ... ...)))) defs) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version ...) (form ...)) (cond (... ...) (... ...))))) (macroexp-progn (nreverse defs))))) (closure (compat--entwine-version t) (version) (cond ((or (not (eq compat--generate-function 'compat--generate-minimal)) (bound-and-true-p compat-testing))(load ,(format "compat-%d.el" version))) ((let* ((compat--generate-function 'compat--generate-minimal-no-prefix) (file (expand-file-name ... ...)) defs) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn ... ...) (let ... ...))) (macroexp-progn (nreverse defs))))))(25) (compat-entwine 25) load-with-code-conversion("z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat.el" "z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat.el" nil t) #(("z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat" . 198)) mapc(# (("z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat" . 198))) package--reload-previously-loaded(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind nil :archive nil :dir "z:/pathto/.emacs.d/elpa/compat-28.1.1.2" :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) package-activate-1(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind nil :archive nil :dir "z:/pathto/.emacs.d/elpa/compat-28.1.1.2" :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil) :reload :deps) package-unpack(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) #f(compiled-function () #<bytecode 0x1f4a5bf779c65224>)() package--with-response-buffer-1("https://elpa.gnu.org/packages/" #f(compiled-function () #<bytecode 0x1f4a5bf779c65224>) :file "compat-28.1.1.2.tar" :async nil :error-function # :noerror nil) package-install-from-archive(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) package-download-transaction((#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil))) package-install(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil) dont-select) package-menu--perform-transaction((#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) (#s(package-desc :name compat :version (28 1 1 1) :summary "Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind nil :archive nil :dir "z:/pathto/.emacs.d/elpa/compat-28.1.1.1" :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "5f1f156d8048c44e727cf3dd9a55422822562c3e")) :signed nil))) package-menu-execute() funcall-interactively(package-menu-execute) command-execute(package-menu-execute) --8<---------------cut here---------------end--------------->8---

This is with Emacs 29 from master (946d70a891).

Best, Arash

Status
RESOLVED FIXED
Submitter
Arash Esbati
Assigned to
Submitted
3 months ago
Updated
2 months ago
Labels
bug

~pkal 3 months ago

"Arash Esbati" outgoing@sr.ht writes:

Hi,

doing 'M-x list-packages RET U x' tries to update compat to version 28.1.1.2 from 28.1.1.1 and after downloading and unpacking the files, the following error occurs:

Thank you very much for reporting this bug along with a stack trace. I could not reproduce the issue initially, but it seems the same issue comes up when installing the package using `package-install-from-buffer'.

I have just pushed a commit to the repository that might fix the issue. Could you take a look and say if it seems reasonable? If so, I would mark a new release to hopefully get rid of this unpleasant error message as quickly as possible!

Debugger entered--Lisp error: (error "No version number could be extracted") error("No version number could be extracted") compat--generate-minimal(bool-vector #f(compiled-function (realname version) #<bytecode 0x1ece06136b60751c>) #f(compiled-function (realname version) #<bytecode -0x1dc63501bbc7dee3>) #f(compiled-function () #<bytecode -0x1bc79034a291e822>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat--generate-minimal-no-prefix(bool-vector #f(compiled-function (realname version) #<bytecode 0x1ece06136b60751c>) #f(compiled-function (realname version) #<bytecode -0x1dc63501bbc7dee3>) #f(compiled-function () #<bytecode -0x1bc79034a291e822>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat-generate-common(bool-vector #f(compiled-function (realname version) #<bytecode 0x1ece06136b60751c>) #f(compiled-function (realname version) #<bytecode -0x1dc63501bbc7dee3>) #f(compiled-function () #<bytecode -0x1bc79034a291e822>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat-common-fdefine(func bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec))) #f(compiled-function (name arglist docstring &rest rest) "Define NAME with arguments ARGLIST as a compatibility function.\nThe function must be documented in DOCSTRING. REST may begin\nwith a plist, that is interpreted by the macro but not passed on\nto the actual function. See compat-generate-common' for a\nlisting of attributes.\n\nThe definition will only be installed, if the version this\nfunction was defined in, as indicated by the:version'\nattribute, is greater than the current Emacs version." #<bytecode 0x1a1d284e8f652e82>)(bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) macroexpand((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) nil) macroexp-macroexpand((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) nil) macroexp--expand-all((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec))) macroexpand-all((compat-defun bool-vector (&rest objects) "Return a new bool-vector with specified arguments ..." (let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec))) (cons (macroexpand-all form) defs) (setq defs (cons (macroexpand-all form) defs)) (push (macroexpand-all form) defs) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs)))) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs))))) (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs)))))) (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '...) (push (macroexpand-all form) defs)) ((memq (car-safe form) '...) (push form defs)))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read ...))) (cond ((memq ... ...) (push ... defs)) ((memq ... ...) (push form defs)))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (with-current-buffer temp-buffer (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read ...))) (cond ((memq ... ...) (push ... defs)) ((memq ... ...) (push form defs)))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (let ((temp-buffer (generate-new-buffer " temp" t))) (with-current-buffer temp-buffer (unwind-protect (progn (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version ...) (form ...)) (cond (... ...) (... ...))))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '(compat-defun compat-defmacro compat-advise compat-defvar)) (push (macroexpand-all form) defs)) ((memq (car-safe form) '(declare-function defvar)) (push form defs)))))) (let* ((compat--generate-function 'compat--generate-minimal-no-prefix) (file (expand-file-name (format "compat-%d.el" version) (file-name-directory (or (let (...) (and ... file)) (bound-and-true-p byte-compile-current-file))))) defs) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version (format "%d.1" version)) (form (read (current-buffer)))) (cond ((memq (car-safe form) '...) (push (macroexpand-all form) defs)) ((memq (car-safe form) '...) (push form defs)))))) (macroexp-progn (nreverse defs))) (cond ((or (not (eq compat--generate-function 'compat--generate-minimal)) (bound-and-true-p compat-testing)) (load ,(format "compat-%d.el" version))) ((let* ((compat--generate-function 'compat--generate-minimal-no-prefix) (file (expand-file-name (format "compat-%d.el" version) (file-name-directory (or ... ...)))) defs) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn (forward-comment 1) (not (eobp))) (let ((compat--entwine-version ...) (form ...)) (cond (... ...) (... ...))))) (macroexp-progn (nreverse defs))))) (closure (compat--entwine-version t) (version) (cond ((or (not (eq compat--generate-function 'compat--generate-minimal)) (bound-and-true-p compat-testing))(load ,(format "compat-%d.el" version))) ((let* ((compat--generate-function 'compat--generate-minimal-no-prefix) (file (expand-file-name ... ...)) defs) (with-temp-buffer (insert-file-contents file) (emacs-lisp-mode) (while (progn ... ...) (let ... ...))) (macroexp-progn (nreverse defs))))))(25) (compat-entwine 25) load-with-code-conversion("z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat.el" "z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat.el" nil t) #(("z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat" . 198)) mapc(# (("z:/pathto/.emacs.d/elpa/compat-28.1.1.2/compat" . 198))) package--reload-previously-loaded(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind nil :archive nil :dir "z:/pathto/.emacs.d/elpa/compat-28.1.1.2" :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) package-activate-1(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind nil :archive nil :dir "z:/pathto/.emacs.d/elpa/compat-28.1.1.2" :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil) :reload :deps) package-unpack(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) #f(compiled-function () #<bytecode 0x1f4a5bf779c65224>)() package--with-response-buffer-1("https://elpa.gnu.org/packages/" #f(compiled-function () #<bytecode 0x1f4a5bf779c65224>) :file "compat-28.1.1.2.tar" :async nil :error-function # :noerror nil) package-install-from-archive(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) package-download-transaction((#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil))) package-install(#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil) dont-select) package-menu--perform-transaction((#s(package-desc :name compat :version (28 1 1 2) :summary "Emacs Lisp Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind tar :archive "gnu" :dir nil :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "b75491b95ead07ca2cd02c128037c08882b046b4")) :signed nil)) (#s(package-desc :name compat :version (28 1 1 1) :summary "Compatibility Library" :reqs ((emacs (24 3)) (nadvice (0 3))) :kind nil :archive nil :dir "z:/pathto/.emacs.d/elpa/compat-28.1.1.1" :extras ((:url . "https://sr.ht/~pkal/compat") (:keywords "lisp") (:maintainer "Compat Development" . "~pkal/compat-devel@lists.sr.ht") (:authors ("Philip Kaludercic" . "philipk@posteo.net")) (:commit . "5f1f156d8048c44e727cf3dd9a55422822562c3e")) :signed nil))) package-menu-execute() funcall-interactively(package-menu-execute) command-execute(package-menu-execute)

This is with Emacs 29 from master (946d70a891).

Best, Arash

Arash Esbati 3 months ago · edit

"~pkal" outgoing@sr.ht writes:

Thank you very much for reporting this bug along with a stack trace. I could not reproduce the issue initially, but it seems the same issue comes up when installing the package using `package-install-from-buffer'.

I have just pushed a commit to the repository that might fix the issue. Could you take a look and say if it seems reasonable? If so, I would mark a new release to hopefully get rid of this unpleasant error message as quickly as possible!

Sorry for the late response. I'm not familiar with the code, so I can't really tell if the change is reasonable. But I tried to install 28.1.1.3 from ELPA now and I still get the error:

--8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (error "No version number could be extracted") error("No version number could be extracted") compat--generate-minimal(bool-vector #f(compiled-function (realname version) #<bytecode 0x105c912fda57751c>) #f(compiled-function (realname version) #<bytecode -0x9ec76c5c53dedc>) #f(compiled-function () #<bytecode 0x104c4eef113957dd>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat--generate-minimal-no-prefix(bool-vector #f(compiled-function (realname version) #<bytecode 0x105c912fda57751c>) #f(compiled-function (realname version) #<bytecode -0x9ec76c5c53dedc>) #f(compiled-function () #<bytecode 0x104c4eef113957dd>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) ... --8<---------------cut here---------------end--------------->8---

Am I the only one with this issue?

Arash Esbati 3 months ago · edit

"Arash Esbati" outgoing@sr.ht writes:

"~pkal" outgoing@sr.ht writes:

Thank you very much for reporting this bug along with a stack trace. I could not reproduce the issue initially, but it seems the same issue comes up when installing the package using `package-install-from-buffer'.

I have just pushed a commit to the repository that might fix the issue. Could you take a look and say if it seems reasonable? If so, I would mark a new release to hopefully get rid of this unpleasant error message as quickly as possible!

Sorry for the late response. I'm not familiar with the code, so I can't really tell if the change is reasonable. But I tried to install 28.1.1.3 from ELPA now and I still get the error:

Debugger entered--Lisp error: (error "No version number could be extracted") [...]

Following up myself, I managed to install the library via `package-install-file' from the ELPA tarball.

The only thing I now get is this when native-compiling the files:

Compiling pathto/.emacs.d/elpa/compat-28.1.1.3/compat.el...

In end of data:
compat.el: Warning: the function `json-read' is not known to be defined.
compat.el: Warning: the function `json-read-from-string' is not known to be defined.
compat.el: Warning: the function `json-encode' is not known to be defined.
Compilation finished.

I couldn't figure out why since the file compat-27.el has the `declare-function' lines for the functions above.

At any rate, thanks for the quick fix.

~pkal 3 months ago

"Arash Esbati" outgoing@sr.ht writes:

"~pkal" outgoing@sr.ht writes:

Thank you very much for reporting this bug along with a stack trace. I could not reproduce the issue initially, but it seems the same issue comes up when installing the package using `package-install-from-buffer'.

I have just pushed a commit to the repository that might fix the issue. Could you take a look and say if it seems reasonable? If so, I would mark a new release to hopefully get rid of this unpleasant error message as quickly as possible!

Sorry for the late response.

No problem.

                          I'm not familiar with the code, so I can't

really tell if the change is reasonable. But I tried to install 28.1.1.3 from ELPA now and I still get the error:

Debugger entered--Lisp error: (error "No version number could be extracted") error("No version number could be extracted") compat--generate-minimal(bool-vector #f(compiled-function (realname version) #<bytecode 0x105c912fda57751c>) #f(compiled-function (realname version) #<bytecode -0x9ec76c5c53dedc>) #f(compiled-function () #<bytecode 0x104c4eef113957dd>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat--generate-minimal-no-prefix(bool-vector #f(compiled-function (realname version) #<bytecode 0x105c912fda57751c>) #f(compiled-function (realname version) #<bytecode -0x9ec76c5c53dedc>) #f(compiled-function () #<bytecode 0x104c4eef113957dd>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) ...

Am I the only one with this issue?

No, then that did not fix the issue. I will have to look at it in more detail.

~pkal 3 months ago

Philip Kaludercic philipk@posteo.net writes:

"Arash Esbati" outgoing@sr.ht writes:

"~pkal" outgoing@sr.ht writes:

Thank you very much for reporting this bug along with a stack trace. I could not reproduce the issue initially, but it seems the same issue comes up when installing the package using `package-install-from-buffer'.

I have just pushed a commit to the repository that might fix the issue. Could you take a look and say if it seems reasonable? If so, I would mark a new release to hopefully get rid of this unpleasant error message as quickly as possible!

Sorry for the late response.

No problem.

                          I'm not familiar with the code, so I can't

really tell if the change is reasonable. But I tried to install 28.1.1.3 from ELPA now and I still get the error:

Debugger entered--Lisp error: (error "No version number could be extracted") error("No version number could be extracted") compat--generate-minimal(bool-vector #f(compiled-function (realname version) #<bytecode 0x105c912fda57751c>) #f(compiled-function (realname version) #<bytecode -0x9ec76c5c53dedc>) #f(compiled-function () #<bytecode 0x104c4eef113957dd>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) compat--generate-minimal-no-prefix(bool-vector #f(compiled-function (realname version) #<bytecode 0x105c912fda57751c>) #f(compiled-function (realname version) #<bytecode -0x9ec76c5c53dedc>) #f(compiled-function () #<bytecode 0x104c4eef113957dd>) ((let ((vec (make-bool-vector (length objects) nil)) (i 0)) (while objects (when (car objects) (aset vec i t)) (setq objects (cdr objects) i (1+ i))) vec)) func) ...

Am I the only one with this issue?

No, then that did not fix the issue. I will have to look at it in more detail.

Forgive my last message, I misquoted the backtrace

The only thing I now get is this when native-compiling the files:

    Compiling pathto/.emacs.d/elpa/compat-28.1.1.3/compat.el...

    In end of data:
    compat.el: Warning: the function `json-read' is not known to be defined.
    compat.el: Warning: the function `json-read-from-string' is not known to be defined.
    compat.el: Warning: the function `json-encode' is not known to be defined.
    Compilation finished.

Good, at least that is solved then, so I will close this issue. I believe the issue was introduced by the last fix, since declare-function is a macro, and if compat-entwine already expands the body (as was necessary to fix the issue), then declare-function is just replaced with nil, defeating the entire point of declaring the function in the first place.

~pkal REPORTED FIXED 3 months ago

~temporal 2 months ago*

FWIW, I updated straight from 28.1.1.1 to 28.1.1.3, and hit this very issue. Despite numerous restarts and manual attempts at recompilation, I continue to get a steady stream of messages in the native-compile log, following the pattern below:

Compiling /home/myuser/.emacs.d/elpa/compat-28.1.1.3/compat-XX.el...
BUG: No version number could be extracted
Compiling /home/myuser/.emacs.d/elpa/compat-28.1.1.3/compat.el...
Opening input file: No such file or directory, /tmp/compat-XX.el

These repeat a bunch of times, with XX = 26, then 27. Due to sudden strike of stupidity, when I first updated compat package via paradox-list-packages, I enabled updates in "asyc mode", which means I've lost the logs from the very first compilation.

Either way, none of the definitions from compat-28.el get loaded as a result.

(Leaving me again with a broken Magit. I'm becoming deeply unhappy about how suddenly major Emacs packages started to use bleeding-edge features + a polyfill. It used to be that you could update Emacs packages somewhat safely, and didn't have to track the very last release. What's worse, the polyfilled functions that cause me grief are some basic utilities like with-environment-variables and length< - and not some actual new features of Emacs.)

~pkal 2 months ago

"~temporal" outgoing@sr.ht writes:

FWIW, I updated straight from 28.1.1.1 to 28.1.1.3, and hit this very issue. Despite numerous restarts and manual attempts at recompilation, I continue to get a steady stream of messages in the native-compile log, following the pattern below:

Compiling /home/myuser/.emacs.d/elpa/compat-28.1.1.3/compat-XX.el... BUG: No version number could be extracted Compiling /home/myuser/.emacs.d/elpa/compat-28.1.1.3/compat.el... Opening input file: No such file or directory, /tmp/compat-XX.el

These repeat a bunch of times, with XX = 26, then 27. Due to sudden strike of stupidity, when I first updated compat package via paradox-list-packages, I enabled updates in "asyc mode", which means I've lost the logs from the very first compilation.

I am not familiar with the `paradox-list-packages' command, where does that come from? From a quick search I found this project: https://github.com/Malabarba/paradox/, which I am not familiar with. Not to shift the blame away from me, but is there a chance that this package makes some changes that cause the issue? Compat is a fairly complicated package so it might be that this is triggering an edge-case in the loading mechanism?

Either way, none of the definitions from compat-28.el get loaded as a result.

(Leaving me again with a broken Magit. I'm becoming deeply unhappy about how suddenly major Emacs packages started to use bleeding-edge features + a polyfill. It used to be that you could update Emacs packages somewhat safely, and didn't have to track the very last release. What's worse, the polyfilled functions that cause me grief are some basic utilities like with-environment-variables and length< - and not some actual new features of Emacs.)

I am very sorry to hear this and hope that we can find out what the issue is. FYI These changes are tied to recent changes in compat's core loading mechanism described in [0]. I will contact Jonas to find out if he knows what is going on.

[0] https://lists.sr.ht/~pkal/compat-devel/patches/32625

~temporal 2 months ago

I am not familiar with the `paradox-list-packages' command, where does that come from? From a quick search I found this project: https://github.com/Malabarba/paradox/, which I am not familiar with.

Yes, that's the project. It's mostly a UI upgrade for the default package-list-packages' menu, with some extra convenience features, like being able to pull the list of commits between "current" and "upstream" version of a package. Relevant to this thread may be the "asynchronous upgrading" feature, which does all the download and byte-compile work in the background (spawning Emacs as a subprocess). I almost never use it, because it doesn't send feedback up to the main Emacs instance (so you can work uninterrupted, but you don't know if the installation process is failing, succeeding, or just hung completely). Unfortunately, in this particular case, I did press "Y" instead of "N" on the prompt, so the upgrade ofcompat` (along with 42 other packages) happened in the background, leaving me with no byte compiler logs (that's my second mistake: I restarted Emacs to trigger nativecomp immediately afterwards, instead of saving the final "report" buffer to a file).

Not to shift the blame away from me, but is there a chance that this package makes some changes that cause the issue?

Of course, there is always a chance of that. I don't suspect this to be the case, as Paradox is mostly a UI upgrade, and forwards the actual work to package.el, but something could have happened as a consequence of the async mode mentioned above. I respond here because the symptoms are identical to this issue.

FWIW, this does not seem to trigger during regular byte compilation (e.g. if I do M-x package-reinstall compat, the byte compilation output does not complain), but it does happen every time when native compilation fires up. Which means every time, as it never succeeds, and so always detects compat as candidate for native compilation.

I am very sorry to hear this and hope that we can find out what the issue is.

I would love to dig in, unfortunately I have some tight deadlines and I need to prioritize hacking my Emacs into working somehow, or rebuilding it from scratch now.

I will contact Jonas to find out if he knows what is going on.

So far, I've managed to work around compat issues by just defining relevant functions (like length>) myself in early-init.el. Unfortunately, this doesn't seem to work with with-environment-variables, which seems to trip the native compiler up - it seems to be parsed as "malformed function", and whenever I try to execute Magit functionality that uses this macro, it fails attempting to call a plist as if it was a function, e.g.:

Invalid function: ("GIT_PAGER" "cat")

This happens for every other feature in Magit now.

~pkal 2 months ago

"~temporal" outgoing@sr.ht writes:

I am not familiar with the `paradox-list-packages' command, where does that come from? From a quick search I found this project: https://github.com/Malabarba/paradox/, which I am not familiar with.

Yes, that's the project. It's mostly a UI upgrade for the default package-list-packages' menu, with some extra convenience features, like being able to pull the list of commits between "current" and "upstream" version of a package. Relevant to this thread may be the "asynchronous upgrading" feature, which does all the download and byte-compile work in the background (spawning Emacs as a subprocess). I almost never use it, because it doesn't send feedback up to the main Emacs instance (so you can work uninterrupted, but you don't know if the installation process is failing, succeeding, or just hung completely). Unfortunately, in this particular case, I did press "Y" instead of "N" on the prompt, so the upgrade ofcompat` (along with 42 other packages) happened in the background, leaving me with no byte compiler logs (that's my second mistake: I restarted Emacs to trigger nativecomp immediately afterwards, instead of saving the final "report" buffer to a file).

The reason I mention it is because from the error message you posted earlier, it seemed as though compat was being byte-compiled in /tmp/, as opposed to the default directory in ~/.emacs.d/elpa/compat-.../. That is currently known to cause an issue, but it was my understanding that out-of-directory compilation is not something that any package manager does. If this cannot be fixed upstream, it might be necessary to consider some other way around the issue.

Not to shift the blame away from me, but is there a chance that this package makes some changes that cause the issue?

Of course, there is always a chance of that. I don't suspect this to be the case, as Paradox is mostly a UI upgrade, and forwards the actual work to package.el, but something could have happened as a consequence of the async mode mentioned above. I respond here because the symptoms are identical to this issue.

FWIW, this does not seem to trigger during regular byte compilation (e.g. if I do M-x package-reinstall compat, the byte compilation output does not complain), but it does happen every time when native compilation fires up. Which means every time, as it never succeeds, and so always detects compat as candidate for native compilation.

Interesting, I'm also running an Emacs with native compilation but had never encountered the issue. I will take a look at this too, as it sound pretty serious.

I am very sorry to hear this and hope that we can find out what the issue is.

I would love to dig in, unfortunately I have some tight deadlines and I need to prioritize hacking my Emacs into working somehow, or rebuilding it from scratch now.

No problem whatsoever, I value all the input you could give up until now.

I will contact Jonas to find out if he knows what is going on.

So far, I've managed to work around compat issues by just defining relevant functions (like length>) myself in early-init.el.

FWIW I think that cloning compat directly and adding the checkout to `load-path' could also solve the issue.

             Unfortunately, this doesn't seem to work with

with-environment-variables, which seems to trip the native compiler up - it seems to be parsed as "malformed function", and whenever I try to execute Magit functionality that uses this macro, it fails attempting to call a plist as if it was a function, e.g.:

Invalid function: ("GIT_PAGER" "cat")

This happens for every other feature in Magit now.

My guess would be that the native compiler does not take your early-init.el into account when processing the files, so this results in an incomplete macro expansion. The issue you mention results from this function:

--8<---------------cut here---------------start------------->8--- (defun magit--shell-command (command &optional directory) (let ((default-directory (or directory default-directory))) (with-environment-variables (("GIT_PAGER" "cat")) (magit--with-connection-local-variables (magit-start-process shell-file-name nil shell-command-switch command)))) (magit-process-buffer)) --8<---------------cut here---------------end--------------->8---

Where in trying to evaluate (("GIT_PAGER" "cat")), ("GIT_PAGER" "cat") is taken to be a function, which it obviously is not.

~pkal FIXED REPORTED 2 months ago

~temporal 2 months ago

The reason I mention it is because from the error message you posted earlier, it seemed as though compat was being byte-compiled in /tmp/, as opposed to the default directory in ~/.emacs.d/elpa/compat-.../.

I didn't even realize this is not standard behavior. I'll revise up my estimate of whether or not Paradox may be interfering with the build.

That is currently known to cause an issue, but it was my understanding that out-of-directory compilation is not something that any package manager does. If this cannot be fixed upstream, it might be necessary to consider some other way around the issue.

I decided to bite the bullet and rebuild Emacs 28.1 straight from source (not the bleeding edge, but the exact 28.1 release tag). I'm in the middle of porting over my more recent configs, which use straight.el + use-package instead of package.el. I've managed to successfully build compat and magit so far (haven't tested them yet, though). Couple observations relevant to this thread:

  • Nativecomp flagged one error in compat - that "Symbol's function definition is void" for compat--ought in compat-tests.el
  • Other than that, it only complains about docstring being over 80 characters (compat--directory-files-recursively)
  • The build happens in-directory, in ~/.emacs.d/straight/build/compat/

Interesting, I'm also running an Emacs with native compilation but had never encountered the issue. I will take a look at this too, as it sound pretty serious.

My initial guess would be: "native compilation" here means (or at least meant for my 28.0.50 build) an async compilation, which involves (as I only realized recently) an Emacs subprocess. It could be it loads a slightly different state than already-initialized Emacs doing byte compilation.

I would love to dig in, unfortunately I have some tight deadlines and I need to prioritize hacking my Emacs into working somehow, or rebuilding it from scratch now.

No problem whatsoever, I value all the input you could give up until now.

I know I was a bit unfair here, I'm sorry. I've been both extremely time-limited recently, and extremely frustrated by things like this - even though both are really my fault. Thank you for all the time you put into responding to my reports and investigating those issues.

My guess would be that the native compiler does not take your early-init.el into account when processing the files, so this results in an incomplete macro expansion.

Yeah, that's probably it. Thanks for the hint! I only connected the dots (async-spawned nativecomp Emacs subprocess probably doesn't load early-init file) after I've built the 28.1 release, so I'm continuing with that, but if I have a moment, I'll try to re-run the old one to see if your solution works.

Where in trying to evaluate (("GIT_PAGER" "cat")), ("GIT_PAGER" "cat") is taken to be a function, which it obviously is not.

Yes, exactly that. This, plus bunch of other uses of that macro.

Thanks again for all your help on this!

~pkal 2 months ago

"~temporal" outgoing@sr.ht writes:

The reason I mention it is because from the error message you posted earlier, it seemed as though compat was being byte-compiled in /tmp/, as opposed to the default directory in ~/.emacs.d/elpa/compat-.../.

I didn't even realize this is not standard behavior. I'll revise up my estimate of whether or not Paradox may be interfering with the build.

That is currently known to cause an issue, but it was my understanding that out-of-directory compilation is not something that any package manager does. If this cannot be fixed upstream, it might be necessary to consider some other way around the issue.

I decided to bite the bullet and rebuild Emacs 28.1 straight from source (not the bleeding edge, but the exact 28.1 release tag). I'm in the middle of porting over my more recent configs, which use straight.el + use-package instead of package.el. I've managed to successfully build compat and magit so far (haven't tested them yet, though). Couple observations relevant to this thread:

  • Nativecomp flagged one error in compat - that "Symbol's function definition is void" for compat--ought in compat-tests.el

Unless this occurs frequently, I'd ignore this issue because compat-tests.el is actually not part of the package (as indicated by the .elpaignore file that IMO straight ought to consider).

  • Other than that, it only complains about docstring being over 80 characters (compat--directory-files-recursively)

I didn't notice this, that can be fixed.

  • The build happens in-directory, in ~/.emacs.d/straight/build/compat/

Great.

Interesting, I'm also running an Emacs with native compilation but had never encountered the issue. I will take a look at this too, as it sound pretty serious.

My initial guess would be: "native compilation" here means (or at least meant for my 28.0.50 build) an async compilation, which involves (as I only realized recently) an Emacs subprocess. It could be it loads a slightly different state than already-initialized Emacs doing byte compilation.

Native compilation is usually done asynchronously, there shouldn't have been a change between any Emacs 28 pre-release and Emacs 28 in that regard.

Where in trying to evaluate (("GIT_PAGER" "cat")), ("GIT_PAGER" "cat") is taken to be a function, which it obviously is not.

Yes, exactly that. This, plus bunch of other uses of that macro.

Thanks again for all your help on this!

No problem, I'm glad to have helped and to have learned something from this.

~pkal 2 months ago

~pkal REPORTED FIXED 2 months ago

With the latest release, this issue and all variations should be addressed completely.

Register here or Log in to comment, or comment via email.