From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9_?= =?UTF-8?Q?=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2?= via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#63757: 29.0.91 order of package paths changed: random old versions of packages in load-path Date: Mon, 5 Jun 2023 00:47:43 +1000 Message-ID: References: <83y1l7gzqw.fsf@gnu.org> <87ilcb2p1l.fsf@posteo.net> <87sfb8g85v.fsf@posteo.net> <83a5xf7pi5.fsf@gnu.org> <87ttvnoehl.fsf@posteo.net> <8335377iyo.fsf@gnu.org> <87h6rnoa8v.fsf@posteo.net> <83v8g35ybo.fsf@gnu.org> <87cz2bo3qu.fsf@posteo.net> <83pm6b5t1i.fsf@gnu.org> <878rczo28v.fsf@posteo.net> <83o7lv5sjc.fsf@gnu.org> <874jnno1bi.fsf@posteo.net> <83mt1f5rab.fsf@gnu.org> <87zg5fmkgk.fsf@posteo.net> <83fs775mgy.fsf@gnu.org> Reply-To: =?UTF-8?Q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9_?= =?UTF-8?Q?=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2?= Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="00000000000006266405fd4edf03" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="757"; mail-complaints-to="usenet@ciao.gmane.io" Cc: philipk@posteo.net, 63757@debbugs.gnu.org, monnier@iro.umontreal.ca To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jun 04 16:49:12 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1q5p2d-000AaP-P8 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 04 Jun 2023 16:49:11 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q5p2V-00051S-Ui; Sun, 04 Jun 2023 10:49:03 -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 1q5p2U-00051G-7D for bug-gnu-emacs@gnu.org; Sun, 04 Jun 2023 10:49:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q5p2T-0000dZ-Uo for bug-gnu-emacs@gnu.org; Sun, 04 Jun 2023 10:49:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q5p2T-0003zY-QY for bug-gnu-emacs@gnu.org; Sun, 04 Jun 2023 10:49:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9_?= =?UTF-8?Q?=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 04 Jun 2023 14:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63757 X-GNU-PR-Package: emacs Original-Received: via spool by 63757-submit@debbugs.gnu.org id=B63757.168589008715118 (code B ref 63757); Sun, 04 Jun 2023 14:49:01 +0000 Original-Received: (at 63757) by debbugs.gnu.org; 4 Jun 2023 14:48:07 +0000 Original-Received: from localhost ([127.0.0.1]:46866 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q5p1a-0003vf-K1 for submit@debbugs.gnu.org; Sun, 04 Jun 2023 10:48:07 -0400 Original-Received: from smtp32.i.mail.ru ([95.163.41.73]:40910) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q5p1X-0003uQ-9D for 63757@debbugs.gnu.org; Sun, 04 Jun 2023 10:48:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=list.ru; s=mail4; h=Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version:From:Subject:Content-Type:Content-Transfer-Encoding:To:Cc; bh=Z126VBAe9JJrKzkcIfS+dDzydpAutY6Us4yKk0QAVDg=; t=1685890083;x=1685980083; b=lyS85upN77yj9N44RTIeuPEjB0O2P1KkiVayb5SedQ1+qOy4Aa2NS0bSSJJNpVnXGFY2rxEE3QH2jB8Gk6EBUwEk8Ww1Fkd9zUVlW5VkLq1XTyA4Ymah4V2kk0Twk/jw81lQl8HC9LeWUlxSsBPG+8L6eg4VX/BjFIC7jxuqXgsICTpYv6ZeINcj7VCkvvKLP6uNTm8oltY6YE6yyM29KeQTPGuZ4Ci7ukkIbBPVK1VrohhXnVXv2QQjORmdwWoUzrRLJU/gK+xQH2++JDSD21dI7mm6YHVvRvpX9e3ZQ/lPc7+e+el8RF6lZNyzPFygq9STzIFVOLE59Crj4bm/yw==; Original-Received: by smtp32.i.mail.ru with esmtpa (envelope-from ) id 1q5p1Q-00AWPZ-89 for 63757@debbugs.gnu.org; Sun, 04 Jun 2023 17:47:56 +0300 Original-Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-3f730c1253fso7875765e9.1 for <63757@debbugs.gnu.org>; Sun, 04 Jun 2023 07:47:56 -0700 (PDT) X-Gm-Message-State: AC+VfDwnSQTxgQn65a8OkrBkGywHZLDZN3BVyhUzw0KP64Y/yh0R4q93 uM4CrzLkXcN/2COG73lKs3/tES6Rp0eNPB7oYfo= X-Google-Smtp-Source: ACHHUZ7/Vgu1pXVivRPG5ks/TjYzSDybhGyS4NFP55h+qKuXSM3lGGd6l5K2Uu459JuwhRhm2m3GhFr9PsrBgjYTRNg= X-Received: by 2002:a1c:c912:0:b0:3f7:16ed:4cb2 with SMTP id f18-20020a1cc912000000b003f716ed4cb2mr5465897wmb.13.1685890074549; Sun, 04 Jun 2023 07:47:54 -0700 (PDT) In-Reply-To: <83fs775mgy.fsf@gnu.org> X-Gmail-Original-Message-ID: Authentication-Results: smtp32.i.mail.ru; auth=pass smtp.auth=artscan@list.ru smtp.mailfrom=artscan@list.ru X-Mailru-Src: smtp X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD988F25420CCA9469A2BB1E2660ECA1581EEDF92198E5CAC8B182A05F5380850409F6F92D45FB350AF75E8CB83FE86C847B8BEF5A7282B06AB652305C7BA88C66B X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7B8498AC83B273C12EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637B84F9009663064BD8638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D842F0574CE258726D1A1DF96C6F7C2F7A6F9789CCF6C18C3F8528715B7D10C86878DA827A17800CE7ECE82AE7387CF2AD9FA2833FD35BB23D27C277FBC8AE2E8B904D9BE2F696C45AA471835C12D1D977C4224003CC836476EB9C4185024447017B076A6E789B0E975F5C1EE8F4F765FC68AA23090C48FC673AA81AA40904B5D9CF19DD082D7633A078D18283394535A93AA81AA40904B5D98AA50765F7900637254CDB394D352967D81D268191BDAD3D3666184CF4C3C14F3FC91FA280E0CE3D1A620F70A64A45A98AA50765F79006372E808ACE2090B5E1725E5C173C3A84C3C5EA940A35A165FF2DBA43225CD8A89F83C798A30B85E16B6D8C47C27EEC5E9FB5C8C57E37DE458BEDA766A37F9254B7 X-C1DE0DAB: 0D63561A33F958A55442601DFF0BA1CAFFB93E82E8F2F3900339CDA3418F5B8FF87CCE6106E1FC07E67D4AC08A07B9B01F9513A7CA91E555CB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF77DD89D51EBB7742D3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CF3D05723A9BEBB5B7299198124C52878ECD83FA027809B0EFBABEB5235C6AF762A5CD7B9A90500322F4BC53521BD43B01FCFBBB35E7DD69084439FD8526339BF4CAACD699CDC6F98202C26D483E81D6BE1362B2BFE906F14DEF4373B74A18CF49CC2E138FFB4ACBED X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojZIfw4O47JkKU/GC+ZcEL1A== X-Mailru-Sender: 4C235FE2E5D2D89004CB37C9E788202B140D432DC1ADAFD42578226F0AB1C16A96C236757D6432D5A3C36B4D8423ABA5C77752E0C033A69EC36ED9D1848BBC3A06988B367FA93C37B4A721A3011E896F X-Mras: Ok X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:262958 Archived-At: --00000000000006266405fd4edf03 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > I guess we need to reverse the list of directories, since > directory-files sorts using string-lessp as the predicate? Unfortunately, `directory-files` order in `package-load-all-descriptors` is later overlapped by `package--get-activatable-pkg` order which sorts `package-alist` in-place. > What does "broken" mean in this case? I fear that your patch just > changes what is necessary to resolve the issue in your case, but the > underlying problem (the destructive modification of `package-list') > still persists? "Broken" means wrong order of versions. As you can see in `package-process-define-package` (old-pkgs (assq name package-alist))) ... (push new-pkg-desc (cdr old-pkgs)) gives destructive modification of `package-alist` too. We can put this destructive modification in one place, as Stefan noted, like this diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index ba0e3618f28..c184625d754 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -686,7 +686,7 @@ Convert EXP into a `package-desc' object using the If there already exists a package by the same name in `package-alist', insert this object there such that the packages -are sorted with the highest version first." +are sorted with VC and builtin packages first and the highest version second." (when (eq (car-safe exp) 'define-package) (let* ((new-pkg-desc (apply #'package-desc-from-define (cdr exp))) (name (package-desc-name new-pkg-desc)) @@ -696,13 +696,29 @@ are sorted with the highest version first." ;; If there's no old package, just add this to `package-alist'. (push (list name new-pkg-desc) package-alist) ;; If there is, insert the new package at the right place in the list. - (while - (if (and (cdr old-pkgs) - (version-list-< version - (package-desc-version (cadr old-pkgs)))) - (setq old-pkgs (cdr old-pkgs)) - (push new-pkg-desc (cdr old-pkgs)) - nil))) + (progn + ;; Prefer newer packages + (while + (if (and (cdr old-pkgs) + (version-list-< version + (package-desc-version (cadr old-pkgs)))) + (setq old-pkgs (cdr old-pkgs)) + (push new-pkg-desc (cdr old-pkgs)) + nil)) + (let ((pkg-desc (sort (cdr (assq name package-alist)) + (lambda (p1 p2) + (let ((v1 (package-desc-version p1)) + (v2 (package-desc-version p2))) + (or + (and + ;; Prefer VC packages. + (package-vc-p p1) + (not (package-vc-p p2))) + ;; Prefer builtin packages. + (and + (package-built-in-p p1 v1) + (not (package-built-in-p p2 v2))))))))) + (setq new-pkg-desc (car pkg-desc))))) new-pkg-desc))) (declare-function package-vc-commit "package-vc" (pkg)) @@ -916,17 +932,7 @@ correspond to previously loaded files." (defun package--get-activatable-pkg (pkg-name) ;; Is "activatable" a word? - (let ((pkg-descs (sort (cdr (assq pkg-name package-alist)) - (lambda (p1 p2) - (let ((v1 (package-desc-version p1)) - (v2 (package-desc-version p2))) - (or - ;; Prefer VC packages. - (package-vc-p p1) - (package-vc-p p2) - ;; Prefer builtin packages. - (package-disabled-p p1 v1) - (not (package-disabled-p p2 v2)))))))) + (let ((pkg-descs (cdr (assq pkg-name package-alist)))) ;; Check if PACKAGE is available in `package-alist'. (while (when pkg-descs On Mon, Jun 5, 2023 at 12:29=E2=80=AFAM Eli Zaretskii wrote: > > From: =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9 =D0=91=D0=BE=D0=B9=D0= =BA=D0=BE=D0=B2 > > Date: Mon, 5 Jun 2023 00:03:48 +1000 > > Cc: Eli Zaretskii , monnier@iro.umontreal.ca, > 63757@debbugs.gnu.org > > > > > Done. Should we close the issue then, or wait for more feedback? > > > > fa8135f8916 * emacs-29 origin/emacs-29 Revert changes to the order in > which package descs are > > loaded > > - (dolist (pkg-dir (directory-files dir t "\\`[^.]" t)) > > + (dolist (pkg-dir (directory-files dir t "\\`[^.]")) > > > > it doesn't fix the initial problem: `load-path` and `package-alist` are > still broken in my test. > > > > Test: > > To reproduce the case we need emacs 29.0.91 + fa8135f8916 fix and > > ~/.emacs.d/elpa/go-mode-20170726.555/... > > ~/.emacs.d/elpa/go-mode-20220114.2239/... > > Run `emacs -Q` and `M-x package-initialize`. After that `package-alist` > and `load-path` contain the > > 2017 version as the first item in the list (instead of 2022). > > I guess we need to reverse the list of directories, since > directory-files sorts using string-lessp as the predicate? > --=20 __________________________ =D0=A1 =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC, =D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8= =D0=B9 =D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2=D0=B8=D1=87 =D1=81=D0=BE=D1=82. 8-924-202-25-65 e-mail: artscan@list.ru --00000000000006266405fd4edf03 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
> I guess we need to reverse the list of dire= ctories, since
> directory-files sorts using string-lessp as the pred= icate?
Unfortunately, `directory-files` order in `package-loa= d-all-descriptors` is later overlapped by `package--get-activatable-pkg` or= der which sorts `package-alist` in-place.

