From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: pkg-autoloads.el vs. pkg-loaddefs.el Date: Wed, 19 Jun 2024 16:35:56 -0400 Message-ID: References: <87y1adrria.fsf@localhost> <87o77zbs4j.fsf@localhost> <871q4us0l9.fsf@localhost> <87msniqhel.fsf@localhost> <87h6dqqaqp.fsf@localhost> <87h6dp9cde.fsf@localhost> <8734p8aomr.fsf@localhost> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35270"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: emacs-devel@gnu.org To: Ihor Radchenko Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Jun 19 22:36:55 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sK235-0008su-8P for ged-emacs-devel@m.gmane-mx.org; Wed, 19 Jun 2024 22:36:55 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sK22G-0004iC-4x; Wed, 19 Jun 2024 16:36:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sK22F-0004i0-1k for emacs-devel@gnu.org; Wed, 19 Jun 2024 16:36:03 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sK22D-00055l-94 for emacs-devel@gnu.org; Wed, 19 Jun 2024 16:36:02 -0400 Original-Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7BE90100061; Wed, 19 Jun 2024 16:35:58 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1718829357; bh=m4/SRFR6PoxyBIcKH4a7P/tcOHvrbLdC0/XHY56CZEY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=bqdBZpKBpNhwmh4rB7gpLefT+rDsHNR8Mk/vt8UBVgUuAl1vtasa0a7ds4WLaFvHW 8b9hdsU+4GKvyvQYiSUXQ9zJA6Pd4/gFioI6QQ96ZtZ1+wgIu/sDoLFB1kPLyE7N0w 1WbyRLoXt5hSd00POdS7Gu8uwEM6cJp6FjPVX+5zsy821HSeQlZ7dJ1ul2SRpojjhF TdOAM0Mxao6dFcNqyXkDI6Ysf44tFe5J+sgS8k+DrDbOO9vqEsGvO5/RumvINGgSmS nQIrcaFA6iVpCJXAOoXwzh7RgWZB2pXa253EioTyGq3Wpcu27YhhnO40s4DlNh2KbE 4J9Bhk8xR9Ovw== Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 3E18810002E; Wed, 19 Jun 2024 16:35:57 -0400 (EDT) Original-Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 2BA94120495; Wed, 19 Jun 2024 16:35:57 -0400 (EDT) In-Reply-To: <8734p8aomr.fsf@localhost> (Ihor Radchenko's message of "Wed, 19 Jun 2024 16:22:36 +0000") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:320302 Archived-At: > Right. > Maybe org-loaddefs.el should (provide 'org-autoloads)? And same for > other built-in packages. Or there might be a token pkg-autoloads.el in > the tree for built-in packages. Maybe we can use `package-builtin-versions`? How 'bout a patch like the one below? Stefan diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index fac824d44a4..7c534542503 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -837,11 +837,13 @@ package--library-stem (unless (equal file result) (throw 'done result)))))) -(defun package--reload-previously-loaded (pkg-desc) +(defun package--reload-previously-loaded (pkg-desc &optional warn) "Force reimportation of files in PKG-DESC already present in `load-history'. New editions of files contain macro definitions and redefinitions, the overlooking of which would cause -byte-compilation of the new package to fail." +byte-compilation of the new package to fail. +If WARN is a string, display a warning (using WARN as a format string) +before reloading the files." (with-demoted-errors "Error in package--load-files-for-activation: %s" (let* (result (dir (package-desc-dir pkg-desc)) @@ -877,6 +879,10 @@ package--reload-previously-loaded (unless (equal (file-name-base library) (format "%s-autoloads" (package-desc-name pkg-desc))) (push (cons (expand-file-name library dir) recent-index) result)))) + (when (and result warn) + (display-warning 'package + (format warn (package-desc-name pkg-desc) + (mapcar #'car result)))) (mapc (lambda (c) (load (car c) nil t)) (sort result (lambda (x y) (< (cdr x) (cdr y)))))))) @@ -904,8 +910,11 @@ package-activate-1 (if (listp package--quickstart-pkgs) ;; We're only collecting the set of packages to activate! (push pkg-desc package--quickstart-pkgs) - (when reload - (package--reload-previously-loaded pkg-desc)) + (when (or reload (assq name package--builtin-versions)) + (package--reload-previously-loaded + pkg-desc (unless reload + "Package %S is activated too late. +The following files have already been loaded: %S"))) (with-demoted-errors "Error loading autoloads: %s" (load (package--autoloads-file-name pkg-desc) nil t))) ;; Add info node.