Subject: Re: bug#76978: 31.0.50; Archive information not displayed for installed packages in *Packages* buffer

From: Philip Kaludercic <[email-masked]>
Date: Sun, 16 Mar 2025 09:42:57 +0000

(Tip: When creating a bug report that you assume specific people are
interested in, adding a X-Debuggs-CC header will send the people a
message and add them directly to the CCs.)

david <[email-masked]> writes:

> When a package is installed or is a dependency, the "Archive" column in
> the *Packages* buffer does not display the archive information.  This
> happens because the function `describe-package-1` in `package.el` skips
> the Archive section for installed packages due to the following
> conditional check:
>
> (unless (and pkg-dir (not archive)) ; Installed pkgs don't have archive.
>   (package--print-help-section "Archive"
>     (or archive "n/a")))
>
> The expected behavior is that the "Archive" column should display the
> archive name (e.g., "gnu", "nongnu", "other unofficial archive") for
> packages in the installed or dependency status.  This would be helpful
> because:
>
> 1. Traceability: It would allow users to easily identify the source archive
>    of a package, which is useful for debugging, auditing, and understanding
>    the package's origin.
>
> 2. Security: It would provide users with additional context about the
>    package's source, helping them make informed decisions about the code
>    they use.
>
> 3. Consistency: Archive information is part of the package metadata, and
>    displaying it consistently would improve the user experience by making
>    this information readily available.
>
> Currently, the archive information is not displayed for installed or
> dependency packages, which makes it harder to track the source of these
> packages.  This behavior is implemented in the `describe-package-1`
> function in `package.el`, starting around line 2890.  A review of this
> behavior would be appreciated to ensure users have access to this helpful
> metadata.

As mentioned in another thread, my suggestion to solve this issue is to
track the installation-source in the `package-desc-extras' plist.  This
seems to be the least invasive approach I can think of, which should be
simple to implement.

The question then is how and where to display the installation-source?.

>
> In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>  3.24.43, cairo version 1.18.2) of 2025-02-26 built on fedora
> Repository revision: 8c165834913bb0dca214acc4b82ba1d9d4ac0a82
> Repository branch: master
> System Description: Fedora Linux 41 (Workstation Edition)
>
> Configured using:
>  'configure --with-imagemagick --with-pgtk --with-tree-sitter
>  --with-mailutils --with-sound=yes --with-pdumper=yes
>  --with-dumping=pdumper --with-file-notification=yes'
>
> Configured features:
> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
> IMAGEMAGICK JPEG LIBOTF LIBSELINUX 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 $LANG: en_US.UTF-8
>   value of $XMODIFIERS: @im=ibus
>   locale-coding-system: utf-8-unix
>
> Major mode: Lisp Interaction
>
> Minor modes in effect:
>   tooltip-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   show-paren-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   minibuffer-regexp-mode: t
>   line-number-mode: t
>   indent-tabs-mode: t
>   transient-mark-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>
> Load-path shadows:
> None found.
>
> Features:
> (shadow sort mail-extr emacsbug lisp-mnt mm-archive message sendmail
> yank-media dired dired-loaddefs rfc822 mml mml-sec epa derived gnus-util
> time-date mailabbrev gmm-utils mailheader mm-decode mm-bodies mm-encode
> mail-utils mule-util cus-edit pp cus-start cus-load wid-edit gnutls
> network-stream url-cache url-http url-auth mail-parse rfc2231 rfc2047
> rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm puny compile
> text-property-search comint ansi-osc ansi-color ring comp-run
> comp-common rx epg rfc6068 epg-config display-line-numbers finder-inf
> package browse-url xdg url url-proxy url-privacy url-expand url-methods
> url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
> url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs icons
> password-cache json subr-x map byte-opt gv bytecomp byte-compile
> url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
> electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
> term/pgtk-win pgtk-win term/common-win touch-screen 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
> multi-tty move-toolbar make-network-process tty-child-frames
> native-compile emacs)
>
> Memory information:
> ((conses 16 309513 44932) (symbols 48 11458 0) (strings 32 55510 3235)
>  (string-bytes 1 1431141) (vectors 16 20605)
>  (vector-slots 8 250601 12665) (floats 8 225 47)
>  (intervals 56 25047 0) (buffers 992 12))