> What does = "broken" mean in this case?=C2=A0 I fear that your patch just
= > changes what is necessary to resolve the issue in your case, but the> underlying problem (the destructive modification of `package-list= 9;)
> still persists?

"Broken" means wron= g order of versions.
As you can see in `package-process-define-pac= kage`

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0 (old-pkgs (assq name = package-alist)))
...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (push new-pkg-desc (cdr old-pkgs))

gives destructive modifica= tion of `package-alist` too.
We can put this destructive modification in= one place, as Stefan noted, like this

diff --git a/lisp/emacs-lisp/= package.el b/lisp/emacs-lisp/package.el
index ba0e3618f28..c184625d754 1= 00644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.= el
@@ -686,7 +686,7 @@ Convert EXP into a `pack= age-desc' object using the
=C2=A0
=C2=A0If there already exists a= package by the same name in
=C2=A0`package-alist', insert this obje= ct there such that the packages
-are sorted with the highest version fir= st."
+are sorted with VC and builtin packages first and the = highest version second."
=C2=A0 =C2=A0(whe= n (eq (car-safe exp) 'define-package)
=C2=A0 =C2=A0 =C2=A0(let* ((ne= w-pkg-desc (apply #'package-desc-from-define (cdr exp)))
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (name (package-desc-name new-pkg-desc))
= @@ -696,13 +696,29 @@ are sorted with the highest version first."
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; If there's no old package, = just add this to `package-alist'.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0(push (list name new-pkg-desc) package-alist)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0;; If there is, insert the new package at the right place = in the list.
- =C2=A0 =C2=A0 =C2=A0 =C2=A0(while
- =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0(if (and (cdr old-pkgs)
- =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (version-list-< version=
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (package-desc-vers= ion (cadr old-pkgs))))
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(setq old-pkgs (cdr old-pkgs))
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0(push new-pkg-desc (cdr old-pkgs))
- =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nil)))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0(p= rogn
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Prefer newer packages
+ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(while
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0(if (and (cdr old-pkgs)
+ =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (version-list-< ver= sion
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (pack= age-desc-version (cadr old-pkgs))))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq old-pkgs (cdr old-pkgs))
+ =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(push new-pkg-desc (cdr old-pk= gs))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nil))
<= /span>+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(let ((pkg-desc (sort (cdr (assq = name package-alist))
+ =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(lambda (p1 p2)
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(let ((v1 (package-desc-version p1))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(v2 (package-desc-version p2)))
+ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(or
+ =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (and
+ =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Prefer VC packages.
+ =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(package-vc-p p1)
+ = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(not (package-vc= -p p2)))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Prefe= r builtin packages.
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (and
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(p= ackage-built-in-p p1 v1)
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(not (package-built-in-p p2 v2)))))))))
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq new-pkg-desc (car pk= g-desc)))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0new-pkg-desc)))
=C2=A0
=C2= =A0(declare-function package-vc-commit "package-vc" (pkg))
@@ = -916,17 +932,7 @@ correspond to previously loaded files."
=C2=A0=C2=A0(defun package--get-activatable-pkg (pkg-name)
=C2=A0 =C2=A0;; Is= "activatable" a word?
- =C2=A0(let ((pkg-descs (sort (cdr (as= sq pkg-name package-alist))
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (lambda (p1 p2)
- =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 (let ((v1 (package-desc-version p1))
- =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 (v2 (package-desc-version p2)))
- =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (= or
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Prefer VC packages.
- =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0(package-vc-p p1)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(package-vc-p p2)
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Prefer builtin pa= ckages.
- =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(package-disabled-p p1 v1)
- = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(not (package-disabled-p p2 v2))))))))
+ =C2=A0(let ((pkg-descs (cdr (assq pkg-name package-alist))))
=C2=A0 =C2=A0 =C2=A0;; Check if PACKAGE is available i= n `package-alist'.
=C2=A0 =C2=A0 =C2=A0(while
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0(when pkg-descs


=
On Mon, Ju= n 5, 2023 at 12:29=E2=80=AFAM Eli Zaretskii <eliz@gnu.org> wrote:
> From: =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9 =D0= =91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 <artscan@list.ru>
> Date: Mon, 5 Jun 2023 00:03:48 +1000
> Cc: Eli Zaretskii <eliz@gnu.org>, monnier@iro.umontreal.ca, 63757@debbugs.gnu.org
>
> > Done.=C2=A0 Should we close the issue then, or wait for more feed= back?
>
> fa8135f8916 * emacs-29 origin/emacs-29 Revert changes to the order in = which package descs are
> loaded
> -=C2=A0 =C2=A0 =C2=A0 (dolist (pkg-dir (directory-files dir t "\\= `[^.]" t))
> +=C2=A0 =C2=A0 =C2=A0 (dolist (pkg-dir (directory-files dir t "\\= `[^.]"))
>
> it doesn't fix the initial problem: `load-path` and `package-alist= ` are still broken in my test.
>
> Test:
> To reproduce the case we need emacs 29.0.91 + fa8135f8916 fix=C2=A0 an= d
>=C2=A0 =C2=A0 =C2=A0~/.emacs.d/elpa/go-mode-20170726.555/...
>=C2=A0 =C2=A0 =C2=A0~/.emacs.d/elpa/go-mode-20220114.2239/...
> Run `emacs -Q` and `M-x package-initialize`. After that `package-alist= ` and `load-path` contain the
> 2017 version as the first item in the list (instead of 2022).

I guess we need to reverse the list of directories, since
directory-files sorts using string-lessp as the predicate?


--
__________________________

=D0=A1 =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC,
=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8= =D0=B9 =D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2=D0=B8=D1=87
=D1=81=D0=BE=D1=82. 8-924-202-25-65
e-mail: artscan@list.r= u
--00000000000006266405fd4edf03--