[bug#75496,rust-team,1/2] import: crate: Fix find-package-version.

Message ID 9fab183f6a0ee9be09769e7f776f0b9c615b2c97.1736606198.git.herman@rimm.ee
State New
Headers
Series [bug#75496,rust-team,1/2] import: crate: Fix find-package-version. |

Commit Message

Herman Rimm Jan. 11, 2025, 2:37 p.m. UTC
Fixes bug from 5ce1512b0f68cf39cb399623a14302f309c06129, where the
earliest existing package (if any) was returned instead.  See also:

https://issues.guix.gnu.org/68346#3-lineno97

* guix/import/crate.scm (crate->guix-package)[find-package-version]:
Invert boolean expression.

Change-Id: I1d05f55a027241e7c5f62cc98a50a09b5639bdcf
---
 guix/import/crate.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)


base-commit: 986245daca2fb50d58cf0f2b9273f0d670d38af2
  

Comments

Herman Rimm Jan. 11, 2025, 3:56 p.m. UTC | #1
Hello,

Can [PATCH 1/2] be applied/merged to the master branch as well?

Cheers,
Herman
  
Efraim Flashner Jan. 26, 2025, 9:08 a.m. UTC | #2
On Sat, Jan 11, 2025 at 04:56:42PM +0100, Herman Rimm wrote:
> Hello,
> 
> Can [PATCH 1/2] be applied/merged to the master branch as well?
> 
> Cheers,
> Herman

They both can be applied to master.

It took me a while to remember what this was about, but I have seen
package updates that downgraded dependent crates to older versions.  I'm
going to miss preferring older versions (that are easier to package)
when it comes to new crates, but it's definitely a change we need.

Patches pushed!
  

Patch

diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index b4806c8bb22..a7134b85722 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -335,9 +335,9 @@  (define* (crate->guix-package
                           (find-packages-by-name
                            (crate-name->package-name name))))
              (match-lambda* (((semver1 yanked1) (semver2 yanked2))
-                             (or (and yanked1 (not yanked2))
-                                 (and (eq? yanked1 yanked2)
-                                      (semver<? semver1 semver2))))))))
+                             (and (or (not yanked1) yanked2)
+                                  (or (not (eq? yanked1 yanked2))
+                                      (semver>? semver1 semver2))))))))
       (and (not (eq? #f version))
            (match-let (((semver yanked) version))
              (list (semver->string semver) yanked)))))