Last active
August 11, 2025 19:24
-
-
Save vincentarelbundock/8a3ce1486da8aaca62c239daa49c1408 to your computer and use it in GitHub Desktop.
spdx2r
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Name: GNU General Public License | |
Abbrev: GPL | |
Version: 2 | |
SSS: GPL-2 | |
OSI: open (https://opensource.org/licenses/gpl-license) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#GPLv2) | |
File: share/licenses/GPL-2 | |
URL: https://www.r-project.org/Licenses/GPL-2 | |
FOSS: yes | |
SPDX: GPL-2.0-only | |
Name: GNU General Public License | |
Abbrev: GPL | |
Version: 3 | |
SSS: GPL-3 | |
OSI: open (https://opensource.org/licenses/gpl-license) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#GNUGPL) | |
File: share/licenses/GPL-3 | |
URL: https://www.r-project.org/Licenses/GPL-3 | |
FOSS: yes | |
Extensible: yes | |
SPDX: GPL-3.0-only | |
Name: GNU Library General Public License | |
Abbrev: LGPL | |
Version: 2 | |
SSS: LGPL-2 | |
OSI: open (https://opensource.org/license/lgpl-2-0) | |
FSF: free | |
File: share/licenses/LGPL-2 | |
URL: https://www.r-project.org/Licenses/LGPL-2 | |
FOSS: yes | |
SPDX: LGPL-2.0-only | |
Name: GNU Lesser General Public License | |
Abbrev: LGPL | |
Version: 2.1 | |
SSS: LGPL-2.1 | |
OSI: open (https://opensource.org/licenses/lgpl-license) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#LGPLv2.1) | |
File: share/licenses/LGPL-2.1 | |
URL: https://www.r-project.org/Licenses/LGPL-2.1 | |
FOSS: yes | |
SPDX: LGPL-2.1-only | |
Name: GNU Lesser General Public License | |
Abbrev: LGPL | |
Version: 3 | |
SSS: LGPL-3 | |
OSI: open (https://opensource.org/licenses/lgpl-license) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#LGPL) | |
File: share/licenses/LGPL-3 | |
URL: https://www.r-project.org/Licenses/LGPL-3 | |
FOSS: yes | |
Extensible: yes | |
SPDX: LGPL-3.0-only | |
Name: GNU Affero General Public License | |
Abbrev: AGPL | |
Version: 3 | |
SSS: AGPL-3 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#AGPLv3.0) | |
OSI: open (https://opensource.org/licenses/AGPL-3.0) | |
File: share/licenses/AGPL-3 | |
URL: https://www.r-project.org/Licenses/AGPL-3 | |
FOSS: yes | |
Extensible: yes | |
SPDX: AGPL-3.0-only | |
Name: Apache License | |
Version: 1.1 | |
OSI: open but superseded (https://opensource.org/licenses/apachepl-1.1) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#apache1.1) | |
URL: https://www.apache.org/LICENSE-1.1 | |
FOSS: yes | |
SPDX: Apache-1.1 | |
Name: Apache License | |
Version: 2.0 | |
OSI: open (https://opensource.org/licenses/Apache-2.0) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#apache2) | |
File: share/licenses/Apache-2.0 | |
URL: https://www.r-project.org/Licenses/Apache-2.0 | |
FOSS: yes | |
SPDX: Apache-2.0 | |
Name: Artistic License | |
Version: 1.0 | |
SSS: Artistic-1.0 | |
OSI: open but superseded (https://opensource.org/licenses/artistic-license-1.0) | |
FSF: non_free (https://www.gnu.org/licenses/license-list.html#ArtisticLicense) | |
URL: https://www.r-project.org/Licenses/Artistic-1.0 | |
FOSS: no | |
Restricts_use: no | |
SPDX: Artistic-1.0 | |
Name: Artistic License | |
Version: 2.0 | |
SSS: Artistic-2.0 | |
OSI: open (https://opensource.org/licenses/Artistic-2.0) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#ArtisticLicense2) | |
File: share/licenses/Artistic-2.0 | |
URL: https://www.r-project.org/Licenses/Artistic-2.0 | |
FOSS: yes | |
SPDX: Artistic-2.0 | |
Name: CeCILL | |
Abbrev: CeCILL | |
Version: 2 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#CeCILL) | |
URL: https://www.cecill.info/licences/Licence_CeCILL_V2-en.txt | |
FOSS: yes | |
SPDX: CECILL-2.0 | |
Name: CeCILL | |
Abbrev: CeCILL | |
Version: 2.1 | |
SSS: CECILL-2.1 | |
OSI: open (https://opensource.org/license/cecill-2-1/) | |
URL: https://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt | |
FOSS: yes | |
SPDX: CECILL-2.1 | |
Name: FreeBSD License | |
Abbrev: FreeBSD | |
OSI: open (https://opensource.org/licenses/BSD-2-Clause) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#FreeBSD) | |
URL: https://www.freebsd.org/copyright/freebsd-license.html | |
FOSS: yes | |
SPDX: BSD-2-Clause-FreeBSD | |
Name: MIT License | |
Abbrev: MIT | |
OSI: open (https://opensource.org/licenses/MIT) | |
File: share/licenses/MIT | |
URL: https://opensource.org/licenses/mit-license.php | |
FOSS: yes | |
Extensible: yes | |
Note: this is a template, needs + file LICENSE | |
SPDX: MIT | |
Name: Modified BSD License | |
Abbrev: BSD | |
OSI: open (https://opensource.org/licenses/BSD-3-Clause) | |
File: share/licenses/BSD_3_clause | |
FSF: free (https://www.gnu.org/licenses/license-list.html#ModifiedBSD) | |
URL: https://opensource.org/licenses/BSD-3-Clause | |
FOSS: yes | |
Note: do not use: use BSD_2_clause or BSD_3_clause instead | |
SPDX: BSD-3-Clause | |
Name: BSD 2-clause License | |
Abbrev: BSD_2_clause | |
OSI: open (https://opensource.org/licenses/BSD-2-Clause) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#FreeBSD) | |
File: share/licenses/BSD_2_clause | |
URL: https://opensource.org/licenses/BSD-2-Clause | |
FOSS: yes | |
Extensible: yes | |
Note: this is a template, needs + file LICENSE | |
SPDX: BSD-2-Clause | |
Name: BSD 3-clause License | |
Abbrev: BSD_3_clause | |
OSI: open (https://opensource.org/licenses/BSD-3-Clause) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#ModifiedBSD) | |
File: share/licenses/BSD_3_clause | |
URL: https://opensource.org/licenses/BSD-3-Clause | |
FOSS: yes | |
Extensible: yes | |
Note: this is a template, needs + file LICENSE | |
SPDX: BSD-3-Clause | |
Name: Mozilla Public License | |
Abbrev: MPL | |
Version: 1.0 | |
OSI: open but superseded (https://opensource.org/licenses/mozilla1.0) | |
FSF: free | |
URL: http://website-archive.mozilla.org/www.mozilla.org/mpl/MPL/1.0/ | |
FOSS: yes | |
SPDX: MPL-1.0 | |
Name: Mozilla Public License | |
Abbrev: MPL | |
Version: 1.1 | |
OSI: open but superseded (https://opensource.org/licenses/MPL-1.1) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#MPL) | |
URL: https://www.mozilla.org/en-US/MPL/1.1/ | |
FOSS: yes | |
SPDX: MPL-1.1 | |
Name: Mozilla Public License | |
Abbrev: MPL | |
Version: 2.0 | |
OSI: open (https://opensource.org/licenses/MPL-2.0) | |
FSF: free (https://www.gnu.org/licenses/license-list.html#MPL-2.0) | |
URL: https://www.mozilla.org/en-US/MPL/2.0/ | |
FOSS: yes | |
SPDX: MPL-2.0 | |
Name: Common Public License | |
Abbrev: CPL | |
Version: 1.0 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#CommonPublicLicense10) | |
OSI: open but superseded (https://opensource.org/licenses/cpl1.0) | |
URL: https://www.eclipse.org/legal/cpl-v10.html | |
FOSS: yes | |
SPDX: CPL-1.0 | |
Name: Eclipse Public License | |
Version: 1.0 | |
Abbrev: EPL | |
FSF: free (https://www.gnu.org/licenses/license-list.html#EPL) | |
OSI: open (https://opensource.org/licenses/EPL-1.0) | |
URL: https://www.eclipse.org/legal/epl-v10.html | |
FOSS: yes | |
SPDX: EPL-1.0 | |
Name: Lucent Public License | |
Version: 1.02 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#lucent102) | |
OSI: open (https://opensource.org/licenses/LPL-1.02) | |
URL: https://opensource.org/licenses/lucent1.02.php | |
FOSS: yes | |
SPDX: LPL-1.02 | |
Name: European Union Public License | |
Version: 1.1 | |
Abbrev: EUPL | |
FSF: free (https://www.gnu.org/licenses/license-list.html#EUPL) | |
OSI: open but superseded (https://opensource.org/licenses/EUPL-1.1) | |
URL: https://joinup.ec.europa.eu/software/page/eupl | |
FOSS: yes | |
SPDX: EUPL-1.1 | |
Name: European Union Public License | |
Version: 1.2 | |
Abbrev: EUPL | |
FSF: free (https://www.gnu.org/licenses/license-list.html#EUPL) | |
OSI: open (https://opensource.org/licenses/EUPL-1.2) | |
URL: https://joinup.ec.europa.eu/software/page/eupl | |
FOSS: yes | |
SPDX: EUPL-1.2 | |
Name: Creative Commons Attribution 4.0 International License | |
Abbrev: CC BY 4.0 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#ccby) | |
URL: https://creativecommons.org/licenses/by/4.0 | |
FOSS: yes | |
Extensible: yes | |
SPDX: CC-BY-4.0 | |
Name: Creative Commons Attribution-ShareAlike 4.0 International License | |
Abbrev: CC BY-SA 4.0 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#ccbysa) | |
URL: https://creativecommons.org/licenses/by-sa/4.0 | |
FOSS: yes | |
Extensible: yes | |
SPDX: CC-BY-SA-4.0 | |
Name: Creative Commons Attribution-NonCommercial 4.0 International License | |
Abbrev: CC BY-NC 4.0 | |
FSF: non_free (https://www.gnu.org/licenses/license-list.html#CC-BY-NC) | |
URL: https://creativecommons.org/licenses/by-nc/4.0 | |
FOSS: no | |
Extensible: yes | |
Restricts_use: yes | |
SPDX: CC-BY-NC-4.0 | |
Name: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License | |
Abbrev: CC BY-NC-SA 4.0 | |
FSF: non_free (https://www.gnu.org/licenses/license-list.html#CC-BY-NC) | |
URL: https://creativecommons.org/licenses/by-nc-sa/4.0 | |
FOSS: no | |
Extensible: yes | |
Restricts_use: yes | |
SPDX: CC-BY-NC-SA-4.0 | |
Name: Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International License | |
Abbrev: CC BY-NC-ND 4.0 | |
FSF: non_free (https://www.gnu.org/licenses/license-list.html#CC-BY-NC) | |
URL: https://creativecommons.org/licenses/by-nc-nd/4.0 | |
FOSS: no | |
Extensible: yes | |
Restricts_use: yes | |
SPDX: CC-BY-NC-ND-4.0 | |
Name: CC0 | |
FSF: free (https://www.gnu.org/licenses/license-list.html#CC0) | |
OSI: NA (https://opensource.org/faq#cc-zero) | |
File: CC0-1.0 | |
URL: https://www.r-project.org/Licenses/CC0-1.0 | |
FOSS: yes | |
SPDX: CC0-1.0 | |
Name: zlib License | |
Abbrev: Zlib | |
FSF: free (https://www.gnu.org/licenses/license-list.html#ZLib) | |
OSI: open (https://opensource.org/licenses/Zlib) | |
URL: http://www.gzip.org/zlib/zlib_license.html | |
FOSS: yes | |
SPDX: Zlib | |
Name: Boost Software License | |
Version: 1.0 | |
Abbrev: BSL | |
FSF: free (https://www.gnu.org/licenses/license-list.html#boost) | |
OSI: open (https://opensource.org/licenses/BSL-1.0) | |
URL: http://www.boost.org/LICENSE_1_0.txt | |
FOSS: yes | |
SPDX: BSL-1.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
spdx2r <- function(spdx) { | |
if (!is.character(spdx)) { | |
stop("Input must be character") | |
} | |
db <- read.dcf(file.path(R.home("share"), "licenses", "license.db")) | |
# output = basename(File) if available, else SPDX identifier | |
r_format <- ifelse(!is.na(db[, "File"]), basename(db[, "File"]), db[, "SPDX"]) | |
names(r_format) <- db[, "SPDX"] | |
convert_single <- function(single_id) { | |
single_id <- toupper(trimws(single_id)) | |
if (single_id == "" || is.na(single_id)) { | |
return(NA_character_) | |
} | |
single_id <- sub("-only", "", single_id) | |
# Return if perfect match to license.db | |
idx <- match(toupper(single_id), toupper(names(r_format))) | |
if (!is.na(idx)) { | |
return(r_format[idx]) | |
} | |
# -or-later + license.db does not always retain trailing zeros | |
if (grepl("-or-later$", single_id, ignore.case = TRUE)) { | |
base_id <- sub("-or-later", "", single_id, ignore.case = TRUE) | |
base_id_nozero <- c(base_id, sub("-(\\d)\\.0", "-\\1", base_id)) | |
full_id <- sub( | |
pattern = "-(\\d)\\.0-or-later", replacement = " (>= \\1)", | |
x = single_id, ignore.case = TRUE) | |
full_id <- sub( | |
pattern = "-(\\d\\.\\d)-or-later", replacement = " (>= \\1)", | |
x = full_id, ignore.case = TRUE) | |
if (any(toupper(base_id_nozero) %in% toupper(r_format))) { | |
return(full_id) | |
} | |
} | |
return(NA_character_) | |
} | |
convert_compound <- function(compound_id) { | |
compound_id <- trimws(compound_id) | |
# OR -> | | |
if (grepl(" OR ", compound_id, ignore.case = TRUE)) { | |
parts <- strsplit(compound_id, " [Oo][Rr] ", perl = TRUE)[[1]] | |
converted_parts <- sapply(parts, convert_single, USE.NAMES = FALSE) | |
if (any(is.na(converted_parts))) { | |
return(NA_character_) | |
} | |
return(paste(converted_parts, collapse = " | ")) | |
} | |
return(convert_single(compound_id)) | |
} | |
result <- sapply(spdx, convert_compound, USE.NAMES = FALSE) | |
names(result) <- NULL | |
return(result) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Test 1: Main example from GitHub issue | |
stopifnot(identical(spdx2r("GPL-2.0-only OR GPL-3.0-only"), "GPL-2 | GPL-3")) | |
# Test 2: or-later functionality | |
stopifnot(identical(spdx2r("GPL-3.0-or-later"), "GPL (>= 3)")) | |
# Test 3: Single license identifiers | |
stopifnot(identical(spdx2r("GPL-2.0-only"), "GPL-2")) | |
stopifnot(identical(spdx2r("GPL-3.0-only"), "GPL-3")) | |
stopifnot(identical(spdx2r("LGPL-2.1-only"), "LGPL-2.1")) | |
stopifnot(identical(spdx2r("AGPL-3.0-only"), "AGPL-3")) | |
stopifnot(identical(spdx2r("MIT"), "MIT")) | |
stopifnot(identical(spdx2r("Apache-2.0"), "Apache-2.0")) | |
stopifnot(identical(spdx2r("BSD-3-Clause"), "BSD_3_clause")) | |
# Test 4: Unknown license handling | |
stopifnot(identical(spdx2r("UnknownLicense-1.0"), NA_character_)) | |
# Test 5: Multiple OR expressions | |
stopifnot(identical(spdx2r("GPL-2.0-only OR GPL-3.0-only OR LGPL-2.1-only"), "GPL-2 | GPL-3 | LGPL-2.1")) | |
# Test 6: Edge cases | |
stopifnot(identical(spdx2r(" GPL-2.0-only "), "GPL-2")) # Whitespace trimming | |
stopifnot(identical(spdx2r(""), NA_character_)) # Empty string | |
stopifnot(identical(spdx2r(NA_character_), NA_character_)) # NA input | |
# Test 7: Vectorized input | |
vector_input <- c("GPL-2.0-only", "MIT", "UnknownLicense-1.0", "GPL-3.0-or-later") | |
expected_output <- c("GPL-2", "MIT", NA_character_, "GPL (>= 3)") | |
stopifnot(identical(spdx2r(vector_input), expected_output)) | |
# Test 8: Additional GPL variants | |
stopifnot(identical(spdx2r("GPL-2.0-or-later"), "GPL (>= 2)")) | |
stopifnot(identical(spdx2r("LGPL-2.1-or-later"), "LGPL (>= 2.1)")) | |
stopifnot(identical(spdx2r("LGPL-3.0-only"), "LGPL-3")) | |
# Test 9: Case insensitive matching | |
stopifnot(identical(spdx2r("gpl-2.0-only"), "GPL-2")) # Should work - case insensitive | |
stopifnot(identical(spdx2r("GPL-2.0-ONLY"), "GPL-2")) # Should work - case insensitive | |
stopifnot(identical(spdx2r("mit"), "MIT")) # Should work - case insensitive | |
# Test 10: Complex OR expressions with or-later | |
stopifnot(identical(spdx2r("GPL-2.0-or-later OR MIT"), "GPL (>= 2) | MIT")) | |
cat("All tests passed\n") | |
spdx <- c("0BSD", "3D-Slicer-1.0", "AAL", "Abstyles", "AdaCore-doc", "Adobe-2006", "Adobe-Display-PostScript", "Adobe-Glyph", "Adobe-Utopia", "ADSL", "AFL-1.1", "AFL-1.2", "AFL-2.0", "AFL-2.1", "AFL-3.0", "Afmparse", "AGPL-1.0-only", "AGPL-1.0-or-later", "AGPL-3.0-only", "AGPL-3.0-or-later", "Aladdin", "AMD-newlib", "AMDPLPA", "AML", "AML-glslang", "AMPAS", "ANTLR-PD", "ANTLR-PD-fallback", "any-OSI", "any-OSI-perl-modules", "Apache-1.0", "Apache-1.1", "Apache-2.0", "APAFML", "APL-1.0", "App-s2p", "APSL-1.0", "APSL-1.1", "APSL-1.2", "APSL-2.0", "Arphic-1999", "Artistic-1.0", "Artistic-1.0-cl8", "Artistic-1.0-Perl", "Artistic-2.0", "Artistic-dist", "Aspell-RU", "ASWF-Digital-Assets-1.0", "ASWF-Digital-Assets-1.1", "Baekmuk", "Bahyph", "Barr", "bcrypt-Solar-Designer", "Beerware", "Bitstream-Charter", "Bitstream-Vera", "BitTorrent-1.0", "BitTorrent-1.1", "blessing", "BlueOak-1.0.0", "Boehm-GC", "Boehm-GC-without-fee", "Borceux", "Brian-Gladman-2-Clause", "Brian-Gladman-3-Clause", "BSD-1-Clause", "BSD-2-Clause", "BSD-2-Clause-Darwin", "BSD-2-Clause-first-lines", "BSD-2-Clause-Patent", "BSD-2-Clause-pkgconf-disclaimer", "BSD-2-Clause-Views" , "BSD-3-Clause", "BSD-3-Clause-acpica", "BSD-3-Clause-Attribution", "BSD-3-Clause-Clear", "BSD-3-Clause-flex", "BSD-3-Clause-HP", "BSD-3-Clause-LBNL", "BSD-3-Clause-Modification", "BSD-3-Clause-No-Military-Li cense", "BSD-3-Clause-No-Nuclear-License", "BSD-3-Clause-No-Nuclear-License-2014", "BSD-3-Clause-No-Nuclear-Warranty", "BSD-3-Clause-Open-MPI", "BSD-3-Clause-Sun", "BSD-4-Clause", "BSD-4-Clause-Shortened", "BSD-4-Clause-UC", "BSD-4.3RENO", "BSD-4.3TAHOE", "BSD-Advertising-Acknowledge ment", "BSD-Attribution-HPND-disclaimer", "BSD-Inferno-Nettverk", "BSD-Protection", "BSD-Source-beginning-file", "BSD-Source-Code", "BSD-Systemics", "BSD-Systemics-W3Works", "BSL-1.0", "BUSL-1.1", "bzip2-1.0.6", "C-UDA-1.0", "CAL-1.0", "CAL-1.0-Combined-Work-Exception", "Caldera", "Caldera-no-preamble", "Catharon", "CATOSL-1.1", "CC-BY-1.0", "CC-BY-2.0", "CC-BY-2.5", "CC-BY-2.5-AU", "CC-BY-3.0", "CC-BY-3.0-AT", "CC-BY-3.0-AU", "CC-BY-3.0-DE", "CC-BY-3.0-IGO", "CC-BY-3.0-NL", "CC-BY-3.0-US", "CC-BY-4.0", "CC-BY-NC-1.0", "CC-BY-NC-2.0", "CC-BY-NC-2.5", "CC-BY-NC-3.0", "CC-BY-NC-3.0-DE", "CC-BY-NC-4.0", "CC-BY-NC-ND-1.0", "CC-BY-NC-ND-2.0", "CC-BY-NC-ND-2.5", "CC-BY-NC-ND-3.0", "CC-BY-NC-ND-3.0-DE", "CC-BY-NC-ND-3.0-IGO", "CC-BY-NC-ND-4.0", "CC-BY-NC-SA-1.0", "CC-BY-NC-SA-2.0", "CC-BY-NC-SA-2.0-DE", "CC-BY-NC-SA-2.0-F R", "CC-BY-NC-SA-2.0-UK", "CC-BY-NC-SA-2.5", "CC-BY-NC-SA-3.0", "CC-BY-NC-SA-3.0-D E", "CC-BY-NC-SA-3.0-IGO", "CC-BY-NC-SA-4.0", "CC-BY-ND-1.0", "CC-BY-ND-2.0", "CC-BY-ND-2.5", "CC-BY-ND-3.0", "CC-BY-ND-3.0-DE", "CC-BY-ND-4.0", "CC-BY-SA-1.0", "CC-BY-SA-2.0", "CC-BY-SA-2.0-UK", "CC-BY-SA-2.1-JP", "CC-BY-SA-2.5", "CC-BY-SA-3.0", "CC-BY-SA-3.0-AT", "CC-BY-SA-3.0-DE", "CC-BY-SA-3.0-IGO", "CC-BY-SA-4.0", "CC-PDDC", "CC-PDM-1.0", "CC-SA-1.0", "CC0-1.0", "CDDL-1.0", "CDDL-1.1", "CDL-1.0", "CDLA-Permissive-1. 0", "CDLA-Permissive-2.0", "CDLA-Sharing-1.0", "CECILL-1.0", "CECILL-1.1", "CECILL-2.0", "CECILL-2.1", "CECILL-B", "CECILL-C", "CERN-OHL-1.1", "CERN-OHL-1.2", "CERN-OHL-P-2.0", "CERN-OHL-S-2.0", "CERN-OHL-W-2.0", "CFITSIO", "check-cvs", "checkmk", "ClArtistic", "Clips", "CMU-Mach", "CMU-Mach-nodoc", "CNRI-Jython", "CNRI-Python", "CNRI-Python-GPL-Compatible", "COIL-1.0", "Community-Spec-1.0", "Condor-1.1", "copyleft-next-0.3.0", "copyleft-next-0.3.1", "Cornell-Lossless-JPEG", "CPAL-1.0", "CPL-1.0", "CPOL-1.02", "Cronyx", "Crossword", "CryptoSwift", "CrystalStacker", "CUA-OPL-1.0", "Cube", "curl", "cve-tou", "D-FSL-1.0", "DEC-3-Clause", "diffmark", "DL-DE-BY-2.0", "DL-DE-ZERO-2.0", "DOC", "DocBook-DTD", "DocBook-Schema", "DocBook-Stylesheet", "DocBook-XML", "Dotseqn", "DRL-1.0", "DRL-1.1", "DSDP", "dtoa", "dvipdfm", "ECL-1.0", "ECL-2.0", "EFL-1.0", "EFL-2.0", "eGenix", "Elastic-2.0", "Entessa", "EPICS", "EPL-1.0", "EPL-2.0", "ErlPL-1.1", "etalab-2.0", "EUDatagrid", "EUPL-1.0", "EUPL-1.1", "EUPL-1.2", "Eurosym", "Fair", "FBM", "FDK-AAC", "Ferguson-Twofish", "Frameworx-1.0", "FreeBSD-DOC", "FreeImage", "FSFAP", "FSFAP-no-warranty-disclaimer", "FSFUL", "FSFULLR", "FSFULLRSD", "FSFULLRWD", "FSL-1.1-ALv2", "FSL-1.1-MIT", "FTL", "Furuseth", "fwlw", "Game-Programming-Gems", "GCR-docs", "GD", "generic-xts", "GFDL-1.1-invariants-only", "GFDL-1.1-invariants-or-later ", "GFDL-1.1-no-invariants-only", "GFDL-1.1-no-invariants-or-later", "GFDL-1.1-only", "GFDL-1.1-or-later", "GFDL-1.2-invariants-only", "GFDL-1.2-invariants-or-later", "GFDL-1.2-no-invariants-only", "GFDL-1.2-no-invariants-or-later", "GFDL-1.2-only", "GFDL-1.2-or-later", "GFDL-1.3-invariants-only", "GFDL-1.3-invariants-or-later", "GFDL-1.3-no-invar iants-only", "GFDL-1.3-no-invariants-or-later", "GFDL-1.3-only", "GFDL-1.3-or-later", "Giftware", "GL2PS", "Glide", "Glulxe", "GLWTPL", "gnuplot", "GPL-1.0-only", "GPL-1.0-or-later", "GPL-2.0-only", "GPL-2.0-or-later", "GPL-3.0-only", "GPL-3.0-or-later", "Graphics-Gems", "gSOAP-1.3b", "gtkbook", "Gutmann", "HaskellReport", "HDF5", "hdparm", "HIDAPI", "Hippocratic-2.1", "HP-1986", "HP-1989", "HPND", "HPND-DEC", "HPND-doc", "HPND-doc-sell", "HPND-export-US", "HPND-export-US-acknowledgement ", "HPND-export-US-modify", "HPND-export2-US", "HPND-Fenneberg-Livingston", "HPND-INRIA-IMAG", "HPND-Intel", "HPND-Kevlin-Henney", "HPND-Markus-Kuhn", "HPND-merchantability-variant", "HPND-MIT-disclaimer", "HPND-Netrek", "HPND-Pbmplus", "HPND-sell-MIT-disclaimer-xserver", "HPND-sell-regexpr", "HPND-sell-variant", "HPND-sell-variant-MIT-disclaimer", "HPND-sell-variant-MI T-disclaimer-rev", "HPND-UC", "HPND-UC-export-US", "HTMLTIDY", "IBM-pibs", "ICU", "IEC-Code-Components-EULA", "IJG", "IJG-short", "ImageMagick", "iMatix", "Imlib2", "Info-ZIP", "Inner-Net-2.0", "InnoSetup", "Intel", "Intel-ACPI", "Interbase-1.0", "IPA", "IPL-1.0", "ISC", "ISC-Veillard", "Jam", "JasPer-2.0", "jove", "JPL-image", "JPNIC", "JSON", "Kastrup", "Kazlib", "Knuth-CTAN", "LAL-1.2", "LAL-1.3", "Latex2e", "Latex2e-translated-notice", "Leptonica", "LGPL-2.0-only", "LGPL-2.0-or-later", "LGPL-2.1-only", "LGPL-2.1-or-later", "LGPL-3.0-only", "LGPL-3.0-or-later", "LGPLLR", "Libpng", "libpng-1.6.35", "libpng-2.0", "libselinux-1.0", "libtiff", "libutil-David-Nugent", "LiLiQ-P-1.1", "LiLiQ-R-1.1", "LiLiQ-Rplus-1.1", "Linux-man-pages-1-para", "Linux-man-pages-c opyleft", "Linux-man-pages-copyleft-2-para", "Linux-man-pages-copyleft-var", "Linux-OpenIB", "LOOP", "LPD-document", "LPL-1.0", "LPL-1.02", "LPPL-1.0", "LPPL-1.1", "LPPL-1.2", "LPPL-1.3a", "LPPL-1.3c", "lsof", "Lucida-Bitmap-Fonts", "LZMA-SDK-9.11-to-9.20", "LZMA-SDK-9.22", "Mackerras-3-Clause", "Mackerras-3-Clause-acknowledgment", "magaz", "mailprio", "MakeIndex", "man2html", "Martin-Birgmeier", "McPhee-slideshow", "metamail", "Minpack", "MIPS", "MirOS", "MIT", "MIT-0", "MIT-advertising", "MIT-Click", "MIT-CMU", "MIT-enna", "MIT-feh", "MIT-Festival", "MIT-Khronos-old", "MIT-Modern-Variant", "MIT-open-group", "MIT-testregex", "MIT-Wu", "MITNFA", "MMIXware", "Motosoto", "MPEG-SSG", "mpi-permissive", "mpich2", "MPL-1.0", "MPL-1.1", "MPL-2.0", "MPL-2.0-no-copyleft-exception", "mplus", "MS-LPL", "MS-PL", "MS-RL", "MTLL", "MulanPSL-1.0", "MulanPSL-2.0", "Multics", "Mup", "NAIST-2003", "NASA-1.3", "Naumen", "NBPL-1.0", "NCBI-PD", "NCGL-UK-2.0", "NCL", "NCSA", "NetCDF", "Newsletr", "NGPL", "ngrep", "NICTA-1.0", "NIST-PD", "NIST-PD-fallback", "NIST-Software", "NLOD-1.0", "NLOD-2.0", "NLPL", "Nokia", "NOSL", "Noweb", "NPL-1.0", "NPL-1.1", "NPOSL-3.0", "NRL", "NTIA-PD", "NTP", "NTP-0", "O-UDA-1.0", "OAR", "OCCT-PL", "OCLC-2.0", "ODbL-1.0", "ODC-By-1.0", "OFFIS", "OFL-1.0", "OFL-1.0-no-RFN", "OFL-1.0-RFN", "OFL-1.1", "OFL-1.1-no-RFN", "OFL-1.1-RFN", "OGC-1.0", "OGDL-Taiwan-1.0", "OGL-Canada-2.0", "OGL-UK-1.0", "OGL-UK-2.0", "OGL-UK-3.0", "OGTSL", "OLDAP-1.1", "OLDAP-1.2", "OLDAP-1.3", "OLDAP-1.4", "OLDAP-2.0", "OLDAP-2.0.1", "OLDAP-2.1", "OLDAP-2.2", "OLDAP-2.2.1", "OLDAP-2.2.2", "OLDAP-2.3", "OLDAP-2.4", "OLDAP-2.5", "OLDAP-2.6", "OLDAP-2.7", "OLDAP-2.8", "OLFL-1.3", "OML", "OpenPBS-2.3", "OpenSSL", "OpenSSL-standalone" , "OpenVision", "OPL-1.0", "OPL-UK-3.0", "OPUBL-1.0", "OSET-PL-2.1", "OSL-1.0", "OSL-1.1", "OSL-2.0", "OSL-2.1", "OSL-3.0", "PADL", "Parity-6.0.0", "Parity-7.0.0", "PDDL-1.0", "PHP-3.0", "PHP-3.01", "Pixar", "pkgconf", "Plexus", "pnmstitch", "PolyForm-Noncommercial-1.0.0", "PolyForm-Small-Business-1.0.0", "PostgreSQL", "PPL", "PSF-2.0", "psfrag", "psutils", "Python-2.0", "Python-2.0.1", "python-ldap", "Qhull", "QPL-1.0", "QPL-1.0-INRIA-2004", "radvd", "Rdisc", "RHeCos-1.1", "RPL-1.1", "RPL-1.5", "RPSL-1.0", "RSA-MD", "RSCPL", "Ruby", "Ruby-pty", "SAX-PD", "SAX-PD-2.0", "Saxpath", "SCEA", "SchemeReport", "Sendmail", "Sendmail-8.23", "Sendmail-Open-Source-1.1", "SGI-B-1.0", "SGI-B-1.1", "SGI-B-2.0", "SGI-OpenGL", "SGP4", "SHL-0.5", "SHL-0.51", "SimPL-2.0", "SISSL", "SISSL-1.2", "SL", "Sleepycat", "SMAIL-GPL", "SMLNJ", "SMPPL", "SNIA", "snprintf", "SOFA", "softSurfer", "Soundex", "Spencer-86", "Spencer-94", "Spencer-99", "SPL-1.0", "ssh-keyscan", "SSH-OpenSSH", "SSH-short", "SSLeay-standalone", "SSPL-1.0", "SugarCRM-1.1.3", "SUL-1.0", "Sun-PPP", "Sun-PPP-2000", "SunPro", "SWL", "swrule", "Symlinks", "TAPR-OHL-1.0", "TCL", "TCP-wrappers", "TermReadKey", "TGPPL-1.0", "ThirdEye", "threeparttable", "TMate", "TORQUE-1.1", "TOSL", "TPDL", "TPL-1.0", "TrustedQSL", "TTWL", "TTYP0", "TU-Berlin-1.0", "TU-Berlin-2.0", "Ubuntu-font-1.0", "UCAR", "UCL-1.0", "ulem", "UMich-Merit", "Unicode-3.0", "Unicode-DFS-2015", "Unicode-DFS-2016", "Unicode-TOU", "UnixCrypt", "Unlicense", "Unlicense-libtelnet", "Unlicense-libwhirlpool", "UPL-1.0", "URT-RLE", "Vim", "VOSTROM", "VSL-1.0", "W3C", "W3C-19980720", "W3C-20150513", "w3m", "Watcom-1.0", "Widget-Workshop", "Wsuipa", "WTFPL", "wwl", "X11", "X11-distribute-modifications-variant", "X11-swapped", "Xdebug-1.03", "Xerox", "Xfig", "XFree86-1.1", "xinetd", "xkeyboard-config-Zin oviev", "xlock", "Xnet", "xpp", "XSkat", "xzoom", "YPL-1.0", "YPL-1.1", "Zed", "Zeeff", "Zend-2.0", "Zimbra-1.3", "Zimbra-1.4", "Zlib", "zlib-acknowledgement", "ZPL-1.1", "ZPL-2.0", "ZPL-2.1") | |
spdx <- read.csv("license_spdx.csv")$Identifier | |
results <- data.frame( SPDX = spdx, R = spdx2r(spdx)) |> | |
sort_by(~R) | |
cat(sum(is.na(results$R)), "licenses not found by spdx2r\n") | |
print(na.omit(results)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment