From unknown Sat Aug 09 04:59:35 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#37928] [PATCH] import: crate: Fix licenses. Resent-From: Brice Waegeneire Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 25 Oct 2019 20:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 37928 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 37928@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15720352625198 (code B ref -1); Fri, 25 Oct 2019 20:28:02 +0000 Received: (at submit) by debbugs.gnu.org; 25 Oct 2019 20:27:42 +0000 Received: from localhost ([127.0.0.1]:39409 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iO6BS-0001Lg-3e for submit@debbugs.gnu.org; Fri, 25 Oct 2019 16:27:42 -0400 Received: from lists.gnu.org ([209.51.188.17]:39004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iO6BQ-0001LS-GQ for submit@debbugs.gnu.org; Fri, 25 Oct 2019 16:27:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34611) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iO6BP-0007FH-83 for guix-patches@gnu.org; Fri, 25 Oct 2019 16:27:40 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_LOW autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iO6BN-0003xU-1Q for guix-patches@gnu.org; Fri, 25 Oct 2019 16:27:39 -0400 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:47827) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iO6BL-0003uV-1m for guix-patches@gnu.org; Fri, 25 Oct 2019 16:27:36 -0400 X-Originating-IP: 78.237.113.178 Received: from localhost (luy13-1-78-237-113-178.fbx.proxad.net [78.237.113.178]) (Authenticated sender: brice@waegenei.re) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 1855960004 for ; Fri, 25 Oct 2019 20:27:31 +0000 (UTC) From: Brice Waegeneire Date: Fri, 25 Oct 2019 22:27:13 +0200 Message-Id: <20191025202713.7739-2-brice@waegenei.re> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20191025202713.7739-1-brice@waegenei.re> References: <20191025202713.7739-1-brice@waegenei.re> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.70.183.195 X-Spam-Score: -1.6 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) * guix/import/crate.scm (%dual-license-rx): Removed function. (crate->guix-package): Handle most of the multi-licensing cases. --- guix/import/crate.scm | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/guix/import/crate.scm b/guix/import/crate.scm index 8dc014d232..e08028db15 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -178,21 +178,18 @@ and LICENSE." (close-port port) pkg)) -(define %dual-license-rx - ;; Dual licensing is represented by a string such as "MIT OR Apache-2.0". - ;; This regexp matches that. - (make-regexp "^(.*) OR (.*)$")) - (define* (crate->guix-package crate-name #:optional version) "Fetch the metadata for CRATE-NAME from crates.io, and return the `package' s-expression corresponding to that package, or #f on failure. When VERSION is specified, attempt to fetch that version; otherwise fetch the latest version of CRATE-NAME." (define (string->license string) - (match (regexp-exec %dual-license-rx string) - (#f (list (spdx-string->license string))) - (m (list (spdx-string->license (match:substring m 1)) - (spdx-string->license (match:substring m 2)))))) + (filter + (lambda (word) + (and (not (string-null? word)) + (not (any (lambda (elem) (string=? elem word)) + '("AND" "OR" "WITH"))) )) + (string-split string (string->char-set " /")))) (define (normal-dependency? dependency) (eq? (crate-dependency-kind dependency) 'normal)) -- 2.19.2 From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 28 10:40:45 2019 Received: (at control) by debbugs.gnu.org; 28 Oct 2019 14:40:45 +0000 Received: from localhost ([127.0.0.1]:46085 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iP6CJ-0001Cg-CW for submit@debbugs.gnu.org; Mon, 28 Oct 2019 10:40:45 -0400 Received: from mail-wr1-f44.google.com ([209.85.221.44]:43237) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iP6CH-0001CS-CJ for control@debbugs.gnu.org; Mon, 28 Oct 2019 10:40:41 -0400 Received: by mail-wr1-f44.google.com with SMTP id n1so2702570wra.10 for ; Mon, 28 Oct 2019 07:40:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:message-id:to:from:subject; bh=WfBK0xar/eM4agiXG3pue9i331ApUEy2BsswkoiyF6A=; b=d+tgpwpkFsjbCXcKzXM75QX1upunF5NwkVBjzM9xopUqefZHHffLvoO5sxkNgaOd2W c4+/fOvUSPZ2mjc0C90Mm/PrxMcOv8SyhgK5C3pxNXGkzI+RjjX18AOWx/nT+NYHzcFR NEOW3WOxYLCYBqApyMq6S2ARhBkCWkW9ujL9fH4yVJ7Dtyg+JNPGQjLjLXkUGvLy8YmT C1tj6bnmxCLstHLiUUpLJEHbi1KzyB0wbO2NoBhzVpHPN7dhMSaTmM1VPgGts13kLxpy qV5DPIsGec23VjtUIwgMO5dtaYNBppueT+5uavWPltZHWM2tLcLf/+flzIlrRFrdL74Q E8xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:to:from:subject; bh=WfBK0xar/eM4agiXG3pue9i331ApUEy2BsswkoiyF6A=; b=B1aZlCDSJ/N9QehYuFREk7cZB2DiI4qgIEHc3M5nyhldtkok5rFSDkOCzVi8C84vjL Ko16DznV0bvRm8EKCnh2bBgK01DSXm0CvgUkfda4osBvZ16bdfA3Fw/VyVYJ0fS+3vvE T6GKgocUK+rjLUu5liBoqmb+YQCF8bXNmt4KNOlklKDeXbPfsUYUkyNsT3KIF/uT/3WA q+TwPa0sCIizlEqKKYhNdlZTffBsEEMr3+vD7CaH6sQHUaVp0TBwCuzWnV4gmf00tzIN 6CE0qj8K/cTefOzOsuEaeJ1v3sX8UsDs2UczaKqSPswDlCZeXmebMCstolHLBF7Gcog0 vR1Q== X-Gm-Message-State: APjAAAUHWLdjBfF4lADaa4PwIm+Xt1i2CXLklb40SzH4YKa5tA8oBUWX AlVKbs6k8vxStJkgYCa1xby9rgUY X-Google-Smtp-Source: APXvYqzsubgVYPNnKsWaqtwvHAYqMDO5D05moZsZp7hICR21GtZmX3Fh2OePZvnREuuOqIw3y4ELsA== X-Received: by 2002:adf:c401:: with SMTP id v1mr14759833wrf.375.1572273635120; Mon, 28 Oct 2019 07:40:35 -0700 (PDT) Received: from meru (lfbn-ann-1-367-71.w86-200.abo.wanadoo.fr. [86.200.83.71]) by smtp.gmail.com with ESMTPSA id x8sm12072276wrr.43.2019.10.28.07.40.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Oct 2019 07:40:34 -0700 (PDT) Date: Mon, 28 Oct 2019 15:40:32 +0100 Message-Id: <87sgndj5lr.fsf@gmail.com> To: control@debbugs.gnu.org From: Mathieu Othacehe Subject: control message for bug #37927 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) merge 37927 37928 quit From unknown Sat Aug 09 04:59:35 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#37928] [PATCH] import: crate: Fix licenses. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 04 Nov 2019 22:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37928 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Brice Waegeneire Cc: 37927@debbugs.gnu.org, 37928@debbugs.gnu.org Received: via spool by 37928-submit@debbugs.gnu.org id=B37928.157290646127248 (code B ref 37928); Mon, 04 Nov 2019 22:28:02 +0000 Received: (at 37928) by debbugs.gnu.org; 4 Nov 2019 22:27:41 +0000 Received: from localhost ([127.0.0.1]:37678 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iRkp2-00075J-JI for submit@debbugs.gnu.org; Mon, 04 Nov 2019 17:27:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50179) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iRkow-00074q-Br; Mon, 04 Nov 2019 17:27:37 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39206) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iRkoq-0006aB-HZ; Mon, 04 Nov 2019 17:27:28 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=36208 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iRkoo-0002M7-Uq; Mon, 04 Nov 2019 17:27:27 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20191025202713.7739-1-brice@waegenei.re> <20191025202713.7739-2-brice@waegenei.re> Date: Mon, 04 Nov 2019 23:27:24 +0100 In-Reply-To: <20191025202713.7739-2-brice@waegenei.re> (Brice Waegeneire's message of "Fri, 25 Oct 2019 22:27:13 +0200") Message-ID: <87mudb46r7.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Brice, Brice Waegeneire skribis: > * guix/import/crate.scm (%dual-license-rx): Removed function. > (crate->guix-package): Handle most of the multi-licensing cases. Nice! > (define* (crate->guix-package crate-name #:optional version) > "Fetch the metadata for CRATE-NAME from crates.io, and return the > `package' s-expression corresponding to that package, or #f on failure. > When VERSION is specified, attempt to fetch that version; otherwise fetc= h the > latest version of CRATE-NAME." > (define (string->license string) > - (match (regexp-exec %dual-license-rx string) > - (#f (list (spdx-string->license string))) > - (m (list (spdx-string->license (match:substring m 1)) > - (spdx-string->license (match:substring m 2)))))) > + (filter > + (lambda (word) > + (and (not (string-null? word)) > + (not (any (lambda (elem) (string=3D? elem word)) > + '("AND" "OR" "WITH"))) )) > + (string-split string (string->char-set " /")))) It would be great to have tests for that in tests/crate.scm. To that end, I think you could lift =E2=80=98string->license=E2=80=99 to the top le= vel (that is, outside =E2=80=98crate->guix-package=E2=80=99), and then have a few tests a= long these lines: (define string->license (@@ (guix import crate) string->license)) (test-equal "GPL OR LGPL" (list license:gpl3+ license:lgpl3+) (string->license "GPL OR LGPL")) (See .) Let me know if anything is unclear. Could you send an updated patch? Thanks, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 04 17:28:16 2019 Received: (at control) by debbugs.gnu.org; 4 Nov 2019 22:28:16 +0000 Received: from localhost ([127.0.0.1]:37683 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iRkpc-00076s-0B for submit@debbugs.gnu.org; Mon, 04 Nov 2019 17:28:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:50484) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iRkpV-00076U-AO for control@debbugs.gnu.org; Mon, 04 Nov 2019 17:28:15 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39244) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iRkpQ-00073m-6G for control@debbugs.gnu.org; Mon, 04 Nov 2019 17:28:04 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=36210 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iRkpO-0003KB-Pv for control@debbugs.gnu.org; Mon, 04 Nov 2019 17:28:03 -0500 Date: Mon, 04 Nov 2019 23:28:01 +0100 Message-Id: <87lfsv46q6.fsf@gnu.org> To: control@debbugs.gnu.org From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Subject: control message for bug #37927 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) retitle 37927 Better handle license expressions in 'guix import crate' quit From unknown Sat Aug 09 04:59:35 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#37928] References: <20191025202713.7739-2-brice@waegenei.re> In-Reply-To: <20191025202713.7739-2-brice@waegenei.re> Resent-From: Brice Waegeneire Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 26 Nov 2019 20:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37928 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 37928@debbugs.gnu.org Received: via spool by 37928-submit@debbugs.gnu.org id=B37928.157479945512759 (code B ref 37928); Tue, 26 Nov 2019 20:18:01 +0000 Received: (at 37928) by debbugs.gnu.org; 26 Nov 2019 20:17:35 +0000 Received: from localhost ([127.0.0.1]:53028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZhHD-0003JZ-0u for submit@debbugs.gnu.org; Tue, 26 Nov 2019 15:17:35 -0500 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:50017) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZhHB-0003HO-8a for 37928@debbugs.gnu.org; Tue, 26 Nov 2019 15:17:33 -0500 X-Originating-IP: 78.237.113.178 Received: from localhost (luy13-1-78-237-113-178.fbx.proxad.net [78.237.113.178]) (Authenticated sender: brice@waegenei.re) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 6BF401C000A for <37928@debbugs.gnu.org>; Tue, 26 Nov 2019 20:17:31 +0000 (UTC) From: Brice Waegeneire Date: Tue, 26 Nov 2019 21:17:20 +0100 Message-Id: <20191126201721.7370-1-brice@waegenei.re> X-Mailer: git-send-email 2.19.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I have finally managed to write the requested tests. string->license has been rewritten to output licenses instead of strings and to avoid swallowing unknown licenses. Now, importing rpigrep recursively give only 3 #f in the licenses fields. Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [217.70.183.197 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 2.0 BLANK_SUBJECT Subject is present but empty X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) I have finally managed to write the requested tests. string->license has been rewritten to output licenses instead of strings and to avoid swallowing unknown licenses. Now, importing rpigrep recursively give only 3 #f in the licenses fields. From unknown Sat Aug 09 04:59:35 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#37928] [PATCH v2] import: crate: Better handle license expressions. Resent-From: Brice Waegeneire Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 26 Nov 2019 20:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37928 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 37928@debbugs.gnu.org Received: via spool by 37928-submit@debbugs.gnu.org id=B37928.157479946113035 (code B ref 37928); Tue, 26 Nov 2019 20:18:02 +0000 Received: (at 37928) by debbugs.gnu.org; 26 Nov 2019 20:17:41 +0000 Received: from localhost ([127.0.0.1]:53031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZhHJ-0003O0-9l for submit@debbugs.gnu.org; Tue, 26 Nov 2019 15:17:41 -0500 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:41829) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZhHH-0003ML-2G for 37928@debbugs.gnu.org; Tue, 26 Nov 2019 15:17:39 -0500 X-Originating-IP: 78.237.113.178 Received: from localhost (luy13-1-78-237-113-178.fbx.proxad.net [78.237.113.178]) (Authenticated sender: brice@waegenei.re) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id A632060006 for <37928@debbugs.gnu.org>; Tue, 26 Nov 2019 20:17:37 +0000 (UTC) From: Brice Waegeneire Date: Tue, 26 Nov 2019 21:17:21 +0100 Message-Id: <20191126201721.7370-2-brice@waegenei.re> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20191126201721.7370-1-brice@waegenei.re> References: <20191126201721.7370-1-brice@waegenei.re> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) * guix/import/crate.scm (%dual-license-rx): Removed function. (crate->guix-package): Handle most of the multi-licensing cases. * tests/crate.scm (licenses): Add tests for some licenses. --- guix/import/crate.scm | 17 ++++++++--------- tests/crate.scm | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/guix/import/crate.scm b/guix/import/crate.scm index 8dc014d232..0915d8295a 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -178,21 +178,20 @@ and LICENSE." (close-port port) pkg)) -(define %dual-license-rx - ;; Dual licensing is represented by a string such as "MIT OR Apache-2.0". - ;; This regexp matches that. - (make-regexp "^(.*) OR (.*)$")) +(define (string->license string) + (map + spdx-string->license + (filter (lambda (license) + (and (not (string-null? license)) + (not (any (lambda (elem) (string=? elem license)) + '("AND" "OR" "WITH"))))) + (string-split string (string->char-set " /"))))) (define* (crate->guix-package crate-name #:optional version) "Fetch the metadata for CRATE-NAME from crates.io, and return the `package' s-expression corresponding to that package, or #f on failure. When VERSION is specified, attempt to fetch that version; otherwise fetch the latest version of CRATE-NAME." - (define (string->license string) - (match (regexp-exec %dual-license-rx string) - (#f (list (spdx-string->license string))) - (m (list (spdx-string->license (match:substring m 1)) - (spdx-string->license (match:substring m 2)))))) (define (normal-dependency? dependency) (eq? (crate-dependency-kind dependency) 'normal)) diff --git a/tests/crate.scm b/tests/crate.scm index c14862ad9f..baad2d0c44 100644 --- a/tests/crate.scm +++ b/tests/crate.scm @@ -63,6 +63,9 @@ (define test-source-hash "") +(define string->license + (@@ (guix import crate) string->license)) + (test-begin "crate") (test-equal "guix-package->crate-name" @@ -111,4 +114,24 @@ (x (pk 'fail x #f))))) +(test-equal "licenses: MIT OR Apache-2.0" + '(license:expat license:asl2.0) + (string->license "MIT OR Apache-2.0")) + +(test-equal "licenses: Apache-2.0 / MIT" + '(license:asl2.0 license:expat) + (string->license "Apache-2.0 / MIT")) + +(test-equal "licenses: Apache-2.0 WITH LLVM-exception" + '(license:asl2.0 #f) + (string->license "Apache-2.0 WITH LLVM-exception")) + +(test-equal "licenses: MIT/Apache-2.0 AND BSD-2-Clause" + '(license:expat license:asl2.0 #f) + (string->license "MIT/Apache-2.0 AND BSD-2-Clause")) + +(test-equal "licenses: MIT/Apache-2.0" + '(license:expat license:asl2.0) + (string->license "MIT/Apache-2.0")) + (test-end "crate") -- 2.19.2 From unknown Sat Aug 09 04:59:35 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#37928] [PATCH v2] import: crate: Better handle license expressions. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 11 Dec 2019 13:02:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37928 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Brice Waegeneire Cc: 37927-done@debbugs.gnu.org, 37928-done@debbugs.gnu.org Received: via spool by 37928-done@debbugs.gnu.org id=D37928.157606930719743 (code D ref 37928); Wed, 11 Dec 2019 13:02:04 +0000 Received: (at 37928-done) by debbugs.gnu.org; 11 Dec 2019 13:01:47 +0000 Received: from localhost ([127.0.0.1]:56996 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1if1ch-00058H-96 for submit@debbugs.gnu.org; Wed, 11 Dec 2019 08:01:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1if1cc-00057Y-CO; Wed, 11 Dec 2019 08:01:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40889) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1if1cW-0004mR-3D; Wed, 11 Dec 2019 08:01:36 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=59864 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1if06A-0001AM-Ch; Wed, 11 Dec 2019 06:24:06 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20191126201721.7370-1-brice@waegenei.re> <20191126201721.7370-2-brice@waegenei.re> Date: Wed, 11 Dec 2019 12:24:04 +0100 In-Reply-To: <20191126201721.7370-2-brice@waegenei.re> (Brice Waegeneire's message of "Tue, 26 Nov 2019 21:17:21 +0100") Message-ID: <87tv67jeaz.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Brice, Brice Waegeneire skribis: > * guix/import/crate.scm (%dual-license-rx): Removed function. > (crate->guix-package): Handle most of the multi-licensing cases. > * tests/crate.scm (licenses): Add tests for some licenses. Thanks for the updated patch! > +(define (string->license string) > + (map > + spdx-string->license > + (filter (lambda (license) > + (and (not (string-null? license)) > + (not (any (lambda (elem) (string=3D? elem license)) > + '("AND" "OR" "WITH"))))) > + (string-split string (string->char-set " /"))))) I changed that to use =E2=80=98filter-map=E2=80=99 instead and pushed as 263a267b75e472cb84428571580dabd99d5dff0c. Thanks! Ludo=E2=80=99.