unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
@ 2023-11-07 13:11 Sylvain Bougerel
  2023-11-07 15:27 ` Sylvain Bougerel
  2023-11-08  7:51 ` Philip Kaludercic
  0 siblings, 2 replies; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-07 13:11 UTC (permalink / raw)
  To: 66985

The following issue seem to occur with emacs-29.1 only. Emacs-27.1 and
emacs-28.1 were also tested but do not seem to suffer from the problem.


Issue observed:

Likelihood of error in `package-compute-transaction` form `package.el`,
that could lead to builtin packages being upgraded even if it's not
necessary, due to an edge-case.


Background:

Unfortunately, authors/maintainers of `compat` likely made a
mistake setting its requirements (see:
https://github.com/emacs-compat/compat/blob/main/compat.el#L9):

    ;; Package-Requires: ((emacs "24.4") (seq "2.3"))

`(seq "2.3")` is a version in the future, since `seq.el` is currently at
version 2.24.

After installing this package, however, any package that depend
on `seq` too will result in `package.el` calculating that the built-in `seq`
must also be upgraded (and downloaded) even while, Emacs already has the
latest version (2.24) and when `package-install-upgrade-built-in` is not set.


Steps to reproduce:

This step shows that prior to installing `compat`, only `compat` is
requested:

     shell > [ -d ~/tmp-cache ] && rm -rf ~/tmp-cache
     shell > emacs --no-site-file --batch \
     --eval "(progn \
       (require 'package) \
       (setq package-user-dir \"~/tmp-cache\") \
       (add-to-list 'package-archives '(\"melpa\" .
\"http://melpa.org/packages/\")) \
       (add-to-list 'package-archives '(\"nongnu\" .
\"https://elpa.nongnu.org/nongnu/\")) \
       (package-initialize) \
       (package-refresh-contents) \
       (print (mapcar #'package-desc-name (package-compute-transaction
() (list (list 'compat))))))"
     ...
     (compat)

This step requests the package `git-commit` which depends on `compat`,
*on a fresh install without compat*:

    shell > [ -d ~/tmp-cache ] && rm -rf ~/tmp-cache
    shell > emacs --no-site-file --batch \
    --eval "(progn \
      (require 'package) \
      (setq package-user-dir \"~/tmp-cache\") \
      (add-to-list 'package-archives '(\"melpa\" .
\"http://melpa.org/packages/\")) \
      (add-to-list 'package-archives '(\"nongnu\" .
\"https://elpa.nongnu.org/nongnu/\")) \
      (package-initialize) \
      (package-refresh-contents) \
      (print (mapcar #'package-desc-name (package-compute-transaction
() (list (list 'git-commit))))))"
    ...
    (compat with-editor transient git-commit)

Again, we request the package `git-commit`, but this time, the install
is not "fresh", we install `compat` first.

    shell > [ -d ~/tmp-cache ] && rm -rf ~/tmp-cache
    shell > emacs --no-site-file --batch \
    --eval "(progn \
      (require 'package) \
      (setq package-user-dir \"~/tmp-cache\") \
      (add-to-list 'package-archives '(\"melpa\" .
\"http://melpa.org/packages/\")) \
      (add-to-list 'package-archives '(\"nongnu\" .
\"https://elpa.nongnu.org/nongnu/\")) \
      (package-initialize) \
      (package-refresh-contents) \
      (package-install 'compat) \
      (print (mapcar #'package-desc-name (package-compute-transaction
() (list (list 'git-commit))))))"
    ...
    (with-editor seq transient git-commit)

Here the issue shows itself, `seq` is now requested for installation,
which is incorrect, since Emacs already have the latest version.

Attempting to install `seq` does not install cleanly (See:
https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00235.html)



My own Emacs version information was included in the bug report, and thus is
kept as-is:


In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38,
cairo version 1.17.8)
System Description: Arch Linux

Configured using:
 'configure --with-pgtk --with-native-compilation=aot --sysconfdir=/etc
 --prefix=/usr --libexecdir=/usr/lib --with-tree-sitter
 --localstatedir=/var --with-cairo --disable-build-details
 --with-harfbuzz --with-libsystemd --with-modules 'CFLAGS=-march=x86-64
 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2
 -Wformat -Werror=format-security -fstack-clash-protection
 -fcf-protection -g
 -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -flto=auto'
 'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto'
 'CXXFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -g
 -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -flto=auto''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: en_GB.UTF-8
  value of $LC_NUMERIC: en_GB.UTF-8
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  highlight-quoted-mode: t
  rainbow-delimiters-mode: t
  solaire-global-mode: t
  solaire-mode: t
  persp-mode: t
  org-roam-db-autosync-mode: t
  outline-minor-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  doom-modeline-mode: t
  eros-mode: t
  vi-tilde-fringe-mode: t
  highlight-numbers-mode: t
  display-line-numbers-mode: t
  hl-todo-mode: t
  highlight-indent-guides-mode: t
  copilot-mode: t
  which-key-mode: t
  savehist-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  company-box-mode: t
  global-company-mode: t
  company-mode: t
  vertico-mode: t
  marginalia-mode: t
  volatile-highlights-mode: t
  recentf-mode: t
  save-place-mode: t
  global-so-long-mode: t
  global-git-commit-mode: t
  shell-dirtrack-mode: t
  server-mode: t
  envrc-global-mode: t
  envrc-mode: t
  gcmh-mode: t
  global-hl-line-mode: t
  hl-line-mode: t
  winner-mode: t
  smartparens-global-mode: t
  smartparens-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  global-emojify-mode: t
  emojify-mode: t
  undo-fu-session-global-mode: t
  undo-fu-session-mode: t
  undo-fu-mode: t
  flycheck-popup-tip-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  repeat-mode: t
  delete-selection-mode: t
  projectile-mode: t
  +popup-mode: t
  global-ligature-mode: t
  ligature-mode: t
  override-global-mode: t
  general-override-mode: t
  apheleia-global-mode: t
  apheleia-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/sylvain/.emacs.d/.local/straight/build-29.1/cmake-mode/cmake-mode
hides /usr/share/emacs/site-lisp/cmake-mode
/home/sylvain/.emacs.d/.local/straight/build-29.1/transient/transient
hides /usr/share/emacs/29.1/lisp/transient
/home/sylvain/.emacs.d/.local/straight/build-29.1/jsonrpc/jsonrpc
hides /usr/share/emacs/29.1/lisp/jsonrpc
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-bind-key
hides /usr/share/emacs/29.1/lisp/use-package/use-package-bind-key
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-ensure
hides /usr/share/emacs/29.1/lisp/use-package/use-package-ensure
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-core
hides /usr/share/emacs/29.1/lisp/use-package/use-package-core
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package
hides /usr/share/emacs/29.1/lisp/use-package/use-package
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-lint
hides /usr/share/emacs/29.1/lisp/use-package/use-package-lint
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-jump
hides /usr/share/emacs/29.1/lisp/use-package/use-package-jump
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-delight
hides /usr/share/emacs/29.1/lisp/use-package/use-package-delight
/home/sylvain/.emacs.d/.local/straight/build-29.1/bind-key/bind-key
hides /usr/share/emacs/29.1/lisp/use-package/bind-key
/home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-diminish
hides /usr/share/emacs/29.1/lisp/use-package/use-package-diminish
/home/sylvain/.emacs.d/.local/straight/build-29.1/xref/xref hides
/usr/share/emacs/29.1/lisp/progmodes/xref
/home/sylvain/.emacs.d/.local/straight/build-29.1/project/project
hides /usr/share/emacs/29.1/lisp/progmodes/project
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-duration
hides /usr/share/emacs/29.1/lisp/org/org-duration
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-man hides
/usr/share/emacs/29.1/lisp/org/ol-man
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-indent hides
/usr/share/emacs/29.1/lisp/org/org-indent
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lisp hides
/usr/share/emacs/29.1/lisp/org/ob-lisp
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-habit hides
/usr/share/emacs/29.1/lisp/org/org-habit
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-archive
hides /usr/share/emacs/29.1/lisp/org/org-archive
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-julia hides
/usr/share/emacs/29.1/lisp/org/ob-julia
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-mhe hides
/usr/share/emacs/29.1/lisp/org/ol-mhe
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-goto hides
/usr/share/emacs/29.1/lisp/org/org-goto
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-groovy hides
/usr/share/emacs/29.1/lisp/org/ob-groovy
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-comint hides
/usr/share/emacs/29.1/lisp/org/ob-comint
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-tempo hides
/usr/share/emacs/29.1/lisp/org/org-tempo
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-inlinetask
hides /usr/share/emacs/29.1/lisp/org/org-inlinetask
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-w3m hides
/usr/share/emacs/29.1/lisp/org/ol-w3m
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-eshell hides
/usr/share/emacs/29.1/lisp/org/ol-eshell
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-mouse hides
/usr/share/emacs/29.1/lisp/org/org-mouse
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-emacs-lisp
hides /usr/share/emacs/29.1/lisp/org/ob-emacs-lisp
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-natbib hides
/usr/share/emacs/29.1/lisp/org/oc-natbib
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-footnote
hides /usr/share/emacs/29.1/lisp/org/org-footnote
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-calc hides
/usr/share/emacs/29.1/lisp/org/ob-calc
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-odt hides
/usr/share/emacs/29.1/lisp/org/ox-odt
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-publish hides
/usr/share/emacs/29.1/lisp/org/ox-publish
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox hides
/usr/share/emacs/29.1/lisp/org/ox
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-rmail hides
/usr/share/emacs/29.1/lisp/org/ol-rmail
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-lint hides
/usr/share/emacs/29.1/lisp/org/org-lint
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-compat hides
/usr/share/emacs/29.1/lisp/org/org-compat
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-loaddefs
hides /usr/share/emacs/29.1/lisp/org/org-loaddefs
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-attach-git
hides /usr/share/emacs/29.1/lisp/org/org-attach-git
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-beamer hides
/usr/share/emacs/29.1/lisp/org/ox-beamer
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-shell hides
/usr/share/emacs/29.1/lisp/org/ob-shell
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-timer hides
/usr/share/emacs/29.1/lisp/org/org-timer
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ditaa hides
/usr/share/emacs/29.1/lisp/org/ob-ditaa
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-fortran hides
/usr/share/emacs/29.1/lisp/org/ob-fortran
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-org hides
/usr/share/emacs/29.1/lisp/org/ob-org
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-bibtex hides
/usr/share/emacs/29.1/lisp/org/oc-bibtex
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-python hides
/usr/share/emacs/29.1/lisp/org/ob-python
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-agenda hides
/usr/share/emacs/29.1/lisp/org/org-agenda
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-faces hides
/usr/share/emacs/29.1/lisp/org/org-faces
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-eval hides
/usr/share/emacs/29.1/lisp/org/ob-eval
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ref hides
/usr/share/emacs/29.1/lisp/org/ob-ref
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-ascii hides
/usr/share/emacs/29.1/lisp/org/ox-ascii
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-eww hides
/usr/share/emacs/29.1/lisp/org/ol-eww
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-css hides
/usr/share/emacs/29.1/lisp/org/ob-css
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-eshell hides
/usr/share/emacs/29.1/lisp/org/ob-eshell
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-table hides
/usr/share/emacs/29.1/lisp/org/ob-table
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-man hides
/usr/share/emacs/29.1/lisp/org/ox-man
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-list hides
/usr/share/emacs/29.1/lisp/org/org-list
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-colview
hides /usr/share/emacs/29.1/lisp/org/org-colview
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-org hides
/usr/share/emacs/29.1/lisp/org/ox-org
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-crypt hides
/usr/share/emacs/29.1/lisp/org/org-crypt
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-basic hides
/usr/share/emacs/29.1/lisp/org/oc-basic
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-scheme hides
/usr/share/emacs/29.1/lisp/org/ob-scheme
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ruby hides
/usr/share/emacs/29.1/lisp/org/ob-ruby
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-refile hides
/usr/share/emacs/29.1/lisp/org/org-refile
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-octave hides
/usr/share/emacs/29.1/lisp/org/ob-octave
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-forth hides
/usr/share/emacs/29.1/lisp/org/ob-forth
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-mobile hides
/usr/share/emacs/29.1/lisp/org/org-mobile
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-persist
hides /usr/share/emacs/29.1/lisp/org/org-persist
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-plantuml
hides /usr/share/emacs/29.1/lisp/org/ob-plantuml
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-dot hides
/usr/share/emacs/29.1/lisp/org/ob-dot
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-protocol
hides /usr/share/emacs/29.1/lisp/org/org-protocol
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-plot hides
/usr/share/emacs/29.1/lisp/org/org-plot
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-keys hides
/usr/share/emacs/29.1/lisp/org/org-keys
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-exp hides
/usr/share/emacs/29.1/lisp/org/ob-exp
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-macro hides
/usr/share/emacs/29.1/lisp/org/org-macro
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-maxima hides
/usr/share/emacs/29.1/lisp/org/ob-maxima
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ocaml hides
/usr/share/emacs/29.1/lisp/org/ob-ocaml
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob hides
/usr/share/emacs/29.1/lisp/org/ob
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-fold hides
/usr/share/emacs/29.1/lisp/org/org-fold
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-feed hides
/usr/share/emacs/29.1/lisp/org/org-feed
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-table hides
/usr/share/emacs/29.1/lisp/org/org-table
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-tangle hides
/usr/share/emacs/29.1/lisp/org/ob-tangle
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-capture
hides /usr/share/emacs/29.1/lisp/org/org-capture
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lob hides
/usr/share/emacs/29.1/lisp/org/ob-lob
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-R hides
/usr/share/emacs/29.1/lisp/org/ob-R
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-awk hides
/usr/share/emacs/29.1/lisp/org/ob-awk
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-irc hides
/usr/share/emacs/29.1/lisp/org/ol-irc
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-icalendar
hides /usr/share/emacs/29.1/lisp/org/ox-icalendar
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-bibtex hides
/usr/share/emacs/29.1/lisp/org/ol-bibtex
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-core hides
/usr/share/emacs/29.1/lisp/org/ob-core
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-element
hides /usr/share/emacs/29.1/lisp/org/org-element
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-screen hides
/usr/share/emacs/29.1/lisp/org/ob-screen
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lua hides
/usr/share/emacs/29.1/lisp/org/ob-lua
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sass hides
/usr/share/emacs/29.1/lisp/org/ob-sass
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-js hides
/usr/share/emacs/29.1/lisp/org/ob-js
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-entities
hides /usr/share/emacs/29.1/lisp/org/org-entities
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-attach hides
/usr/share/emacs/29.1/lisp/org/org-attach
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sqlite hides
/usr/share/emacs/29.1/lisp/org/ob-sqlite
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-texinfo hides
/usr/share/emacs/29.1/lisp/org/ox-texinfo
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-id hides
/usr/share/emacs/29.1/lisp/org/org-id
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-bbdb hides
/usr/share/emacs/29.1/lisp/org/ol-bbdb
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-info hides
/usr/share/emacs/29.1/lisp/org/ol-info
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sql hides
/usr/share/emacs/29.1/lisp/org/ob-sql
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-perl hides
/usr/share/emacs/29.1/lisp/org/ob-perl
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-csl hides
/usr/share/emacs/29.1/lisp/org/oc-csl
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org hides
/usr/share/emacs/29.1/lisp/org/org
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-doi hides
/usr/share/emacs/29.1/lisp/org/ol-doi
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-cycle hides
/usr/share/emacs/29.1/lisp/org/org-cycle
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-processing
hides /usr/share/emacs/29.1/lisp/org/ob-processing
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-html hides
/usr/share/emacs/29.1/lisp/org/ox-html
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-koma-letter
hides /usr/share/emacs/29.1/lisp/org/ox-koma-letter
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-datetree
hides /usr/share/emacs/29.1/lisp/org/org-datetree
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-fold-core
hides /usr/share/emacs/29.1/lisp/org/org-fold-core
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol hides
/usr/share/emacs/29.1/lisp/org/ol
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-clojure hides
/usr/share/emacs/29.1/lisp/org/ob-clojure
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-pcomplete
hides /usr/share/emacs/29.1/lisp/org/org-pcomplete
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-clock hides
/usr/share/emacs/29.1/lisp/org/org-clock
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-java hides
/usr/share/emacs/29.1/lisp/org/ob-java
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-matlab hides
/usr/share/emacs/29.1/lisp/org/ob-matlab
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-biblatex
hides /usr/share/emacs/29.1/lisp/org/oc-biblatex
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-docview hides
/usr/share/emacs/29.1/lisp/org/ol-docview
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-ctags hides
/usr/share/emacs/29.1/lisp/org/org-ctags
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-makefile
hides /usr/share/emacs/29.1/lisp/org/ob-makefile
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-version
hides /usr/share/emacs/29.1/lisp/org/org-version
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sed hides
/usr/share/emacs/29.1/lisp/org/ob-sed
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc hides
/usr/share/emacs/29.1/lisp/org/oc
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-haskell hides
/usr/share/emacs/29.1/lisp/org/ob-haskell
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-macs hides
/usr/share/emacs/29.1/lisp/org/org-macs
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-gnus hides
/usr/share/emacs/29.1/lisp/org/ol-gnus
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-src hides
/usr/share/emacs/29.1/lisp/org/org-src
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-gnuplot hides
/usr/share/emacs/29.1/lisp/org/ob-gnuplot
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-C hides
/usr/share/emacs/29.1/lisp/org/ob-C
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lilypond
hides /usr/share/emacs/29.1/lisp/org/ob-lilypond
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-md hides
/usr/share/emacs/29.1/lisp/org/ox-md
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-latex hides
/usr/share/emacs/29.1/lisp/org/ob-latex
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-num hides
/usr/share/emacs/29.1/lisp/org/org-num
/home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-latex hides
/usr/share/emacs/29.1/lisp/org/ox-latex
/home/sylvain/.emacs.d/.local/straight/build-29.1/eldoc/eldoc hides
/usr/share/emacs/29.1/lisp/emacs-lisp/eldoc
/home/sylvain/.emacs.d/.local/straight/build-29.1/map/map hides
/usr/share/emacs/29.1/lisp/emacs-lisp/map

Features:
(shadow sort mail-extr emacsbug cl-print mm-archive gnutls
network-stream url-cache url-http url-auth url-gw nsm magit-extras
company-ispell company-dabbrev vc-hg vc-svn vc bug-reference vterm tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat
parse-time term ehelp vterm-module term/xterm xterm apheleia-core
apheleia apheleia-utils tabify misearch multi-isearch anzu
company-yasnippet elisp-demos helpful cc-langs cc-vars cc-defs trace
edebug debug backtrace info-look info help-fns radix-tree elisp-refs
consult-flycheck consult magit-bookmark bookmark vertico-directory
mule-util smartparens-markdown markdown-mode edit-indirect goto-addr
hide-mode-line org-eldoc writegood-mode toc-org org-superstar
org-fancy-priorities org-appear mixed-pitch org-crypt org-indent
image-file image-converter oc-basic ol-bibtex bibtex iso8601
highlight-quoted rainbow-delimiters dired-aux diredfl dired-x disp-table
spell-fu ispell yaml-mode git-gutter-fringe fringe-helper git-gutter
vc-git vc-dispatcher jka-compr auto-minor-mode whitespace make-mode
vertico-repeat pulse doom-themes-ext-org solaire-mode face-remap
doom-one-theme doom-themes doom-themes-base persp-mode org-agenda
org-roam-logseq org-roam-migrate org-roam-log org-roam-mode
org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-attach smartparens-org org-yt org-element org-persist
xdg org-id org-refile org-element-ast inline avl-tree org noutline
outline ob-emacs-lisp org-table ob ob-tangle ol ob-ref ob-lob ob-table
ob-exp org-macro org-src company-shell sh-script smie treesit executable
org-keys oc ob-comint org-pcomplete org-list org-footnote org-entities
org-faces cal-menu calendar cal-loaddefs emacsql-sqlite
emacsql-sqlite-common emacsql emacsql-compiler magit-todos pcre2el rxt
re-builder async magit-autoloads magit-submodule magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func magit-diff smerge-mode diff diff-mode magit-core
magit-autorevert autorevert filenotify magit-margin magit-transient
magit-process magit-mode doom-snippets doom-snippets-lib yasnippet
elisp-mode doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core shrink-path f f-shortdoc flycheck-cask eros
vi-tilde-fringe highlight-numbers parent-mode display-line-numbers
hl-todo highlight-indent-guides color copilot copilot-balancer
editorconfig editorconfig-core editorconfig-core-handle
editorconfig-fnmatch s jsonrpc which-key savehist better-jumper
nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon
nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon
nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon
nerd-icons-data-powerline nerd-icons-data-octicon
nerd-icons-data-pomicon nerd-icons-data-ipsicon company-box
company-box-doc frame-local company-box-icons all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons company-capf company
vertico orderless marginalia etags fileloop generator xref
volatile-highlights recentf tree-widget wid-edit saveplace so-long
git-commit magit-git magit-base magit-section cursor-sensor crm
with-editor shell pcomplete transient server log-edit message sendmail
yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068
epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils
gmm-utils mailheader pcvs-util add-log compat envrc inheritenv gcmh
hl-line winner smartparens-config smartparens-text smartparens loadhist
ws-butler emojify apropos tar-mode arc-mode archive-mode ht
undo-fu-session undo-fu flycheck-popup-tip popup flycheck-package
package-lint imenu finder finder-inf doom-packages package browse-url
url-handlers flycheck find-func dash autosync-magit gptel gptel-openai
url url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util url-parse auth-source eieio
eieio-core password-cache json map url-vars mailcap repeat delsel
projectile project byte-opt lisp-mnt grep compile text-property-search
comint ansi-osc ansi-color ring ibuf-ext ibuffer ibuffer-loaddefs
thingatpt let-alist ob-core org-cycle org-fold org-fold-core org-compat
ob-eval org-version org-macs format-spec ligature derived edmacro kmacro
use-package-bind-key bind-key dtrt-indent advice time-date comp
comp-cstr warnings icons doom-editor doom-projects doom-ui easy-mmode
doom-keybinds pp cl-extra help-mode use-package-core bytecomp
byte-compile general tex-site rx realgud-recursive-autoloads doom-start
doom-modules cl-seq doom doom-lib cl-macs cl-loaddefs cl-lib pcase gv
harfbuzz jansson dynamic-modules subr-x rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
term/pgtk-win pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 3245234 195176)
 (symbols 48 82161 1)
 (strings 32 684237 38311)
 (string-bytes 1 18697768)
 (vectors 16 212303)
 (vector-slots 8 6473676 156957)
 (floats 8 2362 1249)
 (intervals 56 257960 1370)
 (buffers 984 56))





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-07 13:11 bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case) Sylvain Bougerel
@ 2023-11-07 15:27 ` Sylvain Bougerel
  2023-11-08  1:01   ` Sylvain Bougerel
  2023-11-08  7:51 ` Philip Kaludercic
  1 sibling, 1 reply; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-07 15:27 UTC (permalink / raw)
  To: 66985

I realised I wrote an inaccuracy in the bug report. This does not
change the issue or the outcome of the tests.

> `(seq "2.3")` is a version in the future, since `seq.el` is currently at version 2.24.

This is incorrect for Emacs-29.1, which ships with `seq=2.23`.

> Emacs already has the latest version (2.24) and when `package-install-upgrade-built-in` is not set.

The first half of this statement can be disregarded. However the
second half stands: since `package-install-upgrade-built-in` is not
set, the package should not be upgraded.

Regards,
Sylvain





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-07 15:27 ` Sylvain Bougerel
@ 2023-11-08  1:01   ` Sylvain Bougerel
  0 siblings, 0 replies; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-08  1:01 UTC (permalink / raw)
  To: 66985

> > `(seq "2.3")` is a version in the future, since `seq.el` is currently at
> > version 2.24.
>
> This is incorrect for Emacs-29.1, which ships with `seq=2.23`.

Also, seq=2.3 is /not/ a version in the future, it's already met by seq=2.23
provided by Emacs-29.1.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-07 13:11 bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case) Sylvain Bougerel
  2023-11-07 15:27 ` Sylvain Bougerel
@ 2023-11-08  7:51 ` Philip Kaludercic
  2023-11-08 16:30   ` Sylvain Bougerel
  1 sibling, 1 reply; 11+ messages in thread
From: Philip Kaludercic @ 2023-11-08  7:51 UTC (permalink / raw)
  To: Sylvain Bougerel; +Cc: 66985

Sylvain Bougerel <sylvain.bougerel.devel@gmail.com> writes:

> The following issue seem to occur with emacs-29.1 only. Emacs-27.1 and
> emacs-28.1 were also tested but do not seem to suffer from the problem.
>
>
> Issue observed:
>
> Likelihood of error in `package-compute-transaction` form `package.el`,
> that could lead to builtin packages being upgraded even if it's not
> necessary, due to an edge-case.
>
>
> Background:
>
> Unfortunately, authors/maintainers of `compat` likely made a
> mistake setting its requirements (see:
> https://github.com/emacs-compat/compat/blob/main/compat.el#L9):
>
>     ;; Package-Requires: ((emacs "24.4") (seq "2.3"))
>
> `(seq "2.3")` is a version in the future, since `seq.el` is currently at
> version 2.24.
>
> After installing this package, however, any package that depend
> on `seq` too will result in `package.el` calculating that the built-in `seq`
> must also be upgraded (and downloaded) even while, Emacs already has the
> latest version (2.24) and when `package-install-upgrade-built-in` is not set.
>
>
> Steps to reproduce:
>
> This step shows that prior to installing `compat`, only `compat` is
> requested:
>
>      shell > [ -d ~/tmp-cache ] && rm -rf ~/tmp-cache
>      shell > emacs --no-site-file --batch \
>      --eval "(progn \
>        (require 'package) \
>        (setq package-user-dir \"~/tmp-cache\") \
>        (add-to-list 'package-archives '(\"melpa\" .
> \"http://melpa.org/packages/\")) \
>        (add-to-list 'package-archives '(\"nongnu\" .
> \"https://elpa.nongnu.org/nongnu/\")) \
>        (package-initialize) \
>        (package-refresh-contents) \
>        (print (mapcar #'package-desc-name (package-compute-transaction
> () (list (list 'compat))))))"
>      ...
>      (compat)
>
> This step requests the package `git-commit` which depends on `compat`,
> *on a fresh install without compat*:
>
>     shell > [ -d ~/tmp-cache ] && rm -rf ~/tmp-cache
>     shell > emacs --no-site-file --batch \
>     --eval "(progn \
>       (require 'package) \
>       (setq package-user-dir \"~/tmp-cache\") \
>       (add-to-list 'package-archives '(\"melpa\" .
> \"http://melpa.org/packages/\")) \
>       (add-to-list 'package-archives '(\"nongnu\" .
> \"https://elpa.nongnu.org/nongnu/\")) \
>       (package-initialize) \
>       (package-refresh-contents) \
>       (print (mapcar #'package-desc-name (package-compute-transaction
> () (list (list 'git-commit))))))"
>     ...
>     (compat with-editor transient git-commit)
>
> Again, we request the package `git-commit`, but this time, the install
> is not "fresh", we install `compat` first.
>
>     shell > [ -d ~/tmp-cache ] && rm -rf ~/tmp-cache
>     shell > emacs --no-site-file --batch \
>     --eval "(progn \
>       (require 'package) \
>       (setq package-user-dir \"~/tmp-cache\") \
>       (add-to-list 'package-archives '(\"melpa\" .
> \"http://melpa.org/packages/\")) \
>       (add-to-list 'package-archives '(\"nongnu\" .
> \"https://elpa.nongnu.org/nongnu/\")) \
>       (package-initialize) \
>       (package-refresh-contents) \
>       (package-install 'compat) \
>       (print (mapcar #'package-desc-name (package-compute-transaction
> () (list (list 'git-commit))))))"
>     ...
>     (with-editor seq transient git-commit)
>
> Here the issue shows itself, `seq` is now requested for installation,
> which is incorrect, since Emacs already have the latest version.

I think we can narrow down the issue to

  (package-installed-p 'seq '(2 3))

being t or nil.  Despite having 2.24 installed on Emacs 30.0, it
indicates that the package is installed.  What does it say when
evaluating this on Emacs 29?

Other values of interest

  (package-installed-p 'seq '(2 0))   ;=> t
  (package-installed-p 'seq '(2 23))  ;=> t
  (package-installed-p 'seq '(2 24))  ;=> t
  (package-installed-p 'seq '(2 25))  ;=> nil
  (package-installed-p 'seq '(2 26))  ;=> nil
  (package-installed-p 'seq '(2 100)) ;=> nil

> Attempting to install `seq` does not install cleanly (See:
> https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00235.html)
>
>
>
> My own Emacs version information was included in the bug report, and thus is
> kept as-is:
>
>
> In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38,
> cairo version 1.17.8)
> System Description: Arch Linux
>
> Configured using:
>  'configure --with-pgtk --with-native-compilation=aot --sysconfdir=/etc
>  --prefix=/usr --libexecdir=/usr/lib --with-tree-sitter
>  --localstatedir=/var --with-cairo --disable-build-details
>  --with-harfbuzz --with-libsystemd --with-modules 'CFLAGS=-march=x86-64
>  -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2
>  -Wformat -Werror=format-security -fstack-clash-protection
>  -fcf-protection -g
>  -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -flto=auto'
>  'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto'
>  'CXXFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
>  -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
>  -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -g
>  -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -flto=auto''
>
> Configured features:
> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
> JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
> PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
> TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB
>
> Important settings:
>   value of $LC_MONETARY: en_GB.UTF-8
>   value of $LC_NUMERIC: en_GB.UTF-8
>   value of $LC_TIME: en_GB.UTF-8
>   value of $LANG: en_US.UTF-8
>   value of $XMODIFIERS: @im=ibus
>   locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
>   highlight-quoted-mode: t
>   rainbow-delimiters-mode: t
>   solaire-global-mode: t
>   solaire-mode: t
>   persp-mode: t
>   org-roam-db-autosync-mode: t
>   outline-minor-mode: t
>   yas-global-mode: t
>   yas-minor-mode: t
>   doom-modeline-mode: t
>   eros-mode: t
>   vi-tilde-fringe-mode: t
>   highlight-numbers-mode: t
>   display-line-numbers-mode: t
>   hl-todo-mode: t
>   highlight-indent-guides-mode: t
>   copilot-mode: t
>   which-key-mode: t
>   savehist-mode: t
>   better-jumper-mode: t
>   better-jumper-local-mode: t
>   company-box-mode: t
>   global-company-mode: t
>   company-mode: t
>   vertico-mode: t
>   marginalia-mode: t
>   volatile-highlights-mode: t
>   recentf-mode: t
>   save-place-mode: t
>   global-so-long-mode: t
>   global-git-commit-mode: t
>   shell-dirtrack-mode: t
>   server-mode: t
>   envrc-global-mode: t
>   envrc-mode: t
>   gcmh-mode: t
>   global-hl-line-mode: t
>   hl-line-mode: t
>   winner-mode: t
>   smartparens-global-mode: t
>   smartparens-mode: t
>   ws-butler-global-mode: t
>   ws-butler-mode: t
>   global-emojify-mode: t
>   emojify-mode: t
>   undo-fu-session-global-mode: t
>   undo-fu-session-mode: t
>   undo-fu-mode: t
>   flycheck-popup-tip-mode: t
>   global-flycheck-mode: t
>   flycheck-mode: t
>   repeat-mode: t
>   delete-selection-mode: t
>   projectile-mode: t
>   +popup-mode: t
>   global-ligature-mode: t
>   ligature-mode: t
>   override-global-mode: t
>   general-override-mode: t
>   apheleia-global-mode: t
>   apheleia-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   prettify-symbols-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   window-divider-mode: t
>   size-indication-mode: t
>   column-number-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> /home/sylvain/.emacs.d/.local/straight/build-29.1/cmake-mode/cmake-mode
> hides /usr/share/emacs/site-lisp/cmake-mode
> /home/sylvain/.emacs.d/.local/straight/build-29.1/transient/transient
> hides /usr/share/emacs/29.1/lisp/transient
> /home/sylvain/.emacs.d/.local/straight/build-29.1/jsonrpc/jsonrpc
> hides /usr/share/emacs/29.1/lisp/jsonrpc
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-bind-key
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-bind-key
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-ensure
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-ensure
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-core
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-core
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package
> hides /usr/share/emacs/29.1/lisp/use-package/use-package
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-lint
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-lint
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-jump
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-jump
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-delight
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-delight
> /home/sylvain/.emacs.d/.local/straight/build-29.1/bind-key/bind-key
> hides /usr/share/emacs/29.1/lisp/use-package/bind-key
> /home/sylvain/.emacs.d/.local/straight/build-29.1/use-package/use-package-diminish
> hides /usr/share/emacs/29.1/lisp/use-package/use-package-diminish
> /home/sylvain/.emacs.d/.local/straight/build-29.1/xref/xref hides
> /usr/share/emacs/29.1/lisp/progmodes/xref
> /home/sylvain/.emacs.d/.local/straight/build-29.1/project/project
> hides /usr/share/emacs/29.1/lisp/progmodes/project
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-duration
> hides /usr/share/emacs/29.1/lisp/org/org-duration
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-man hides
> /usr/share/emacs/29.1/lisp/org/ol-man
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-indent hides
> /usr/share/emacs/29.1/lisp/org/org-indent
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lisp hides
> /usr/share/emacs/29.1/lisp/org/ob-lisp
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-habit hides
> /usr/share/emacs/29.1/lisp/org/org-habit
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-archive
> hides /usr/share/emacs/29.1/lisp/org/org-archive
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-julia hides
> /usr/share/emacs/29.1/lisp/org/ob-julia
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-mhe hides
> /usr/share/emacs/29.1/lisp/org/ol-mhe
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-goto hides
> /usr/share/emacs/29.1/lisp/org/org-goto
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-groovy hides
> /usr/share/emacs/29.1/lisp/org/ob-groovy
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-comint hides
> /usr/share/emacs/29.1/lisp/org/ob-comint
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-tempo hides
> /usr/share/emacs/29.1/lisp/org/org-tempo
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-inlinetask
> hides /usr/share/emacs/29.1/lisp/org/org-inlinetask
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-w3m hides
> /usr/share/emacs/29.1/lisp/org/ol-w3m
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-eshell hides
> /usr/share/emacs/29.1/lisp/org/ol-eshell
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-mouse hides
> /usr/share/emacs/29.1/lisp/org/org-mouse
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-emacs-lisp
> hides /usr/share/emacs/29.1/lisp/org/ob-emacs-lisp
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-natbib hides
> /usr/share/emacs/29.1/lisp/org/oc-natbib
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-footnote
> hides /usr/share/emacs/29.1/lisp/org/org-footnote
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-calc hides
> /usr/share/emacs/29.1/lisp/org/ob-calc
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-odt hides
> /usr/share/emacs/29.1/lisp/org/ox-odt
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-publish hides
> /usr/share/emacs/29.1/lisp/org/ox-publish
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox hides
> /usr/share/emacs/29.1/lisp/org/ox
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-rmail hides
> /usr/share/emacs/29.1/lisp/org/ol-rmail
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-lint hides
> /usr/share/emacs/29.1/lisp/org/org-lint
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-compat hides
> /usr/share/emacs/29.1/lisp/org/org-compat
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-loaddefs
> hides /usr/share/emacs/29.1/lisp/org/org-loaddefs
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-attach-git
> hides /usr/share/emacs/29.1/lisp/org/org-attach-git
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-beamer hides
> /usr/share/emacs/29.1/lisp/org/ox-beamer
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-shell hides
> /usr/share/emacs/29.1/lisp/org/ob-shell
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-timer hides
> /usr/share/emacs/29.1/lisp/org/org-timer
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ditaa hides
> /usr/share/emacs/29.1/lisp/org/ob-ditaa
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-fortran hides
> /usr/share/emacs/29.1/lisp/org/ob-fortran
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-org hides
> /usr/share/emacs/29.1/lisp/org/ob-org
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-bibtex hides
> /usr/share/emacs/29.1/lisp/org/oc-bibtex
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-python hides
> /usr/share/emacs/29.1/lisp/org/ob-python
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-agenda hides
> /usr/share/emacs/29.1/lisp/org/org-agenda
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-faces hides
> /usr/share/emacs/29.1/lisp/org/org-faces
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-eval hides
> /usr/share/emacs/29.1/lisp/org/ob-eval
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ref hides
> /usr/share/emacs/29.1/lisp/org/ob-ref
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-ascii hides
> /usr/share/emacs/29.1/lisp/org/ox-ascii
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-eww hides
> /usr/share/emacs/29.1/lisp/org/ol-eww
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-css hides
> /usr/share/emacs/29.1/lisp/org/ob-css
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-eshell hides
> /usr/share/emacs/29.1/lisp/org/ob-eshell
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-table hides
> /usr/share/emacs/29.1/lisp/org/ob-table
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-man hides
> /usr/share/emacs/29.1/lisp/org/ox-man
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-list hides
> /usr/share/emacs/29.1/lisp/org/org-list
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-colview
> hides /usr/share/emacs/29.1/lisp/org/org-colview
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-org hides
> /usr/share/emacs/29.1/lisp/org/ox-org
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-crypt hides
> /usr/share/emacs/29.1/lisp/org/org-crypt
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-basic hides
> /usr/share/emacs/29.1/lisp/org/oc-basic
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-scheme hides
> /usr/share/emacs/29.1/lisp/org/ob-scheme
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ruby hides
> /usr/share/emacs/29.1/lisp/org/ob-ruby
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-refile hides
> /usr/share/emacs/29.1/lisp/org/org-refile
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-octave hides
> /usr/share/emacs/29.1/lisp/org/ob-octave
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-forth hides
> /usr/share/emacs/29.1/lisp/org/ob-forth
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-mobile hides
> /usr/share/emacs/29.1/lisp/org/org-mobile
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-persist
> hides /usr/share/emacs/29.1/lisp/org/org-persist
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-plantuml
> hides /usr/share/emacs/29.1/lisp/org/ob-plantuml
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-dot hides
> /usr/share/emacs/29.1/lisp/org/ob-dot
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-protocol
> hides /usr/share/emacs/29.1/lisp/org/org-protocol
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-plot hides
> /usr/share/emacs/29.1/lisp/org/org-plot
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-keys hides
> /usr/share/emacs/29.1/lisp/org/org-keys
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-exp hides
> /usr/share/emacs/29.1/lisp/org/ob-exp
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-macro hides
> /usr/share/emacs/29.1/lisp/org/org-macro
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-maxima hides
> /usr/share/emacs/29.1/lisp/org/ob-maxima
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-ocaml hides
> /usr/share/emacs/29.1/lisp/org/ob-ocaml
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob hides
> /usr/share/emacs/29.1/lisp/org/ob
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-fold hides
> /usr/share/emacs/29.1/lisp/org/org-fold
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-feed hides
> /usr/share/emacs/29.1/lisp/org/org-feed
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-table hides
> /usr/share/emacs/29.1/lisp/org/org-table
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-tangle hides
> /usr/share/emacs/29.1/lisp/org/ob-tangle
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-capture
> hides /usr/share/emacs/29.1/lisp/org/org-capture
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lob hides
> /usr/share/emacs/29.1/lisp/org/ob-lob
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-R hides
> /usr/share/emacs/29.1/lisp/org/ob-R
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-awk hides
> /usr/share/emacs/29.1/lisp/org/ob-awk
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-irc hides
> /usr/share/emacs/29.1/lisp/org/ol-irc
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-icalendar
> hides /usr/share/emacs/29.1/lisp/org/ox-icalendar
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-bibtex hides
> /usr/share/emacs/29.1/lisp/org/ol-bibtex
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-core hides
> /usr/share/emacs/29.1/lisp/org/ob-core
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-element
> hides /usr/share/emacs/29.1/lisp/org/org-element
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-screen hides
> /usr/share/emacs/29.1/lisp/org/ob-screen
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lua hides
> /usr/share/emacs/29.1/lisp/org/ob-lua
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sass hides
> /usr/share/emacs/29.1/lisp/org/ob-sass
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-js hides
> /usr/share/emacs/29.1/lisp/org/ob-js
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-entities
> hides /usr/share/emacs/29.1/lisp/org/org-entities
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-attach hides
> /usr/share/emacs/29.1/lisp/org/org-attach
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sqlite hides
> /usr/share/emacs/29.1/lisp/org/ob-sqlite
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-texinfo hides
> /usr/share/emacs/29.1/lisp/org/ox-texinfo
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-id hides
> /usr/share/emacs/29.1/lisp/org/org-id
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-bbdb hides
> /usr/share/emacs/29.1/lisp/org/ol-bbdb
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-info hides
> /usr/share/emacs/29.1/lisp/org/ol-info
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sql hides
> /usr/share/emacs/29.1/lisp/org/ob-sql
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-perl hides
> /usr/share/emacs/29.1/lisp/org/ob-perl
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-csl hides
> /usr/share/emacs/29.1/lisp/org/oc-csl
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org hides
> /usr/share/emacs/29.1/lisp/org/org
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-doi hides
> /usr/share/emacs/29.1/lisp/org/ol-doi
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-cycle hides
> /usr/share/emacs/29.1/lisp/org/org-cycle
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-processing
> hides /usr/share/emacs/29.1/lisp/org/ob-processing
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-html hides
> /usr/share/emacs/29.1/lisp/org/ox-html
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-koma-letter
> hides /usr/share/emacs/29.1/lisp/org/ox-koma-letter
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-datetree
> hides /usr/share/emacs/29.1/lisp/org/org-datetree
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-fold-core
> hides /usr/share/emacs/29.1/lisp/org/org-fold-core
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol hides
> /usr/share/emacs/29.1/lisp/org/ol
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-clojure hides
> /usr/share/emacs/29.1/lisp/org/ob-clojure
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-pcomplete
> hides /usr/share/emacs/29.1/lisp/org/org-pcomplete
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-clock hides
> /usr/share/emacs/29.1/lisp/org/org-clock
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-java hides
> /usr/share/emacs/29.1/lisp/org/ob-java
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-matlab hides
> /usr/share/emacs/29.1/lisp/org/ob-matlab
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc-biblatex
> hides /usr/share/emacs/29.1/lisp/org/oc-biblatex
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-docview hides
> /usr/share/emacs/29.1/lisp/org/ol-docview
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-ctags hides
> /usr/share/emacs/29.1/lisp/org/org-ctags
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-makefile
> hides /usr/share/emacs/29.1/lisp/org/ob-makefile
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-version
> hides /usr/share/emacs/29.1/lisp/org/org-version
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-sed hides
> /usr/share/emacs/29.1/lisp/org/ob-sed
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/oc hides
> /usr/share/emacs/29.1/lisp/org/oc
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-haskell hides
> /usr/share/emacs/29.1/lisp/org/ob-haskell
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-macs hides
> /usr/share/emacs/29.1/lisp/org/org-macs
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ol-gnus hides
> /usr/share/emacs/29.1/lisp/org/ol-gnus
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-src hides
> /usr/share/emacs/29.1/lisp/org/org-src
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-gnuplot hides
> /usr/share/emacs/29.1/lisp/org/ob-gnuplot
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-C hides
> /usr/share/emacs/29.1/lisp/org/ob-C
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-lilypond
> hides /usr/share/emacs/29.1/lisp/org/ob-lilypond
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-md hides
> /usr/share/emacs/29.1/lisp/org/ox-md
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ob-latex hides
> /usr/share/emacs/29.1/lisp/org/ob-latex
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/org-num hides
> /usr/share/emacs/29.1/lisp/org/org-num
> /home/sylvain/.emacs.d/.local/straight/build-29.1/org/ox-latex hides
> /usr/share/emacs/29.1/lisp/org/ox-latex
> /home/sylvain/.emacs.d/.local/straight/build-29.1/eldoc/eldoc hides
> /usr/share/emacs/29.1/lisp/emacs-lisp/eldoc
> /home/sylvain/.emacs.d/.local/straight/build-29.1/map/map hides
> /usr/share/emacs/29.1/lisp/emacs-lisp/map
>
> Features:
> (shadow sort mail-extr emacsbug cl-print mm-archive gnutls
> network-stream url-cache url-http url-auth url-gw nsm magit-extras
> company-ispell company-dabbrev vc-hg vc-svn vc bug-reference vterm tramp
> tramp-loaddefs trampver tramp-integration files-x tramp-compat
> parse-time term ehelp vterm-module term/xterm xterm apheleia-core
> apheleia apheleia-utils tabify misearch multi-isearch anzu
> company-yasnippet elisp-demos helpful cc-langs cc-vars cc-defs trace
> edebug debug backtrace info-look info help-fns radix-tree elisp-refs
> consult-flycheck consult magit-bookmark bookmark vertico-directory
> mule-util smartparens-markdown markdown-mode edit-indirect goto-addr
> hide-mode-line org-eldoc writegood-mode toc-org org-superstar
> org-fancy-priorities org-appear mixed-pitch org-crypt org-indent
> image-file image-converter oc-basic ol-bibtex bibtex iso8601
> highlight-quoted rainbow-delimiters dired-aux diredfl dired-x disp-table
> spell-fu ispell yaml-mode git-gutter-fringe fringe-helper git-gutter
> vc-git vc-dispatcher jka-compr auto-minor-mode whitespace make-mode
> vertico-repeat pulse doom-themes-ext-org solaire-mode face-remap
> doom-one-theme doom-themes doom-themes-base persp-mode org-agenda
> org-roam-logseq org-roam-migrate org-roam-log org-roam-mode
> org-roam-capture org-roam-id org-roam-node org-roam-db
> emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
> org-capture org-attach smartparens-org org-yt org-element org-persist
> xdg org-id org-refile org-element-ast inline avl-tree org noutline
> outline ob-emacs-lisp org-table ob ob-tangle ol ob-ref ob-lob ob-table
> ob-exp org-macro org-src company-shell sh-script smie treesit executable
> org-keys oc ob-comint org-pcomplete org-list org-footnote org-entities
> org-faces cal-menu calendar cal-loaddefs emacsql-sqlite
> emacsql-sqlite-common emacsql emacsql-compiler magit-todos pcre2el rxt
> re-builder async magit-autoloads magit-submodule magit-blame magit-stash
> magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
> magit-remote magit-commit magit-sequence magit-notes magit-worktree
> magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
> magit-status magit magit-repos magit-apply magit-wip magit-log
> which-func magit-diff smerge-mode diff diff-mode magit-core
> magit-autorevert autorevert filenotify magit-margin magit-transient
> magit-process magit-mode doom-snippets doom-snippets-lib yasnippet
> elisp-mode doom-modeline doom-modeline-segments doom-modeline-env
> doom-modeline-core shrink-path f f-shortdoc flycheck-cask eros
> vi-tilde-fringe highlight-numbers parent-mode display-line-numbers
> hl-todo highlight-indent-guides color copilot copilot-balancer
> editorconfig editorconfig-core editorconfig-core-handle
> editorconfig-fnmatch s jsonrpc which-key savehist better-jumper
> nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon
> nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon
> nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon
> nerd-icons-data-powerline nerd-icons-data-octicon
> nerd-icons-data-pomicon nerd-icons-data-ipsicon company-box
> company-box-doc frame-local company-box-icons all-the-icons
> all-the-icons-faces data-material data-weathericons data-octicons
> data-fileicons data-faicons data-alltheicons company-capf company
> vertico orderless marginalia etags fileloop generator xref
> volatile-highlights recentf tree-widget wid-edit saveplace so-long
> git-commit magit-git magit-base magit-section cursor-sensor crm
> with-editor shell pcomplete transient server log-edit message sendmail
> yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068
> epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
> rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils
> gmm-utils mailheader pcvs-util add-log compat envrc inheritenv gcmh
> hl-line winner smartparens-config smartparens-text smartparens loadhist
> ws-butler emojify apropos tar-mode arc-mode archive-mode ht
> undo-fu-session undo-fu flycheck-popup-tip popup flycheck-package
> package-lint imenu finder finder-inf doom-packages package browse-url
> url-handlers flycheck find-func dash autosync-magit gptel gptel-openai
> url url-proxy url-privacy url-expand url-methods url-history url-cookie
> generate-lisp-file url-domsuf url-util url-parse auth-source eieio
> eieio-core password-cache json map url-vars mailcap repeat delsel
> projectile project byte-opt lisp-mnt grep compile text-property-search
> comint ansi-osc ansi-color ring ibuf-ext ibuffer ibuffer-loaddefs
> thingatpt let-alist ob-core org-cycle org-fold org-fold-core org-compat
> ob-eval org-version org-macs format-spec ligature derived edmacro kmacro
> use-package-bind-key bind-key dtrt-indent advice time-date comp
> comp-cstr warnings icons doom-editor doom-projects doom-ui easy-mmode
> doom-keybinds pp cl-extra help-mode use-package-core bytecomp
> byte-compile general tex-site rx realgud-recursive-autoloads doom-start
> doom-modules cl-seq doom doom-lib cl-macs cl-loaddefs cl-lib pcase gv
> harfbuzz jansson dynamic-modules subr-x rmc iso-transl tooltip cconv
> eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
> term/pgtk-win pgtk-win term/common-win pgtk-dnd tool-bar dnd fontset
> image regexp-opt fringe tabulated-list replace newcomment text-mode
> lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
> easymenu timer select scroll-bar mouse jit-lock font-lock syntax
> font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
> indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
> tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
> romanian slovak czech european ethiopic indian cyrillic chinese
> composite emoji-zwj charscript charprop case-table epa-hook
> jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
> theme-loaddefs faces cus-face macroexp files window text-properties
> overlay sha1 md5 base64 format env code-pages mule custom widget keymap
> hashtable-print-readable backquote threads dbusbind inotify
> dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
> lcms2 multi-tty make-network-process native-compile emacs)
>
> Memory information:
> ((conses 16 3245234 195176)
>  (symbols 48 82161 1)
>  (strings 32 684237 38311)
>  (string-bytes 1 18697768)
>  (vectors 16 212303)
>  (vector-slots 8 6473676 156957)
>  (floats 8 2362 1249)
>  (intervals 56 257960 1370)
>  (buffers 984 56))





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-08  7:51 ` Philip Kaludercic
@ 2023-11-08 16:30   ` Sylvain Bougerel
  2023-11-10 17:05     ` Sylvain Bougerel
  0 siblings, 1 reply; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-08 16:30 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: 66985

On Wed, Nov 8, 2023 at 3:51 PM Philip Kaludercic <philipk@posteo.net> wrote:
>
> What does it say when evaluating this on Emacs 29?
>
> Other values of interest
>
>   (package-installed-p 'seq '(2 0))   ;=> t
>   (package-installed-p 'seq '(2 23))  ;=> t
>   (package-installed-p 'seq '(2 24))  ;=> t
>   (package-installed-p 'seq '(2 25))  ;=> nil
>   (package-installed-p 'seq '(2 26))  ;=> nil
>   (package-installed-p 'seq '(2 100)) ;=> nil

This is what I got with "GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu,
GTK+ Version 3.24.38, cairo version 1.17.8)":

    (package-installed-p 'seq '(2 0)) ;=> t
    (package-installed-p 'seq '(2 23)) ;=> t
    (package-installed-p 'seq '(2 24)) ;=> nil
    (package-installed-p 'seq '(2 25)) ;=> nil
    (package-installed-p 'seq '(2 26)) ;=> nil
    (package-installed-p 'seq '(2 100)) ;=> nil


       - Sylvain





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-08 16:30   ` Sylvain Bougerel
@ 2023-11-10 17:05     ` Sylvain Bougerel
  2023-11-15 13:06       ` Sylvain Bougerel
                         ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-10 17:05 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: 66985

[-- Attachment #1: Type: text/plain, Size: 3758 bytes --]

> Here the issue shows itself, `seq` is now requested for installation,
> which is incorrect, since Emacs already have the latest version.

TL;DR I believe I have found the bug in `package-compute-transaction'.
It misses the
assignment to the newer version of the package that was already in the list of
packages to be installed.


Some details. The following 1-line change fixes it for me (added context around
for readability), in `package-compute-transaction':

       (when already
         (if (version-list-<= next-version (package-desc-version already))
             ;; `next-pkg' is already in `packages', but its position there
             ;; means it might be installed too late: remove it from there, so
             ;; we re-add it (along with its dependencies) at an earlier place
             ;; below (bug#16994).
             (if (memq already seen)     ;Avoid inf-loop on dependency cycles.
                 (message "Dependency cycle going through %S"
                          (package-desc-full-name already))
               (setq packages (delq already packages))
+              (setq next-version (package-desc-version already))
               (setq already nil))
           (error "Need package `%s-%s', but only %s is being installed"
                  next-pkg (package-version-join next-version)
                  (package-version-join (package-desc-version already)))))


The issue occurs in the following scenario:
    - Package A (version a), noted A(a), depends on packages B(z), then C(y)
    - Package C(y) depends on package B(x), which is an _older_
version than B(z)
    - Neither A(a), B(z) nor C(y) are installed (the state of B(x) is
irrelevant)

`package-compute-transaction' will consider first the requirement B(z) and push
it to PACKAGES; then the requirement C(y) is pushed. It will then consider
C(y)'s requirement B(x). Since B is ALREADY seen, it first deletes B(z) from
PACKAGES, expecting to push in front of PACKAGES later, in `cond''s body (so
that B is installed earlier than both A and C). **But it fails to set
NEXT-VERSION to the newer B(z) and retains B(x)'s older version instead.**
That's the edge-case of the bug.

The fix is to set NEXT-VERSION to the version of the equal or newer package,
which is always the one already present in PACKAGE, given the preceding `if'
condition.

In my case, this result in the strange disappearance of `seq' from PACKAGES when
`compat' is not installed, because the older version of `seq' is already
installed and it's enough to meet the requirement of one of the transitive
dependencies of `git-commit', which is `compat'. On the other end, if `compat'
is installed, it's requirements are not checked and thus `seq' remains in the
list.

I provided the format-patch for it in the attachment, but it's the
same single line
of code change as shown above. I have no knowledge on how to submit it other
than by this email, any guidance or direction is appreciated.



Though interestingly, that was actually not the root cause of my personal
problem. I didn't expect `seq' to be installed in the first place, it is
built-in and `package-install-upgrade-built-in' is `nil' on my setup. (I was
expecting to find an issue revolving around this, and stumbled on this one :) )

Do you think I have misunderstood the purpose of
`package-install-upgrade-built-in'? Should the `package-compute-transaction` be
fixed to take it into account? It is not too difficult to do, however I think
this would be a rather impacting change, as users may have gotten used to their
built-in packages dependencies being upgraded without friction, even when they
are built-in.

Looking for another opinion, I lack context on the purpose of
`package-install-upgrade-built-in`.

    - Sylvain

[-- Attachment #2: 0001-Fix-next-version-in-package-compute-transaction-bug-.patch --]
[-- Type: text/x-patch, Size: 992 bytes --]

From c6d40924d1bf3379308bfbef69acbab8e8877c4b Mon Sep 17 00:00:00 2001
From: Sylvain Bougerel <sylvain.bougerel.devel@gmail.com>
Date: Sat, 11 Nov 2023 00:14:41 +0800
Subject: [PATCH] Fix next-version in package-compute-transaction (bug#66985)

---
 lisp/emacs-lisp/package.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index e23a61c58a4..a8e263bc074 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1908,6 +1908,7 @@ SEEN is used internally to detect infinite recursion."
                 (message "Dependency cycle going through %S"
                          (package-desc-full-name already))
               (setq packages (delq already packages))
+              (setq next-version (package-desc-version already))
               (setq already nil))
           (error "Need package `%s-%s', but only %s is being installed"
                  next-pkg (package-version-join next-version)
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-10 17:05     ` Sylvain Bougerel
@ 2023-11-15 13:06       ` Sylvain Bougerel
  2023-11-15 13:30       ` Eli Zaretskii
  2023-11-16  7:25       ` Philip Kaludercic
  2 siblings, 0 replies; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-15 13:06 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: 66985

On Sat, Nov 11, 2023 at 1:05 AM Sylvain Bougerel
<sylvain.bougerel.devel@gmail.com> wrote:
> The issue occurs in the following scenario:
>     - Package A (version a), noted A(a), depends on packages B(z), then C(y)
>     - Package C(y) depends on package B(x), which is an _older_
> version than B(z)
>     - Neither A(a), B(z) nor C(y) are installed (the state of B(x) is
> irrelevant)
>

With a bit of time (est: a week or two), I can write a unit test and
make a patch with a better commit description that follows current
guidelines. Maybe the unit test will highlight the problem better? Let
me know if that will be appropriate/appreciated. My idea for the unit
test is to show that the sequence in which requirements are enumerated
should not have an effect on the resulting transaction, while it does
at the moment (in the specific case presented below - which is the
case I will test for).

      - Sylvain





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-10 17:05     ` Sylvain Bougerel
  2023-11-15 13:06       ` Sylvain Bougerel
@ 2023-11-15 13:30       ` Eli Zaretskii
  2023-11-16  7:25       ` Philip Kaludercic
  2 siblings, 0 replies; 11+ messages in thread
From: Eli Zaretskii @ 2023-11-15 13:30 UTC (permalink / raw)
  To: Sylvain Bougerel; +Cc: philipk, 66985

> Cc: 66985@debbugs.gnu.org
> From: Sylvain Bougerel <sylvain.bougerel.devel@gmail.com>
> Date: Sat, 11 Nov 2023 01:05:45 +0800
> 
> > Here the issue shows itself, `seq` is now requested for installation,
> > which is incorrect, since Emacs already have the latest version.
> 
> TL;DR I believe I have found the bug in `package-compute-transaction'.
> It misses the
> assignment to the newer version of the package that was already in the list of
> packages to be installed.

Philip, any comments or suggestions?





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-10 17:05     ` Sylvain Bougerel
  2023-11-15 13:06       ` Sylvain Bougerel
  2023-11-15 13:30       ` Eli Zaretskii
@ 2023-11-16  7:25       ` Philip Kaludercic
  2023-11-17  9:37         ` Sylvain Bougerel
  2 siblings, 1 reply; 11+ messages in thread
From: Philip Kaludercic @ 2023-11-16  7:25 UTC (permalink / raw)
  To: Sylvain Bougerel; +Cc: 66985

Sylvain Bougerel <sylvain.bougerel.devel@gmail.com> writes:

>> Here the issue shows itself, `seq` is now requested for installation,
>> which is incorrect, since Emacs already have the latest version.
>
> TL;DR I believe I have found the bug in `package-compute-transaction'.
> It misses the
> assignment to the newer version of the package that was already in the list of
> packages to be installed.
>
>
> Some details. The following 1-line change fixes it for me (added context around
> for readability), in `package-compute-transaction':
>
>        (when already
>          (if (version-list-<= next-version (package-desc-version already))
>              ;; `next-pkg' is already in `packages', but its position there
>              ;; means it might be installed too late: remove it from there, so
>              ;; we re-add it (along with its dependencies) at an earlier place
>              ;; below (bug#16994).
>              (if (memq already seen)     ;Avoid inf-loop on dependency cycles.
>                  (message "Dependency cycle going through %S"
>                           (package-desc-full-name already))
>                (setq packages (delq already packages))
> +              (setq next-version (package-desc-version already))
>                (setq already nil))
>            (error "Need package `%s-%s', but only %s is being installed"
>                   next-pkg (package-version-join next-version)
>                   (package-version-join (package-desc-version already)))))
>
>
> The issue occurs in the following scenario:
>     - Package A (version a), noted A(a), depends on packages B(z), then C(y)
>     - Package C(y) depends on package B(x), which is an _older_
> version than B(z)
>     - Neither A(a), B(z) nor C(y) are installed (the state of B(x) is
> irrelevant)
>
> `package-compute-transaction' will consider first the requirement B(z) and push
> it to PACKAGES; then the requirement C(y) is pushed. It will then consider
> C(y)'s requirement B(x). Since B is ALREADY seen, it first deletes B(z) from
> PACKAGES, expecting to push in front of PACKAGES later, in `cond''s body (so
> that B is installed earlier than both A and C). **But it fails to set
> NEXT-VERSION to the newer B(z) and retains B(x)'s older version instead.**
> That's the edge-case of the bug.
>
> The fix is to set NEXT-VERSION to the version of the equal or newer package,
> which is always the one already present in PACKAGE, given the preceding `if'
> condition.

This certainly makes sense, one just has to make sure that there aren't
any other edge-cases being broken by this change :/  I'll apply the
patch locally and test it over the next few days.

> In my case, this result in the strange disappearance of `seq' from PACKAGES when
> `compat' is not installed, because the older version of `seq' is already
> installed and it's enough to meet the requirement of one of the transitive
> dependencies of `git-commit', which is `compat'. On the other end, if `compat'
> is installed, it's requirements are not checked and thus `seq' remains in the
> list.
>
> I provided the format-patch for it in the attachment, but it's the
> same single line
> of code change as shown above. I have no knowledge on how to submit it other
> than by this email, any guidance or direction is appreciated.

A short commit like this can be manually applied, and attributed to you,
otherwise you should consult the CONTRIBUTING file in emacs.git for
notes on how to format a patch and the commit message.

> Though interestingly, that was actually not the root cause of my personal
> problem. I didn't expect `seq' to be installed in the first place, it is
> built-in and `package-install-upgrade-built-in' is `nil' on my setup. (I was
> expecting to find an issue revolving around this, and stumbled on this one :) )

> Do you think I have misunderstood the purpose of
> `package-install-upgrade-built-in'? Should the `package-compute-transaction` be
> fixed to take it into account? It is not too difficult to do, however I think
> this would be a rather impacting change, as users may have gotten used to their
> built-in packages dependencies being upgraded without friction, even when they
> are built-in.

That user option shouldn't affect this issue, it was added so that
package-install could install a newer version of a built-in package from
ELPA, but that doesn't affect dependencies IIRC.

> Looking for another opinion, I lack context on the purpose of
> `package-install-upgrade-built-in`.

If you are really interested, you can take a look at bug#62720.

>     - Sylvain

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: 66985@debbugs.gnu.org
>> From: Sylvain Bougerel <sylvain.bougerel.devel@gmail.com>
>> Date: Sat, 11 Nov 2023 01:05:45 +0800
>> 
>> > Here the issue shows itself, `seq` is now requested for installation,
>> > which is incorrect, since Emacs already have the latest version.
>> 
>> TL;DR I believe I have found the bug in `package-compute-transaction'.
>> It misses the
>> assignment to the newer version of the package that was already in the list of
>> packages to be installed.
>
> Philip, any comments or suggestions?

Nothing special, other than that I had been planning to re-write the
function anyway, to make it simpler and re-usable by package-vc.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-16  7:25       ` Philip Kaludercic
@ 2023-11-17  9:37         ` Sylvain Bougerel
  2023-11-27 17:18           ` Philip Kaludercic
  0 siblings, 1 reply; 11+ messages in thread
From: Sylvain Bougerel @ 2023-11-17  9:37 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: 66985

On Thu, Nov 16, 2023 at 3:25 PM Philip Kaludercic <philipk@posteo.net> wrote:
> A short commit like this can be manually applied, and attributed to you,
> otherwise you should consult the CONTRIBUTING file in emacs.git for
> notes on how to format a patch and the commit message.

Thanks Philip, I'll read it for future reference. Feel free to make
the change as you see fit (as for attribution: this email chain is
enough)

> If you are really interested, you can take a look at bug#62720.

Thanks, I got the background now. I don't think it's necessary to go
further then.

>
> Nothing special, other than that I had been planning to re-write the
> function anyway, to make it simpler and re-usable by package-vc.

Let me know if you intend to maintain the same interface for
package-compute-transaction, in this case I can contribute a unit
test.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case)
  2023-11-17  9:37         ` Sylvain Bougerel
@ 2023-11-27 17:18           ` Philip Kaludercic
  0 siblings, 0 replies; 11+ messages in thread
From: Philip Kaludercic @ 2023-11-27 17:18 UTC (permalink / raw)
  To: Sylvain Bougerel; +Cc: 66985

Sylvain Bougerel <sylvain.bougerel.devel@gmail.com> writes:

> On Thu, Nov 16, 2023 at 3:25 PM Philip Kaludercic <philipk@posteo.net> wrote:
>> A short commit like this can be manually applied, and attributed to you,
>> otherwise you should consult the CONTRIBUTING file in emacs.git for
>> notes on how to format a patch and the commit message.
>
> Thanks Philip, I'll read it for future reference. Feel free to make
> the change as you see fit (as for attribution: this email chain is
> enough)
>
>> If you are really interested, you can take a look at bug#62720.
>
> Thanks, I got the background now. I don't think it's necessary to go
> further then.

1+

>>
>> Nothing special, other than that I had been planning to re-write the
>> function anyway, to make it simpler and re-usable by package-vc.
>
> Let me know if you intend to maintain the same interface for
> package-compute-transaction, in this case I can contribute a unit
> test.

I'd prefer to change the interface in the future, because part of the
confusion is precisely the confusing recursion.





^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-11-27 17:18 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-07 13:11 bug#66985: 29.1; Issue with `package.el` upgrading builtin (edge-case) Sylvain Bougerel
2023-11-07 15:27 ` Sylvain Bougerel
2023-11-08  1:01   ` Sylvain Bougerel
2023-11-08  7:51 ` Philip Kaludercic
2023-11-08 16:30   ` Sylvain Bougerel
2023-11-10 17:05     ` Sylvain Bougerel
2023-11-15 13:06       ` Sylvain Bougerel
2023-11-15 13:30       ` Eli Zaretskii
2023-11-16  7:25       ` Philip Kaludercic
2023-11-17  9:37         ` Sylvain Bougerel
2023-11-27 17:18           ` Philip Kaludercic

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).