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 11:58:28 -0400 Message-ID: References: <87y1adrria.fsf@localhost> <87o77zbs4j.fsf@localhost> <871q4us0l9.fsf@localhost> <87msniqhel.fsf@localhost> <87h6dqqaqp.fsf@localhost> <87h6dp9cde.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="401"; 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 17:59:13 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 1sJxiL-000AMz-96 for ged-emacs-devel@m.gmane-mx.org; Wed, 19 Jun 2024 17:59:13 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sJxhj-00059y-4q; Wed, 19 Jun 2024 11:58:35 -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 1sJxhh-00059S-OW for emacs-devel@gnu.org; Wed, 19 Jun 2024 11:58:33 -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 1sJxhf-0003GG-Rx for emacs-devel@gnu.org; Wed, 19 Jun 2024 11:58:33 -0400 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 2CC5344227D; Wed, 19 Jun 2024 11:58:30 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1718812708; bh=G9JI7pzdhvAkcBlg2vkn9+mpe8sOmdLUdehFa5zkOdY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=SkEVX9aWMo6Oaej1bVXzqfS2VPCrY63qjVveaXvhyC20ALyxZFJkATMf0J+HJ6TSG GIk5tT88N4wqpxl/XtkWWfLXA8q3pG37+ycyMyDCAlnC257GnrdNf8nHV3Gm7l/wwX 6AWtWAZyQwMf+WeKyXV3CVTy2RVMf4x5FkZq90Je1fwEv/UN7Z3BhNcfiB39fB/1PG 53q2dpIj5MULZ3/J5wJ8cveG4OadVyyhTtUALUoJz0Ch6H//xQwuZFjCyA1RTFaf98 9JXG1qWjYdwO8tkaGI6FlHCGl1NrnWAvje3I1lZVqUCa18N9ATifRmbUSouDoupJPm WcGGk2IRQlz3A== Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id ACF62441CEB; Wed, 19 Jun 2024 11:58:28 -0400 (EDT) Original-Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9C28C12033B; Wed, 19 Jun 2024 11:58:28 -0400 (EDT) In-Reply-To: <87h6dp9cde.fsf@localhost> (Ihor Radchenko's message of "Wed, 19 Jun 2024 15:32:45 +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:320300 Archived-At: >>> May an approach like `require-with-check' be used here? Then, the >>> reloading only occurs when there is a potential mixing of package >>> versions. >> >> Could be, tho I'm not sure exactly what "an approach like >> `require-with-check`" would look like. > > Something like > > (defun package-activate-1... > ... > > (let ((autoload-feature (intern (format "%s-autoloads" > (package-desc-name pkg-desc))))) > (when (and (featurep autoload-feature) > (require-with-check autoload-feature nil 'reload)) > ;; If pkg-autoload.el is already loaded from a different path, > ;; reload the package. > (warn ...) > (setq reload t))) > > (when reload > (package--reload-previously-loaded pkg-desc)) > > (with-demoted-errors "Error loading autoloads: %s" > (load (package--autoloads-file-name pkg-desc) nil t)) Hmm... I wonder when that `featurep` test would trigger, tho. E.g. for Org usually the "old already loaded Org" is the one from Emacs which doesn't come with an `org-autoloads.el`. As for the case where we've already loaded an older version of an ELPA package, this requires two versions of the same ELPA package which is unusual (except during an upgrade, but that case already passes the `reload` arg). Stefan