From patchwork Sat Jan 11 14:37:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herman Rimm X-Patchwork-Id: 36927 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 1FE8227BBEA; Sat, 11 Jan 2025 14:39:44 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 7853E27BBE2 for ; Sat, 11 Jan 2025 14:39:42 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tWcdu-0005Ew-OT; Sat, 11 Jan 2025 09:39:17 -0500 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 1tWcdk-0005Eb-7x for guix-patches@gnu.org; Sat, 11 Jan 2025 09:39:05 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tWcdj-0005jl-Sd for guix-patches@gnu.org; Sat, 11 Jan 2025 09:39:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:Subject; bh=K1XeMTActiImi3wJ7Y1OBTpgg24bFtJz0etZ3mTKBjA=; b=K6uzydgr7Y4fqlooasE6j3v6hEa2GOC1XMkg9ucARHdQD/nwH5vvcZQEG0h02dovm2dZI4bdTfncL8faIknFcj7IHhrT8h5l27vfMy8AC/n/i3A4w7yBELNzegbp7pMdt7Ji0FmrFLP99sQ6YS8fEf2iu9Bk0cUX38fYJ3rEY5XA/yZbSDw/WiB5u4isv+lcZm0zjq77dPMoQQM4MGtTHYjLuakqWn9uCU9RQFgeijNyd7U0l/S9uxNDargG02NBsx8R+W3edJGD/8UjmWLrjBqI+McR4sHPTT199K11b9NfCmZIr2FzwKL2fgx1Wef/PEC9q1UL4VIQD1bw9ttyAg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tWcdi-0007le-DU; Sat, 11 Jan 2025 09:39:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#75496] [PATCH rust-team 1/2] import: crate: Fix find-package-version. Resent-From: Herman Rimm Original-Sender: "Debbugs-submit" Resent-CC: divya@subvertising.org, efraim@flashner.co.il, guix-patches@gnu.org Resent-Date: Sat, 11 Jan 2025 14:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 75496 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 75496@debbugs.gnu.org Cc: Divya Ranjan Pattanaik , Efraim Flashner X-Debbugs-Original-To: guix-patches@gnu.org X-Debbugs-Original-Xcc: Divya Ranjan Pattanaik , Efraim Flashner Received: via spool by submit@debbugs.gnu.org id=B.173660630029755 (code B ref -1); Sat, 11 Jan 2025 14:39:02 +0000 Received: (at submit) by debbugs.gnu.org; 11 Jan 2025 14:38:20 +0000 Received: from localhost ([127.0.0.1]:41867 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tWcd2-0007jq-43 for submit@debbugs.gnu.org; Sat, 11 Jan 2025 09:38:20 -0500 Received: from lists.gnu.org ([2001:470:142::17]:39666) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tWccz-0007jQ-68 for submit@debbugs.gnu.org; Sat, 11 Jan 2025 09:38:18 -0500 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 1tWcct-0004Ze-Bz for guix-patches@gnu.org; Sat, 11 Jan 2025 09:38:11 -0500 Received: from 81-205-150-117.fixed.kpn.net ([81.205.150.117] helo=email.rimm.ee) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1tWccr-0005fL-Iy for guix-patches@gnu.org; Sat, 11 Jan 2025 09:38:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rimm.ee; s=herman; t=1736606277; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=K1XeMTActiImi3wJ7Y1OBTpgg24bFtJz0etZ3mTKBjA=; b=o45d013t1UCzbZRINVKKoxuAyeeLWqhQhYAPzPBqGcgcTNQ0zUWYlp2ckQ3WbicswX9/QJ mGJB+DoQLmHPhjlfqeG8LcrqmAPf7HdYwQMx5COhP/hUVBf1ChwA6r2ZKphPZTw7q8N0D4 2zF7E1jT3VpWkKdEva2TsrbR/ToUoFRlb6EOwegyt2QIsaAyj6UJh+aCVLtJWJJN2irF6v ciPt8m1H5n3uxFzr01OjSPeEk4Oej3nbhNF92IXTfxNgUM8mDGC/yG4HaQzWWExtqDCqCr x1leb2lA1JDNcCQT4H/4O6PYyyMurwfKQNbTF2fWiIi0aPgl/vQy63EuEoazdg== Received: by 81-205-150-117.fixed.kpn.net (OpenSMTPD) with ESMTPSA id 3e852fc9 (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO) for ; Sat, 11 Jan 2025 14:37:57 +0000 (UTC) Date: Sat, 11 Jan 2025 15:37:06 +0100 Message-ID: <9fab183f6a0ee9be09769e7f776f0b9c615b2c97.1736606198.git.herman@rimm.ee> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 Received-SPF: pass client-ip=81.205.150.117; envelope-from=herman@rimm.ee; helo=email.rimm.ee X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TVD_RCVD_IP=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Herman Rimm X-ACL-Warn: , Herman Rimm via Guix-patches X-Patchwork-Original-From: Herman Rimm via Guix-patches via From: Herman Rimm Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches 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 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 (not (eq? #f version)) (match-let (((semver yanked) version)) (list (semver->string semver) yanked))))) From patchwork Sat Jan 11 14:38:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Herman Rimm X-Patchwork-Id: 36928 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 58DE027BBEA; Sat, 11 Jan 2025 14:40:12 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id C909A27BBE2 for ; Sat, 11 Jan 2025 14:40:11 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tWceo-0005dL-Jx; Sat, 11 Jan 2025 09:40:10 -0500 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 1tWcei-0005Ym-8U for guix-patches@gnu.org; Sat, 11 Jan 2025 09:40:04 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tWceg-0005v9-10 for guix-patches@gnu.org; Sat, 11 Jan 2025 09:40:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=79nAioYyOH9GbdjHXBspKMOgbXNjMdrYRf/w028cP+c=; b=mWuqjazNlSspWZH2fV9lumFEvdy3n6YkMN8m24UfIIO30ixbBokPliLQKOMAnROB8/w/MH57sH7xrpwTjfPx1Q2hK/hdlpJ4C8AVRyjvDyG4ntUArnZWCuNsCt2kbmCtT1DDutWADx7q0hXA4ErEVXX23TmGGbiRZANztNgLOwi081Ok9MjHY3h+hO0WfsWtdNqAxZx2bXrKeQ3msq+3h5uI0AsTkuzE4deoiAys73t2RVwjX64kmAi3i/3CWtO3mMfoVCi3LQenFETYtPQXwaLMOYx3s+TayMHwPFob9GnU+Y5YkQy5b95hwayocUolVChXvmWfcDiSJbmDU0RujA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tWcef-0007o3-RS; Sat, 11 Jan 2025 09:40:01 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#75496] [PATCH rust-team 2/2] import: crate: Refactor find-package-version. Resent-From: Herman Rimm Original-Sender: "Debbugs-submit" Resent-CC: divya@subvertising.org, efraim@flashner.co.il, guix-patches@gnu.org Resent-Date: Sat, 11 Jan 2025 14:40:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 75496 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 75496@debbugs.gnu.org Cc: Divya Ranjan Pattanaik , Efraim Flashner X-Debbugs-Original-Xcc: Divya Ranjan Pattanaik , Efraim Flashner Received: via spool by 75496-submit@debbugs.gnu.org id=B75496.173660639129983 (code B ref 75496); Sat, 11 Jan 2025 14:40:01 +0000 Received: (at 75496) by debbugs.gnu.org; 11 Jan 2025 14:39:51 +0000 Received: from localhost ([127.0.0.1]:41875 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tWceV-0007nW-5n for submit@debbugs.gnu.org; Sat, 11 Jan 2025 09:39:51 -0500 Received: from 81-205-150-117.fixed.kpn.net ([81.205.150.117]:58497 helo=email.rimm.ee) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1tWceS-0007nE-CP for 75496@debbugs.gnu.org; Sat, 11 Jan 2025 09:39:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rimm.ee; s=herman; t=1736606375; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=79nAioYyOH9GbdjHXBspKMOgbXNjMdrYRf/w028cP+c=; b=fj1MQ5Dj59fDc2HJ2fQP2xpG3SeNSb+pUW8XeCVG463evNf+2cqlRjAnRd8p6Bcnlgc9Lc tnwYIWZvTjSm12HGTC3W9rROxUkHYFV030e7VIqyevIlRtNk+5qpf+jRL6KnWrKaVsyP/q g1KeQ4X+cXR3iUfFFUxc0a0SjEtdeYa/i6iyJRrzkTY3LMBRV/FgfdzVV9wGcnd/+y8Xaa 6+YsAENaaTnjd1sHo+mbLXsK+HyRI7e700pvoo8HBSCgD2/dtG2LSahALcVZ2zOISumn3s 3lsdM3ElrcP6vUgdqXnaf3VbPzWqGI9IxeOMowVHNoQ/1xqCXwAxrydGJsoH1Q== Received: by 81-205-150-117.fixed.kpn.net (OpenSMTPD) with ESMTPSA id 9b7a4967 (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO) for <75496@debbugs.gnu.org>; Sat, 11 Jan 2025 14:39:35 +0000 (UTC) Date: Sat, 11 Jan 2025 15:38:48 +0100 Message-ID: <991ead37c954cea75fff524f1fad2c8d88c8e5bf.1736606198.git.herman@rimm.ee> X-Mailer: git-send-email 2.47.1 In-Reply-To: <9fab183f6a0ee9be09769e7f776f0b9c615b2c97.1736606198.git.herman@rimm.ee> References: <9fab183f6a0ee9be09769e7f776f0b9c615b2c97.1736606198.git.herman@rimm.ee> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Herman Rimm X-ACL-Warn: , Herman Rimm via Guix-patches X-Patchwork-Original-From: Herman Rimm via Guix-patches via From: Herman Rimm Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/import/crate.scm (crate->guix-package)[find-package-version]: Move to top-level. [dependency-name+version+yanked]: Adjust. (find-package-version): Take allow-yanked? argument. Use (let) loop, match, if instead of map, filter, min-element. Change-Id: I1d05f55a027241e7c5f62cc98a50a09b5639bdcf --- guix/import/crate.scm | 55 ++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/guix/import/crate.scm b/guix/import/crate.scm index a7134b85722..d790126ef6e 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2023 Simon Tournier ;;; Copyright © 2023, 2024 Efraim Flashner ;;; Copyright © 2023, 2024 David Elsing +;;; Copyright © 2025 Herman Rimm ;;; ;;; This file is part of GNU Guix. ;;; @@ -290,6 +291,31 @@ (define (nonyanked-crate-versions crate) (not (crate-version-yanked? entry))) (crate-versions crate))) +(define (find-package-version name range allow-yanked?) + "Find the latest existing package that fulfills the SemVer RANGE. If +ALLOW-YANKED? is #t, include packages marked as yanked at a lower +priority." + (set! range (string->semver-range range)) + (let loop ((packages (find-packages-by-name + (crate-name->package-name name))) + (semver #f) + (yanked? #f)) + (match packages + ((pkg packages ...) + (let ((pkg-yanked? (assoc-ref (package-properties pkg) + 'crate-version-yanked?))) + (if (or allow-yanked? (not pkg-yanked?)) + (let ((pkg-semver (string->semver (package-version pkg)))) + (if (and (or (not semver) + (and yanked? (not pkg-yanked?)) + (and (eq? yanked? pkg-yanked?) + (semver>? pkg-semver semver))) + (semver-range-contains? range pkg-semver)) + (loop packages pkg-semver pkg-yanked?) + (loop packages semver yanked?))) + (loop packages semver yanked?)))) + (() (and semver (list (semver->string semver) yanked?)))))) + (define* (crate->guix-package crate-name #:key version include-dev-deps? allow-yanked? #:allow-other-keys) @@ -316,32 +342,6 @@ (define* (crate->guix-package (or version (crate-latest-version crate)))) - ;; Find the highest existing package that fulfills the semver . - ;; Packages previously marked as yanked take lower priority. - (define (find-package-version name range) - (let* ((semver-range (string->semver-range range)) - (version - (min-element - (filter (match-lambda ((semver yanked) - (and - (or allow-yanked? (not yanked)) - (semver-range-contains? semver-range semver)))) - (map (lambda (pkg) - (let ((version (package-version pkg))) - (list - (string->semver version) - (assoc-ref (package-properties pkg) - 'crate-version-yanked?)))) - (find-packages-by-name - (crate-name->package-name name)))) - (match-lambda* (((semver1 yanked1) (semver2 yanked2)) - (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))))) - ;; Find the highest version of a crate that fulfills the semver . ;; If no matching non-yanked version has been found and allow-yanked? is #t, ;; also consider yanked packages. @@ -361,7 +361,8 @@ (define* (crate->guix-package (define (dependency-name+version+yanked dep) (let* ((name (crate-dependency-id dep)) (req (crate-dependency-requirement dep)) - (existing-version (find-package-version name req))) + (existing-version + (find-package-version name req allow-yanked?))) (if (and existing-version (not (second existing-version))) (cons name existing-version) (let* ((crate (lookup-crate* name))