From patchwork Wed Oct 19 05:04:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip McGrath X-Patchwork-Id: 43707 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 C81F327BBEE; Wed, 19 Oct 2022 06:06:25 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, URIBL_BLOCKED autolearn=unavailable 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 0C37D27BBE9 for ; Wed, 19 Oct 2022 06:06:25 +0100 (BST) Received: from localhost ([::1]:32936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ol1Hc-0006ht-1o for patchwork@mira.cbaines.net; Wed, 19 Oct 2022 01:06:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33504) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ol1HJ-0006hA-6T for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:06 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:56417) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ol1HH-0004u9-Un for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ol1HG-0003Yv-No for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#58621] [PATCH 3/3] import/utils: spdx-string->license: Support '+' operator. Resent-From: Philip McGrath Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 19 Oct 2022 05:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58621 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 58621@debbugs.gnu.org Cc: Philip McGrath Received: via spool by 58621-submit@debbugs.gnu.org id=B58621.166615591913625 (code B ref 58621); Wed, 19 Oct 2022 05:06:02 +0000 Received: (at 58621) by debbugs.gnu.org; 19 Oct 2022 05:05:19 +0000 Received: from localhost ([127.0.0.1]:55493 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol1GY-0003Xc-Sk for submit@debbugs.gnu.org; Wed, 19 Oct 2022 01:05:19 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:57565) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol1GU-0003Wz-Lt for 58621@debbugs.gnu.org; Wed, 19 Oct 2022 01:05:15 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 9E7935C0182; Wed, 19 Oct 2022 01:05:09 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 19 Oct 2022 01:05:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= philipmcgrath.com; h=cc:cc:content-transfer-encoding:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm3; t= 1666155909; x=1666242309; bh=NSlQHlhhE6pwUxXhIwzpwykYucp3Dq4GEdi 0vPQb7Go=; b=eOjw2+uQzhhVaeQ8zsvV+DEhGBWLsfNrlOLLzS2BB3oMPSMUpYD NVx8KsXi3ENwp3u+Yfg9uVtf8tlGM0uJAlK25WJvu/RGrZYLGHHGPKzjmZOijcEK djSUQuasyo4rfVxtan163Agq3OmN4kkC0KiFpSS85WFFSLPIecKqi8x8KJnApGS7 hLsEKFYep2s3zat/rR3j4yqd0OCo/RnrJJBV8bLlnuCRGNjwjFeFe1g4khIY0jxh KJSSwN2mepWaQbeHrJFpGIPy4PcsLzb/nsoFPy27wJMzyuRn0CfSOyRJkKJ0pmwj 4OIKpr7IFRxpeTCoXSKKKtyPyYIki1TGjkg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; t=1666155909; x=1666242309; bh=NSlQHlhhE6pwU xXhIwzpwykYucp3Dq4GEdi0vPQb7Go=; b=dFLHbDTnFhRki1FeR+pPAS+iIGH1m 7FOe3KCCILIAW8EK5yXlzWAP0OV0o5WuorFOrEllmtfG68pKpfwd0ldb3VdX9mf4 360kpXcsBz5ocPhyk6+SrolaXMjzCQiidL3ce6T+Ulv5zUDJF4Rq8uMjqtEMmC2B EahNW92Ws64ixd4PVXRerZCEXTPIxW6vwxv2zxPy410cMlteyGPf7g0zW7DdddUC ijdpZfC/tLYGHf+zU4fdByvbu21Ee+8ZwXoUFvIBDbZc7WmNweT3IlUcRqX224S/ HGrL5/1NaBcAwApiQkgPxApb+FT7Bk1QGbhRyElu0TzbqQQT9FY9740VQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeelfedgledtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucgoufhushhpvggtthffohhmrghinhculdegledmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomheprfhhihhl ihhpucfotgfirhgrthhhuceophhhihhlihhpsehphhhilhhiphhmtghgrhgrthhhrdgtoh hmqeenucggtffrrghtthgvrhhnpeeugeetteehjefgkeffvedukeelffeitdefvdeffedu geefgeeiteehjeeludeiteenucffohhmrghinhepghhithhhuhgsrdhiohenucevlhhush htvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehphhhilhhiphesphhh ihhlihhpmhgtghhrrghthhdrtghomh X-ME-Proxy: Feedback-ID: i2b1146f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 19 Oct 2022 01:05:09 -0400 (EDT) From: Philip McGrath Date: Wed, 19 Oct 2022 01:04:49 -0400 Message-Id: <13f3bbfbd88f0e9c984fd61a5c936de08d814ce0.1666146461.git.philip@philipmcgrath.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: 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: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches Previously, '+' was supported only via special cases for deprecated GNU identifiers like 'GPL-N+'. This commit adds support for other uses of '+', such as 'AFL-2.0+' and 'LPPL-1.0+'. Strictly speaking, '+' is an operator, not part of the SPDX license identifier, but it is useful to handle it here. * guix/import/utils.scm (spdx-string->license): Support '+' operator. --- guix/import/utils.scm | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 9944b606f3..a32fa4857e 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -139,10 +139,11 @@ (define %spdx-license-identifiers ;; Please update guix/licenses.scm when modifying ;; this list to avoid mismatches. ;; - ;; "GPL-N+" has been deprecated in favour of "GPL-N-or-later". - ;; "GPL-N" has been deprecated in favour of "GPL-N-only" - ;; or "GPL-N-or-later" as appropriate. Likewise for LGPL - ;; and AGPL. + ;; "GPL-N+" has been deprecated in favour of "GPL-N-or-later". "GPL-N" has + ;; been deprecated in favour of "GPL-N-only" or "GPL-N-or-later" as + ;; appropriate. Likewise for LGPL and AGPL. However, we list the + ;; deprecated forms here (with and without the "+" operator) to get better + ;; results from old license expressions. '(("AGPL-1.0" . license:agpl1) ("AGPL-1.0-only" . license:agpl1) ("AGPL-3.0" . license:agpl3) @@ -255,10 +256,11 @@ (define %spdx-license-identifiers ("Zlib" . license:zlib))) (define (spdx-string->license str) - "Convert STR, an SPDX license identifier, to a symbol like 'license:gpl3+ -giving the prefixed name of a license object exported from (guix licenses). -Return #f if STR does not match any known SPDX license identifiers. Per the -SPDX specification, license identifiers are compared case-insensitively." + "Convert STR, an SPDX license identifier (possibly with a postfix + +operator), to a symbol like 'license:gpl3+ giving the prefixed name of a +license object exported from (guix licenses). Return #f if STR does not match +any known SPDX license identifiers. Per the SPDX specification, license +identifiers are compared case-insensitively." ;; https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/#d2-case-sensitivity ;; Operators AND, OR, and WITH are case-sensitive, but identifiers are ;; case-insensitive for matching, though the canonical case is used in URIs. @@ -266,7 +268,11 @@ (define (spdx-string->license str) ((_ . license) license) (#f - #f))) + (and (string-suffix? "+" str) + ;; We try the form with the + to support deprecated identifiers for + ;; GNU licenses (see above). Here, we handle other uses of +. + (spdx-string->license + (substring str 0 (- (string-length str) 1))))))) (define (license->symbol license) "Convert LICENSE object to a prefixed symbol representing the variable the