From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Philip Kaludercic Newsgroups: gmane.emacs.devel Subject: Re: Proposal for 'package-isolate' command Date: Thu, 17 Aug 2023 18:17:36 +0000 Message-ID: <87y1i9fs8v.fsf@posteo.net> References: <87r0oftgye.fsf@posteo.net> <87350vt1wz.fsf@posteo.net> <871qgen1ln.fsf@posteo.net> <87edke4mou.fsf@posteo.net> <87wmy6kuan.fsf@posteo.net> <87wmy6w070.fsf@posteo.net> <87zg2sjleg.fsf@posteo.net> <87pm3nlbm7.fsf@posteo.net> <87zg2ri9g9.fsf@posteo.net> <87bkf7b7ls.fsf@posteo.net> <87v8dfi6zy.fsf@posteo.net> <877cpvb361.fsf@posteo.net> <87pm3mj0ot.fsf_-_@posteo.net> <87v8de9qel.fsf@posteo.net> <87pm3mgj8d.fsf@posteo.net> <87a5upojjc.fsf@posteo.net> <871qg1oi61.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="16404"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Thierry Volpiatto Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Aug 17 20:18:40 2023 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 1qWhZv-00041z-RU for ged-emacs-devel@m.gmane-mx.org; Thu, 17 Aug 2023 20:18:40 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qWhZ5-0007Fe-Q1; Thu, 17 Aug 2023 14:17:47 -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 1qWhZ2-0007FT-UQ for emacs-devel@gnu.org; Thu, 17 Aug 2023 14:17:45 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qWhYy-0003k6-EJ for emacs-devel@gnu.org; Thu, 17 Aug 2023 14:17:44 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 86209240027 for ; Thu, 17 Aug 2023 20:17:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1692296258; bh=S908MrUsNK1ACg5AiF9yp3erd+6jkwNzIgk644i5F28=; h=From:To:Cc:Subject:Autocrypt:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=iJyULGodpL4v427h7TiEn2l/UoOO7zv4+aDxvXqjOCVk9/ONZF1SeINkhcM/Rz4Dw M9da+ZFxCaxskk/Sjy5p17zYyMMaJALPB48bw1iIhHuq7pX2e19LK5Ef15crQ7UYKV JAzPXJBNtL2+C7MCvRRKwRbgYf5fHfV40ZjcsWe+7idLbnOq/y/zCOuK3YTgEvX4HS mdOGxDtQEqwN198gjJi9SKLQTa5KMUGvIqYrSltOO0oYYoN8guQMBS5adQvjNaWw2v Uh4LDddxm68a48JbrxiS6wHInu/LoGu63j9hPg6QEeXxa6iG1CkFEBON2h80JYluzm 1g+wDa3d4Ocag== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RRYBp0Zkkz6tvZ; Thu, 17 Aug 2023 20:17:38 +0200 (CEST) In-Reply-To: <871qg1oi61.fsf@posteo.net> (Thierry Volpiatto's message of "Thu, 17 Aug 2023 14:28:40 +0000") Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM Received-SPF: pass client-ip=185.67.36.65; envelope-from=philipk@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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:308876 Archived-At: Thierry Volpiatto writes: > Thierry Volpiatto writes: > >> Philip Kaludercic writes: >> >>> Thierry Volpiatto writes: >>> >>>> Philip Kaludercic writes: >>>> >>>>>> No don't worry, helm will work in any cases, thanks. >>>>> >>>>> OK, in that case I'd prefer to keep it the way it is. >>>> >>>> Ok, fair enough. >>>> >>>>>>> Mainly to avoid issues with packages that might place files in the >>>>>>> configuration directory, which might hinder the reproduction of bug= s. >>>>>> >>>>>> Hmm, maybe, I don't have an example in mind though. >>>>> >>>>> It might not be the best example, but my package autocrypt generates a >>>>> file in the `user-emacs-directory'. If we don't use --init-directory, >>>>> the existing file would be re-used. >>>> >>>> Ok, for such case it is easy to either rename the file temporarily to >>>> foo_ori or foo_save or to set the variable handling the file (generally >>>> it is not harcoded) to something else. But another issue is if your >>>> isolated package needs the history file or tramp file or whatever file >>>> ~/.emacs.d is handling; e.g. a package providing completion on history. >>>> I still think it is more handy to reuse user-emacs-directory and its >>>> elpa directory where the packages are already installed. >>> >>> How about this patch, that will use a temporary directory when >>> `package-isolate' is invoked with a prefix argument (not sure what the >>> default should be, I guess reusing `user-emacs-directory' is less >>> surprising): >> >> However it is not working properly: >> >> Tried to isolate two packages, osm and w3m, and osm use compat as >> dependency: >> >> Unable to activate package =E2=80=98osm=E2=80=99. >> Required package =E2=80=98compat-29.1.4.0=E2=80=99 is unavailable > > Forget it, it is working properly, just forget you had modified > package--dependencies as well. > Sorry for the noise. It was either that or a new function had to be added, not sure which approach is worse. The current implementation seems to have been hastily added by Lars last year, and it is a bit regrettable in retrospect. It would be possible to modify my change, and have the function always return package-desc objects, since the function is only used in one other spot in another part of the file. While there might be others (packages or individuals) that depend on the function behaving the way it does, but on the other hand, convention designates it as being an "internal" function. Thierry Volpiatto writes: > Philip Kaludercic writes: > >> Thierry Volpiatto writes: >> >>> Hello Philip, >>> >>> Philip Kaludercic writes: >>> >>>> Thierry Volpiatto writes: >>>> >>>>> Philip Kaludercic writes: >>>>> >>>>>>> No don't worry, helm will work in any cases, thanks. >>>>>> >>>>>> OK, in that case I'd prefer to keep it the way it is. >>>>> >>>>> Ok, fair enough. >>>>> >>>>>>>> Mainly to avoid issues with packages that might place files in the >>>>>>>> configuration directory, which might hinder the reproduction of bu= gs. >>>>>>> >>>>>>> Hmm, maybe, I don't have an example in mind though. >>>>>> >>>>>> It might not be the best example, but my package autocrypt generates= a >>>>>> file in the `user-emacs-directory'. If we don't use --init-director= y, >>>>>> the existing file would be re-used. >>>>> >>>>> Ok, for such case it is easy to either rename the file temporarily to >>>>> foo_ori or foo_save or to set the variable handling the file (general= ly >>>>> it is not harcoded) to something else. But another issue is if your >>>>> isolated package needs the history file or tramp file or whatever file >>>>> ~/.emacs.d is handling; e.g. a package providing completion on histor= y. >>>>> I still think it is more handy to reuse user-emacs-directory and its >>>>> elpa directory where the packages are already installed. >>>> >>>> How about this patch, that will use a temporary directory when >>>> `package-isolate' is invoked with a prefix argument (not sure what the >>>> default should be, I guess reusing `user-emacs-directory' is less >>>> surprising): >>> >>> Yes. >>> >>> Isn't these two loop the same? (save one loop) >> >> No, because that assumes that we are only interested in the first >> package descriptor in every package--alist entry, while there might be >> multiple. > > Ah ok. > >>> (cl-loop for p in (cl-loop for p in (package--alist) append (cdr p)) >>> unless (package-built-in-p p) >> >> Also, do we want this or wouldn't it be useful to be able to force a >> built-in package being loaded? > > Some packages seems to require a specific version of a package for their > dependency e.g. seq, by excluding it the package may not work correctly, > this is my understanding but I may be wrong. Also perhaps the package > e.g. seq is selected later when computing dependencies but maybe user > wants to select a particular version manually in the first place? The current algorithm should pick the first package in the package alist that satisfies the necessary dependencies. Perhaps that should be re-thought or the selection should be more clever, e.g. if the user explicitly specifies a dependency with a version, then it should be preferred to whatever other dependency might be determined, at the possible expense of triggering runtime bugs.