GNU bug report logs - #72453
29.4; "use-package" macro does not load all expected related files

Previous Next

Package: emacs;

Reported by: Derek Upham <derek_upham <at> mailfence.com>

Date: Sat, 3 Aug 2024 21:59:01 UTC

Severity: normal

Merged with 72293

Found in version 29.4

Fixed in version 31.1

Done: Stefan Kangas <stefankangas <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Stefan Kangas <stefankangas <at> gmail.com>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#72453: closed (29.4; "use-package" macro does not load all
 expected related files)
Date: Tue, 20 Aug 2024 00:01:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Mon, 19 Aug 2024 16:58:22 -0700
with message-id <CADwFkmkw2p_NHozrfE7NpO3SnzaDN8YbRXX=k+mYCBS4mBcKPA <at> mail.gmail.com>
and subject line Re: bug#72453: 29.4; "use-package" macro does not load all expected related files
has caused the debbugs.gnu.org bug report #72453,
regarding 29.4; "use-package" macro does not load all expected related files
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
72453: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72453
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Derek Upham <derek_upham <at> mailfence.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.4; "use-package" macro does not load all expected related files
Date: Sat, 03 Aug 2024 14:58:08 -0700
This problem exists for the current emacs-30 branch HEAD.

The following "init.el" file contents provide a test case:

  (defun use-package-ensure-trace (name args state)
    (warn "use-package-ensure-trace %s %s %s" name args state)
    t)

  ;; (require 'use-package)

  (setq use-package-ensure-function 'use-package-ensure-trace)
  (setq use-package-always-ensure t)

  (use-package faces)
  (use-package ansi-color)
  (use-package files :ensure t)
  (use-package rx)
  (use-package avoid)

Place it in a scratch directory "use-package-ensure-test" and invoke
Emacs with, for example:

  emacs --init-directory use-package-ensure-test

The init file sets use-package-always-ensure to true, and we expect
trace warnings to show up for each use-package invocation.  In fact, we
only see them for the third and beyond.

 Warning (emacs): use-package-ensure-trace files (t) nil
 Warning (emacs): use-package-ensure-trace rx (t) nil
 Warning (emacs): use-package-ensure-trace avoid (t) nil

Uncomment the "require" line in the init file and we see all of the
traces that we expect:

 Warning (emacs): use-package-ensure-trace faces (t) nil
 Warning (emacs): use-package-ensure-trace ansi-color (t) nil
 Warning (emacs): use-package-ensure-trace files (t) nil
 Warning (emacs): use-package-ensure-trace rx (t) nil
 Warning (emacs): use-package-ensure-trace avoid (t) nil

The root cause is the structure of the "use-package/use-package*.el"
libraries.  The "use-package" macro exists in "use-package-core.el", and
has an autoload.  When Emacs evalutes a use-package form, Emacs loads
"use-package-core.el" only.  It does not load any of the other
"use-package*.el" components.  That means that Emacs doesn't evaluate
any of the `add-to-list' forms at the bottom of "use-package-ensure.el".
As a result, the use-package-defaults mechanism doesn't start out with
the expected :ensure or :pin behaviors.

But the first time we refer to an :ensure property explicitly, that is
enough to trigger the autoload of "use-package-handler/:ensure", which
loads the file and sets up the defaults.  All later invocations run the
:ensure checks as expected.

Moving the "use-package" macro into the top-level "use-package" file
should fix the problem.  The "use-package" file explicitly loads the
other files, which sets up all of the defaults.



In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.42,
 cairo version 1.18.0) of 2024-06-29, modified by Debian built on sbuild
Windowing system distributor 'The X.Org Foundation', version 11.0.12101011
System Description: Debian GNU/Linux trixie/sid

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/29.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/29.4/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --with-cairo --with-x=yes
 --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -Werror=implicit-function-declaration
 -ffile-prefix-map=/build/reproducible-path/emacs-29.4+1=. -fstack-protector-strong
 -fstack-clash-protection -Wformat -Werror=format-security
 -fcf-protection -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2'
 LDFLAGS=-Wl,-z,relro'

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

-- 
Derek Upham
derek_upham <at> mailfence.com


[Message part 3 (message/rfc822, inline)]
From: Stefan Kangas <stefankangas <at> gmail.com>
To: Derek Upham <derek_upham <at> mailfence.com>
Cc: 72453-done <at> debbugs.gnu.org
Subject: Re: bug#72453: 29.4; "use-package" macro does not load all expected
 related files
Date: Mon, 19 Aug 2024 16:58:22 -0700
Version: 31.1

Derek Upham <derek_upham <at> mailfence.com> writes:

> I’m seeing the outputs that we expect:
>
>  Warning (emacs): use-package-ensure-trace faces (t) nil
>  Warning (emacs): use-package-ensure-trace ansi-color (t) nil
>  Warning (emacs): use-package-ensure-trace files (t) nil
>  Warning (emacs): use-package-ensure-trace rx (t) nil
>  Warning (emacs): use-package-ensure-trace avoid (t) nil

Thanks for testing.

So I've pushed this to master as commit 644d2a83316.  I'm consequently
closing this bug report.


This bug report was last modified 263 days ago.

Previous Next


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