From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: sbaugh@catern.com Newsgroups: gmane.emacs.devel Subject: Automatically saving package sources Date: Fri, 02 Feb 2024 15:01:56 +0000 Message-ID: <87il367vvf.fsf@catern.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="6180"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: emacs-devel@gnu.org Cancel-Lock: sha1:39ykPQ6sQkww6h4wmFbG0CgWN70= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Feb 02 16:29:01 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 1rVvTR-0001KF-LW for ged-emacs-devel@m.gmane-mx.org; Fri, 02 Feb 2024 16:29:01 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rVvTE-0002Oj-05; Fri, 02 Feb 2024 10:28:48 -0500 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 1rVv5c-0004AC-Et for emacs-devel@gnu.org; Fri, 02 Feb 2024 10:04:24 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rVv5a-00062K-H1 for emacs-devel@gnu.org; Fri, 02 Feb 2024 10:04:23 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1rVv5X-0009R8-MO for emacs-devel@gnu.org; Fri, 02 Feb 2024 16:04:19 +0100 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 02 Feb 2024 10:28:45 -0500 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:315755 Archived-At: It is nice for installed ELPA packages to be reinstalled when Emacs is upgraded or changed, since there can be changes to autoload generation, the byte compiler, the native compiler, or other things which will change the output from the package installation. Furthermore, it is nice (where possible) for this reinstallation to happen with the same version of the package rather than by fetching the latest version from ELPA. This minimizes the number of changes that happen at once. However, right now there is no easy way to reinstall a package from the same sources it was originally installed from, because those sources are not saved separately from the package itself. They are all mixed together in the installed package directory. This makes it impossible to produce a "clean slate" environment for reinstalling the package, which (since packages can create arbitrary files during byte-compilation) means the package can't be reinstalled in a way that's identical to its original installation. If package.el supported saving the package source separately, however, it could simply reinstall from that. I would like to add an option package-save-sources which makes package.el automatically save the package source for the currently installed package version in a separate directory. Perhaps in ~/.emacs.d/elpa-sources. When package-save-sources is enabled, then package-reinstall would reinstall a package from the saved source rather than upgrading the package. package-upgrade would delete the saved source and fetch a new version. Does this seem like a reasonable feature to add? As an additional benefit, elpa-sources would be useful for reviewing changes in the source when upgrading packages. It could be optionally maintained as a VCS repository, with packages saved to a constant path based on their name (e.g. elpa-sources/xref.el instead of elpa-sources/xref-1.2.3/xref.el). Then a VCS could be used to review the diff resulting from an upgrade. This would be useful for any user who wants to scrutinize package code changes before installing them.