From patchwork Wed Oct 19 05:04:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Philip McGrath X-Patchwork-Id: 43709 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 7BB6027BBE9; Wed, 19 Oct 2022 06:06:26 +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 5DF9E27BBED for ; Wed, 19 Oct 2022 06:06:25 +0100 (BST) Received: from localhost ([::1]:32918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ol1Hc-0006hj-BW for patchwork@mira.cbaines.net; Wed, 19 Oct 2022 01:06:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33500) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ol1HG-0006gT-FS for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:56415) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ol1HG-0004tw-68 for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ol1HF-0003Yg-Sg for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#58621] [PATCH 1/3] import/utils: spdx-string->license: Fix incorrect docstring. Resent-From: Philip McGrath Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 19 Oct 2022 05:06:01 +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.166615591413593 (code B ref 58621); Wed, 19 Oct 2022 05:06:01 +0000 Received: (at 58621) by debbugs.gnu.org; 19 Oct 2022 05:05:14 +0000 Received: from localhost ([127.0.0.1]:55483 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol1GT-0003XB-KI for submit@debbugs.gnu.org; Wed, 19 Oct 2022 01:05:14 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:44889) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol1GQ-0003Wt-Hw for 58621@debbugs.gnu.org; Wed, 19 Oct 2022 01:05:12 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 459E05C0186; Wed, 19 Oct 2022 01:05:05 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Wed, 19 Oct 2022 01:05:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= philipmcgrath.com; h=cc:cc:content-transfer-encoding :content-type: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=1666155905; x=1666242305; bh=Zc8xR/Rfe3 HBBiAq5450A9BOh0IUsTjn6mamBVeZE1U=; b=PrseJc4PlTHE6N8FFn4LAvc9gK dRDV0JWK4CXTXdKSEx4dYjSBsmQdkBaA03yBPquCZM37XQh7sMeJCpB7xVdPq5HM cA3pi1MG/Yz486H0K6KQh6HzuGm6osEQsrjjpEf7ExjRlqfR2QlrRy/5CFbrqG/f 8NpbZuhlCnM2YB9FHS0caWOFKTTPADDPSmxI+DZbtf8UutUhQtPGe0tzXfpYhEwN L0j5K6rSJ5hZL8+dKLcqihAzRt4Az6so6l6nO3jpx8uumgp1nHrwcnDKMrOLdPL1 Z+RBOxLKIQamy44E7PO6XHNFZRjB9FvC8tQd8R7e+hz8Zvaom1MHaD5PJtHA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type: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=1666155905; x= 1666242305; bh=Zc8xR/Rfe3HBBiAq5450A9BOh0IUsTjn6mamBVeZE1U=; b=K 7eLGOOjHhwpm9F1FhMbSlEgY5o65lJCIxuuSZZkLlEEyTuynribllqZrewWqjLbr d0IDEmpBRZPhWhdkyII9kbT1pO/OMADVWSy1dXjCWRLZg/TLC64gOJ6fnZKjPO8U rhwuO+PZCnh/9/HbcOtCuBffZlC3KiVhrj3EB3ajqN2jTWxyt78P2rPVxyEGJZOZ rM9WUHmQJ2K8Wg+WschSAvVHf8ie2+ugQRpZ/R9C2y9g+JG5rdtxO5sq239N/5sA 6yABuYhR2viomvEGo+SVNo67FRD2nyUdIOPd4MXXkfdclTabDY/cBX2WbUjrBeQk 5clhlceuivilFGodfiFsQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeelfedgleduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucgfrhhlucfvnfffucdludejmdenucfjughrpefhvf evufffkffojghfgggtgfesthekredtredtjeenucfhrhhomheprfhhihhlihhpucfotgfi rhgrthhhuceophhhihhlihhpsehphhhilhhiphhmtghgrhgrthhhrdgtohhmqeenucggtf frrghtthgvrhhnpeeuveekgeelteeuleetvedvudelhfegueefhfdvfeffveeludfhtddv ieelgeffteenucffohhmrghinhepshhpugigrdhorhhgnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepphhhihhlihhpsehphhhilhhiphhmtghg rhgrthhhrdgtohhm X-ME-Proxy: Feedback-ID: i2b1146f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 19 Oct 2022 01:05:04 -0400 (EDT) From: Philip McGrath Date: Wed, 19 Oct 2022 01:04:47 -0400 Message-Id: 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 The result of 'spdx-string->license' is a symbol, not a license object. * guix/import/utils.scm (spdx-string->license): Fix docstring. (license->symbol): Mention 'license:' prefix in docstring. --- guix/import/utils.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 5420037d1d..6afb009a00 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2021 Xinglu Chen ;;; Copyright © 2022 Alice Brenon ;;; Copyright © 2022 Kyle Meyer +;;; Copyright © 2022 Philip McGrath ;;; ;;; This file is part of GNU Guix. ;;; @@ -131,8 +132,9 @@ (define (guix-hash-url filename) (bytevector->nix-base32-string (file-sha256 filename))) (define (spdx-string->license str) - "Convert STR, a SPDX formatted license identifier, to a license object. - Return #f if STR does not match any known identifiers." + "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." ;; https://spdx.org/licenses/ ;; The gfl1.0, nmap, repoze ;; licenses doesn't have SPDX identifiers @@ -257,8 +259,9 @@ (define (spdx-string->license str) (_ #f))) (define (license->symbol license) - "Convert license to a symbol representing the variable the object is bound -to in the (guix licenses) module, or #f if there is no such known license." + "Convert LICENSE object to a prefixed symbol representing the variable the +object is bound to in the (guix licenses) module, such as 'license:gpl3+, or +#f if there is no such known license." (define licenses (module-map (lambda (sym var) `(,(variable-ref var) . ,sym)) (resolve-interface '(guix licenses) #:prefix 'license:))) From patchwork Wed Oct 19 05:04:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip McGrath X-Patchwork-Id: 43708 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 D865F27BBE9; Wed, 19 Oct 2022 06:06:26 +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 1EEDB27BBEA for ; Wed, 19 Oct 2022 06:06:25 +0100 (BST) Received: from localhost ([::1]:32920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ol1Hc-0006hq-80 for patchwork@mira.cbaines.net; Wed, 19 Oct 2022 01:06:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33502) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ol1HG-0006ga-MS for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:05 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:56416) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ol1HG-0004u1-EZ for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ol1HG-0003Yo-9J for guix-patches@gnu.org; Wed, 19 Oct 2022 01:06:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#58621] [PATCH 2/3] import/utils: spdx-string->license: Match case-insensitively. 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.166615591913619 (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]:55491 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol1GY-0003XZ-3p for submit@debbugs.gnu.org; Wed, 19 Oct 2022 01:05:18 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:55411) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol1GU-0003Wy-3O for 58621@debbugs.gnu.org; Wed, 19 Oct 2022 01:05:15 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 112E45C018D; Wed, 19 Oct 2022 01:05:09 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.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=2KoWng5h3GnQj1kAz2f4QMu1h1ksF7xyzdt 423gGh4w=; b=OWinxBjdOhfRsI8CTdlO1WAvjaIL2n1FnY/B86F3YW6GDHcDVfV jGZR9DWRnSXi62XqZhi+W2VSQfECDSap8AE7madqZbbFgiGD6l6IwyVVDuBEVc1a u+kSQL0gw/3zGH1GoGiTSu7zM4nJqHsnqcacp1en7c3/YU0uAcSl3yyVK1YyXmv9 uJI8DBNqqRbMNnbK0XZufVsf8giJpV+7QGvJxRoDOvNpLsL6Qy6EO5enR4FpleUy eok3F5P7SVNYo50/Yts5FtoRKDzsK4YwOjvPJYas6xVnoGkKpMd9zOsAo9IuGITJ iDhSlqK1J2GM7qaetpqszP4zvuwT2B617QA== 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=2KoWng5h3GnQj 1kAz2f4QMu1h1ksF7xyzdt423gGh4w=; b=bQgb9bFyNfxv8YLfel8szsQ9Mx1SF xHC91NxF+1zSMyLey40Zvzl8sI3hU8i9G9snJl71PgGWBi0BaHC0uLfEsk2vymG6 TL+x9p6aNmpyFrG19a7K/luHFXZC/MYaSKKiYZO5Zs7e15DXakMtpDpn4SQp1e1c c8BAiywMLH3J6wVNpPwy1cp8fvKck8T1B1ILygkC/5XlLDruTJ7ukS4tQiPE5NLw 5m73uJDIlKhPUFIbF7d6dug2gP44BxZgGCa5bQk2n6lnWoze2YUiCXe53UPvHlLc uxdDwXnCkQXKqYg9QRS0+pdZIsjy2Fo37zeMTG1v/6N8PUhIZJPSGRpcw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeelfedgledtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucgoufhushhpvggtthffohhmrghinhculdegledmne cujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomheprfhhihhl ihhpucfotgfirhgrthhhuceophhhihhlihhpsehphhhilhhiphhmtghgrhgrthhhrdgtoh hmqeenucggtffrrghtthgvrhhnpedtkeelvedvtedvjeduvdejkeejvdethfelleejffdu veeigeevffffuedttdelueenucffohhmrghinhepshhpugigrdhorhhgpdhgihhthhhusg drihhonecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep phhhihhlihhpsehphhhilhhiphhmtghgrhgrthhhrdgtohhm X-ME-Proxy: Feedback-ID: i2b1146f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 19 Oct 2022 01:05:08 -0400 (EDT) From: Philip McGrath Date: Wed, 19 Oct 2022 01:04:48 -0400 Message-Id: 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 SPDX specifies that license identifiers (unlike the 'AND', 'OR', and 'WITH' operators) are matched case-insensitively. * guix/import/utils.scm (%spdx-license-identifiers): New variable. (spdx-string->license): Search in '%spdx-license-identifiers' using 'string-ci=?'. --- guix/import/utils.scm | 250 ++++++++++++++++++++++-------------------- 1 file changed, 130 insertions(+), 120 deletions(-) diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 6afb009a00..9944b606f3 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -131,132 +131,142 @@ (define (guix-hash-url filename) "Return the hash of FILENAME in nix-base32 format." (bytevector->nix-base32-string (file-sha256 filename))) -(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." +(define %spdx-license-identifiers ;; https://spdx.org/licenses/ ;; The gfl1.0, nmap, repoze ;; licenses doesn't have SPDX identifiers ;; ;; Please update guix/licenses.scm when modifying ;; this list to avoid mismatches. - (match str - ;; "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 - ("AGPL-1.0" 'license:agpl1) - ("AGPL-1.0-only" 'license:agpl1) - ("AGPL-3.0" 'license:agpl3) - ("AGPL-3.0-only" 'license:agpl3) - ("AGPL-3.0-or-later" 'license:agpl3+) - ("Apache-1.1" 'license:asl1.1) - ("Apache-2.0" 'license:asl2.0) - ("APSL-2.0" 'license:apsl2) - ("BSL-1.0" 'license:boost1.0) - ("0BSD" 'license:bsd-0) - ("BSD-2-Clause" 'license:bsd-2) - ("BSD-2-Clause-FreeBSD" 'license:bsd-2) ;flagged as deprecated on spdx - ("BSD-3-Clause" 'license:bsd-3) - ("BSD-4-Clause" 'license:bsd-4) - ("CC0-1.0" 'license:cc0) - ("CC-BY-2.0" 'license:cc-by2.0) - ("CC-BY-3.0" 'license:cc-by3.0) - ("CC-BY-4.0" 'license:cc-by4.0) - ("CC-BY-SA-2.0" 'license:cc-by-sa2.0) - ("CC-BY-SA-3.0" 'license:cc-by-sa3.0) - ("CC-BY-SA-4.0" 'license:cc-by-sa4.0) - ("CDDL-1.0" 'license:cddl1.0) - ("CDDL-1.1" 'license:cddl1.1) - ("CECILL-2.1" 'license:cecill) - ("CECILL-B" 'license:cecill-b) - ("CECILL-C" 'license:cecill-c) - ("Artistic-2.0" 'license:artistic2.0) - ("ClArtistic" 'license:clarified-artistic) - ("copyleft-next-0.3.0" 'license:copyleft-next) - ("CPL-1.0" 'license:cpl1.0) - ("EPL-1.0" 'license:epl1.0) - ("EPL-2.0" 'license:epl2.0) - ("EUPL-1.2" 'license:eupl1.2) - ("MIT" 'license:expat) - ("MIT-0" 'license:expat-0) - ("FTL" 'license:freetype) - ("FreeBSD-DOC" 'license:freebsd-doc) - ("Freetype" 'license:freetype) - ("FSFAP" 'license:fsf-free) - ("FSFUL" 'license:fsf-free) - ("GFDL-1.1" 'license:fdl1.1+) - ("GFDL-1.1-or-later" 'license:fdl1.1+) - ("GFDL-1.2" 'license:fdl1.2+) - ("GFDL-1.2-or-later" 'license:fdl1.2+) - ("GFDL-1.3" 'license:fdl1.3+) - ("GFDL-1.3-or-later" 'license:fdl1.3+) - ("Giftware" 'license:giftware) - ("GPL-1.0" 'license:gpl1) - ("GPL-1.0-only" 'license:gpl1) - ("GPL-1.0+" 'license:gpl1+) - ("GPL-1.0-or-later" 'license:gpl1+) - ("GPL-2.0" 'license:gpl2) - ("GPL-2.0-only" 'license:gpl2) - ("GPL-2.0+" 'license:gpl2+) - ("GPL-2.0-or-later" 'license:gpl2+) - ("GPL-3.0" 'license:gpl3) - ("GPL-3.0-only" 'license:gpl3) - ("GPL-3.0+" 'license:gpl3+) - ("GPL-3.0-or-later" 'license:gpl3+) - ("HPND" 'license:hpnd) - ("ISC" 'license:isc) - ("IJG" 'license:ijg) - ("Imlib2" 'license:imlib2) - ("IPA" 'license:ipa) - ("IPL-1.0" 'license:ibmpl1.0) - ("LAL-1.3" 'license:lal1.3) - ("LGPL-2.0" 'license:lgpl2.0) - ("LGPL-2.0-only" 'license:lgpl2.0) - ("LGPL-2.0+" 'license:lgpl2.0+) - ("LGPL-2.0-or-later" 'license:lgpl2.0+) - ("LGPL-2.1" 'license:lgpl2.1) - ("LGPL-2.1-only" 'license:lgpl2.1) - ("LGPL-2.1+" 'license:lgpl2.1+) - ("LGPL-2.1-or-later" 'license:lgpl2.1+) - ("LGPL-3.0" 'license:lgpl3) - ("LGPL-3.0-only" 'license:lgpl3) - ("LGPL-3.0+" 'license:lgpl3+) - ("LGPL-3.0-or-later" 'license:lgpl3+) - ("LPPL-1.0" 'license:lppl) - ("LPPL-1.1" 'license:lppl) - ("LPPL-1.2" 'license:lppl1.2) - ("LPPL-1.3a" 'license:lppl1.3a) - ("LPPL-1.3c" 'license:lppl1.3c) - ("MirOS" 'license:miros) - ("MPL-1.0" 'license:mpl1.0) - ("MPL-1.1" 'license:mpl1.1) - ("MPL-2.0" 'license:mpl2.0) - ("MS-PL" 'license:ms-pl) - ("NCSA" 'license:ncsa) - ("OGL-UK-1.0" 'license:ogl-psi1.0) - ("OpenSSL" 'license:openssl) - ("OLDAP-2.8" 'license:openldap2.8) - ("OPL-1.0" 'license:opl1.0+) - ("CUA-OPL-1.0" 'license:cua-opl1.0) - ("PSF-2.0" 'license:psfl) - ("OSL-2.1" 'license:osl2.1) - ("QPL-1.0" 'license:qpl) - ("Ruby" 'license:ruby) - ("SGI-B-2.0" 'license:sgifreeb2.0) - ("OFL-1.1" 'license:silofl1.1) - ("Sleepycat" 'license:sleepycat) - ("TCL" 'license:tcl/tk) - ("Unlicense" 'license:unlicense) - ("Vim" 'license:vim) - ("W3C" 'license:w3c) - ("WTFPL" 'license:wtfpl2) - ("wxWindow" 'license:wxwindows3.1+) ;flagged as deprecated on spdx - ("X11" 'license:x11) - ("ZPL-2.1" 'license:zpl2.1) - ("Zlib" 'license:zlib) - (_ #f))) + ;; + ;; "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. + '(("AGPL-1.0" . license:agpl1) + ("AGPL-1.0-only" . license:agpl1) + ("AGPL-3.0" . license:agpl3) + ("AGPL-3.0-only" . license:agpl3) + ("AGPL-3.0-or-later" . license:agpl3+) + ("Apache-1.1" . license:asl1.1) + ("Apache-2.0" . license:asl2.0) + ("APSL-2.0" . license:apsl2) + ("BSL-1.0" . license:boost1.0) + ("0BSD" . license:bsd-0) + ("BSD-2-Clause" . license:bsd-2) + ("BSD-2-Clause-FreeBSD" . license:bsd-2) ;flagged as deprecated on spdx + ("BSD-3-Clause" . license:bsd-3) + ("BSD-4-Clause" . license:bsd-4) + ("CC0-1.0" . license:cc0) + ("CC-BY-2.0" . license:cc-by2.0) + ("CC-BY-3.0" . license:cc-by3.0) + ("CC-BY-4.0" . license:cc-by4.0) + ("CC-BY-SA-2.0" . license:cc-by-sa2.0) + ("CC-BY-SA-3.0" . license:cc-by-sa3.0) + ("CC-BY-SA-4.0" . license:cc-by-sa4.0) + ("CDDL-1.0" . license:cddl1.0) + ("CDDL-1.1" . license:cddl1.1) + ("CECILL-2.1" . license:cecill) + ("CECILL-B" . license:cecill-b) + ("CECILL-C" . license:cecill-c) + ("Artistic-2.0" . license:artistic2.0) + ("ClArtistic" . license:clarified-artistic) + ("copyleft-next-0.3.0" . license:copyleft-next) + ("CPL-1.0" . license:cpl1.0) + ("EPL-1.0" . license:epl1.0) + ("EPL-2.0" . license:epl2.0) + ("EUPL-1.2" . license:eupl1.2) + ("MIT" . license:expat) + ("MIT-0" . license:expat-0) + ("FTL" . license:freetype) + ("FreeBSD-DOC" . license:freebsd-doc) + ("Freetype" . license:freetype) + ("FSFAP" . license:fsf-free) + ("FSFUL" . license:fsf-free) + ("GFDL-1.1" . license:fdl1.1+) + ("GFDL-1.1-or-later" . license:fdl1.1+) + ("GFDL-1.2" . license:fdl1.2+) + ("GFDL-1.2-or-later" . license:fdl1.2+) + ("GFDL-1.3" . license:fdl1.3+) + ("GFDL-1.3-or-later" . license:fdl1.3+) + ("Giftware" . license:giftware) + ("GPL-1.0" . license:gpl1) + ("GPL-1.0-only" . license:gpl1) + ("GPL-1.0+" . license:gpl1+) + ("GPL-1.0-or-later" . license:gpl1+) + ("GPL-2.0" . license:gpl2) + ("GPL-2.0-only" . license:gpl2) + ("GPL-2.0+" . license:gpl2+) + ("GPL-2.0-or-later" . license:gpl2+) + ("GPL-3.0" . license:gpl3) + ("GPL-3.0-only" . license:gpl3) + ("GPL-3.0+" . license:gpl3+) + ("GPL-3.0-or-later" . license:gpl3+) + ("HPND" . license:hpnd) + ("ISC" . license:isc) + ("IJG" . license:ijg) + ("Imlib2" . license:imlib2) + ("IPA" . license:ipa) + ("IPL-1.0" . license:ibmpl1.0) + ("LAL-1.3" . license:lal1.3) + ("LGPL-2.0" . license:lgpl2.0) + ("LGPL-2.0-only" . license:lgpl2.0) + ("LGPL-2.0+" . license:lgpl2.0+) + ("LGPL-2.0-or-later" . license:lgpl2.0+) + ("LGPL-2.1" . license:lgpl2.1) + ("LGPL-2.1-only" . license:lgpl2.1) + ("LGPL-2.1+" . license:lgpl2.1+) + ("LGPL-2.1-or-later" . license:lgpl2.1+) + ("LGPL-3.0" . license:lgpl3) + ("LGPL-3.0-only" . license:lgpl3) + ("LGPL-3.0+" . license:lgpl3+) + ("LGPL-3.0-or-later" . license:lgpl3+) + ("LPPL-1.0" . license:lppl) + ("LPPL-1.1" . license:lppl) + ("LPPL-1.2" . license:lppl1.2) + ("LPPL-1.3a" . license:lppl1.3a) + ("LPPL-1.3c" . license:lppl1.3c) + ("MirOS" . license:miros) + ("MPL-1.0" . license:mpl1.0) + ("MPL-1.1" . license:mpl1.1) + ("MPL-2.0" . license:mpl2.0) + ("MS-PL" . license:ms-pl) + ("NCSA" . license:ncsa) + ("OGL-UK-1.0" . license:ogl-psi1.0) + ("OpenSSL" . license:openssl) + ("OLDAP-2.8" . license:openldap2.8) + ("OPL-1.0" . license:opl1.0+) + ("CUA-OPL-1.0" . license:cua-opl1.0) + ("PSF-2.0" . license:psfl) + ("OSL-2.1" . license:osl2.1) + ("QPL-1.0" . license:qpl) + ("Ruby" . license:ruby) + ("SGI-B-2.0" . license:sgifreeb2.0) + ("OFL-1.1" . license:silofl1.1) + ("Sleepycat" . license:sleepycat) + ("TCL" . license:tcl/tk) + ("Unlicense" . license:unlicense) + ("Vim" . license:vim) + ("W3C" . license:w3c) + ("WTFPL" . license:wtfpl2) + ("wxWindow" . license:wxwindows3.1+) ;flagged as deprecated on spdx + ("X11" . license:x11) + ("ZPL-2.1" . license:zpl2.1) + ("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." + ;; 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. + (match (assoc str %spdx-license-identifiers string-ci=?) + ((_ . license) + license) + (#f + #f))) (define (license->symbol license) "Convert LICENSE object to a prefixed symbol representing the variable the 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