diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2b84d90 --- /dev/null +++ b/Makefile @@ -0,0 +1,78 @@ +# Go projects should have a Makefile for commond build-related tasks. +# See help target for a list of targets and their descriptions. +# +# Debug related targets are commented out until they can be tested. + +# setup defaults +SHELL := $(shell which bash) +CWD_DIR := $(shell pwd) +GITHUB_API_URL ?= https://api.github.com +# DLV_BIN := $(shell go env GOPATH)/bin/dlv +LINT_FILES := ./... + +# provide extra information when format fails +define goformat + files="$$(go fmt ./...)"; \ + if [ -n "$${files}" ]; then \ + echo "❌ ERROR: go files are not properly formatted:"; \ + echo "$$files"; \ + echo ""; \ + echo "run the 'go fmt ./..' command or configure your editor"; \ + exit 1; \ + fi; +endef + +# # install dlv if it is not already installed +# define dlv +# cat /proc/sys/kernel/yama/ptrace_scope | grep 0 || \ +# echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope; \ +# echo "Checking if '$(DLV_BIN)' exist"; \ +# test -f "$(DLV_BIN)" || \ +# echo "Installing dlv..." && \ +# go install github.com/go-delve/delve/cmd/dlv@latest && \ +# echo "Installed dlv"; +# endef + +# NOTE: Targets defined with .PHONY are not files, they execute commands. + +# clean up the go modules files +.PHONY: tidy +tidy: + @echo "==> starting tidy" + go mod tidy + +# go format this project +.PHONY: format +format: + @echo "==> starting format" + @$(call goformat) + +# run some go test +.PHONY: test +test: + @echo "==> starting test" + go test ./... + +# runs linter for all files +.PHONY: lint-all +lint-all: + @echo "==> starting lint for directory: ${LINT_FILES}" + golangci-lint run ${LINT_FILES} + +# runs linter for only files with diffs from origin/main (useful for PRs) +.PHONY: lint +lint: + @echo "==> starting lint for changed files" + golangci-lint run --whole-files --new-from-rev=origin/main + +.PHONY: help +help: + @echo "Usage: make " + @echo "" + @echo "Targets:" + @echo " tidy - clean up the go modules files" + @echo " format - go format this project" + @echo " test - run some go test" + @echo " lint-all - runs linter for all files (optional pass in LINT_FILES=path_to_dir_or_file_to_check)" + @echo " lint - runs linter for only files with diffs from origin/main (useful for PRs)" + @echo " help - this help message" diff --git a/spdxexp/license.go b/spdxexp/license.go index 1c208a6..b47ef45 100644 --- a/spdxexp/license.go +++ b/spdxexp/license.go @@ -2,21 +2,23 @@ package spdxexp import ( "strings" + + "github.com/github/go-spdx/v2/spdxexp/spdxlicenses" ) // activeLicense returns true if the id is an active license. func activeLicense(id string) (bool, string) { - return inLicenseList(getLicenses(), id) + return inLicenseList(spdxlicenses.GetLicenses(), id) } // deprecatedLicense returns true if the id is a deprecated license. func deprecatedLicense(id string) (bool, string) { - return inLicenseList(getDeprecated(), id) + return inLicenseList(spdxlicenses.GetDeprecated(), id) } // exceptionLicense returns true if the id is an exception license. func exceptionLicense(id string) (bool, string) { - return inLicenseList(getExceptions(), id) + return inLicenseList(spdxlicenses.GetExceptions(), id) } // inLicenseList looks for id in the list of licenses. The check is case-insensitive (e.g. "mit" will match "MIT"). @@ -43,7 +45,7 @@ type licenseRange struct { // getLicenseRange returns a range of licenses from licenseRanges func getLicenseRange(id string) *licenseRange { simpleID := simplifyLicense(id) - allRanges := licenseRanges() + allRanges := spdxlicenses.LicenseRanges() for i, licenseGrp := range allRanges { for j, versionGrp := range licenseGrp { for k, license := range versionGrp { @@ -70,1047 +72,3 @@ func simplifyLicense(id string) string { } return id } - -func getLicenses() []string { - return []string{ - "0BSD", - "AAL", - "Abstyles", - "Adobe-2006", - "Adobe-Glyph", - "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", - "AMDPLPA", - "AML", - "AMPAS", - "ANTLR-PD", - "ANTLR-PD-fallback", - "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", - "Baekmuk", - "Bahyph", - "Barr", - "Beerware", - "Bitstream-Charter", - "Bitstream-Vera", - "BitTorrent-1.0", - "BitTorrent-1.1", - "blessing", - "BlueOak-1.0.0", - "Borceux", - "BSD-1-Clause", - "BSD-2-Clause", - "BSD-2-Clause-Patent", - "BSD-2-Clause-Views", - "BSD-3-Clause", - "BSD-3-Clause-Attribution", - "BSD-3-Clause-Clear", - "BSD-3-Clause-LBNL", - "BSD-3-Clause-Modification", - "BSD-3-Clause-No-Military-License", - "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-4-Clause", - "BSD-4-Clause-Shortened", - "BSD-4-Clause-UC", - "BSD-Protection", - "BSD-Source-Code", - "BSL-1.0", - "BUSL-1.1", - "bzip2-1.0.6", - "C-UDA-1.0", - "CAL-1.0", - "CAL-1.0-Combined-Work-Exception", - "Caldera", - "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-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-FR", - "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-DE", - "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-4.0", - "CC-PDDC", - "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", - "checkmk", - "ClArtistic", - "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", - "CPAL-1.0", - "CPL-1.0", - "CPOL-1.02", - "Crossword", - "CrystalStacker", - "CUA-OPL-1.0", - "Cube", - "curl", - "D-FSL-1.0", - "diffmark", - "DL-DE-BY-2.0", - "DOC", - "Dotseqn", - "DRL-1.0", - "DSDP", - "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", - "FDK-AAC", - "Frameworx-1.0", - "FreeBSD-DOC", - "FreeImage", - "FSFAP", - "FSFUL", - "FSFULLR", - "FSFULLRWD", - "FTL", - "GD", - "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-invariants-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", - "HaskellReport", - "Hippocratic-2.1", - "HPND", - "HPND-export-US", - "HPND-sell-variant", - "HTMLTIDY", - "IBM-pibs", - "ICU", - "IJG", - "IJG-short", - "ImageMagick", - "iMatix", - "Imlib2", - "Info-ZIP", - "Intel", - "Intel-ACPI", - "Interbase-1.0", - "IPA", - "IPL-1.0", - "ISC", - "Jam", - "JasPer-2.0", - "JPNIC", - "JSON", - "Knuth-CTAN", - "LAL-1.2", - "LAL-1.3", - "Latex2e", - "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-2.0", - "libselinux-1.0", - "libtiff", - "libutil-David-Nugent", - "LiLiQ-P-1.1", - "LiLiQ-R-1.1", - "LiLiQ-Rplus-1.1", - "Linux-man-pages-copyleft", - "Linux-OpenIB", - "LOOP", - "LPL-1.0", - "LPL-1.02", - "LPPL-1.0", - "LPPL-1.1", - "LPPL-1.2", - "LPPL-1.3a", - "LPPL-1.3c", - "LZMA-SDK-9.11-to-9.20", - "LZMA-SDK-9.22", - "MakeIndex", - "Minpack", - "MirOS", - "MIT", - "MIT-0", - "MIT-advertising", - "MIT-CMU", - "MIT-enna", - "MIT-feh", - "MIT-Modern-Variant", - "MIT-open-group", - "MIT-Wu", - "MITNFA", - "Motosoto", - "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", - "NCGL-UK-2.0", - "NCSA", - "Net-SNMP", - "NetCDF", - "Newsletr", - "NGPL", - "NICTA-1.0", - "NIST-PD", - "NIST-PD-fallback", - "NLOD-1.0", - "NLOD-2.0", - "NLPL", - "Nokia", - "NOSL", - "Noweb", - "NPL-1.0", - "NPL-1.1", - "NPOSL-3.0", - "NRL", - "NTP", - "NTP-0", - "O-UDA-1.0", - "OCCT-PL", - "OCLC-2.0", - "ODbL-1.0", - "ODC-By-1.0", - "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", - "OML", - "OpenSSL", - "OPL-1.0", - "OPUBL-1.0", - "OSET-PL-2.1", - "OSL-1.0", - "OSL-1.1", - "OSL-2.0", - "OSL-2.1", - "OSL-3.0", - "Parity-6.0.0", - "Parity-7.0.0", - "PDDL-1.0", - "PHP-3.0", - "PHP-3.01", - "Plexus", - "PolyForm-Noncommercial-1.0.0", - "PolyForm-Small-Business-1.0.0", - "PostgreSQL", - "PSF-2.0", - "psfrag", - "psutils", - "Python-2.0", - "Python-2.0.1", - "Qhull", - "QPL-1.0", - "Rdisc", - "RHeCos-1.1", - "RPL-1.1", - "RPL-1.5", - "RPSL-1.0", - "RSA-MD", - "RSCPL", - "Ruby", - "SAX-PD", - "Saxpath", - "SCEA", - "SchemeReport", - "Sendmail", - "Sendmail-8.23", - "SGI-B-1.0", - "SGI-B-1.1", - "SGI-B-2.0", - "SHL-0.5", - "SHL-0.51", - "SimPL-2.0", - "SISSL", - "SISSL-1.2", - "Sleepycat", - "SMLNJ", - "SMPPL", - "SNIA", - "Spencer-86", - "Spencer-94", - "Spencer-99", - "SPL-1.0", - "SSH-OpenSSH", - "SSH-short", - "SSPL-1.0", - "SugarCRM-1.1.3", - "SWL", - "Symlinks", - "TAPR-OHL-1.0", - "TCL", - "TCP-wrappers", - "TMate", - "TORQUE-1.1", - "TOSL", - "TPDL", - "TTWL", - "TU-Berlin-1.0", - "TU-Berlin-2.0", - "UCL-1.0", - "Unicode-DFS-2015", - "Unicode-DFS-2016", - "Unicode-TOU", - "Unlicense", - "UPL-1.0", - "Vim", - "VOSTROM", - "VSL-1.0", - "W3C", - "W3C-19980720", - "W3C-20150513", - "Watcom-1.0", - "Wsuipa", - "WTFPL", - "X11", - "X11-distribute-modifications-variant", - "Xerox", - "XFree86-1.1", - "xinetd", - "Xnet", - "xpp", - "XSkat", - "YPL-1.0", - "YPL-1.1", - "Zed", - "Zend-2.0", - "Zimbra-1.3", - "Zimbra-1.4", - "Zlib", - "zlib-acknowledgement", - "ZPL-1.1", - "ZPL-2.0", - "ZPL-2.1", - } -} - -func getDeprecated() []string { - return []string{ - "AGPL-1.0", - "AGPL-3.0", - "BSD-2-Clause-FreeBSD", - "BSD-2-Clause-NetBSD", - "bzip2-1.0.5", - "eCos-2.0", - "GFDL-1.1", - "GFDL-1.2", - "GFDL-1.3", - "GPL-1.0", - "GPL-1.0+", - "GPL-2.0", - "GPL-2.0+", - "GPL-2.0-with-autoconf-exception", - "GPL-2.0-with-bison-exception", - "GPL-2.0-with-classpath-exception", - "GPL-2.0-with-font-exception", - "GPL-2.0-with-GCC-exception", - "GPL-3.0", - "GPL-3.0+", - "GPL-3.0-with-autoconf-exception", - "GPL-3.0-with-GCC-exception", - "LGPL-2.0", - "LGPL-2.0+", - "LGPL-2.1", - "LGPL-2.1+", - "LGPL-3.0", - "LGPL-3.0+", - "Nunit", - "StandardML-NJ", - "wxWindows", - } -} - -func getExceptions() []string { - return []string{ - "389-exception", - "Autoconf-exception-2.0", - "Autoconf-exception-3.0", - "Bison-exception-2.2", - "Bootloader-exception", - "Classpath-exception-2.0", - "CLISP-exception-2.0", - "DigiRule-FOSS-exception", - "eCos-exception-2.0", - "Fawkes-Runtime-exception", - "FLTK-exception", - "Font-exception-2.0", - "freertos-exception-2.0", - "GCC-exception-2.0", - "GCC-exception-3.1", - "gnu-javamail-exception", - "GPL-3.0-linking-exception", - "GPL-3.0-linking-source-exception", - "GPL-CC-1.0", - "GStreamer-exception-2005", - "GStreamer-exception-2008", - "i2p-gpl-java-exception", - "KiCad-libraries-exception", - "LGPL-3.0-linking-exception", - "Libtool-exception", - "Linux-syscall-note", - "LLVM-exception", - "LZMA-exception", - "mif-exception", - "OCaml-LGPL-linking-exception", - "OCCT-exception-1.0", - "OpenJDK-assembly-exception-1.0", - "openvpn-openssl-exception", - "PS-or-PDF-font-exception-20170817", - "Qt-GPL-exception-1.0", - "Qt-LGPL-exception-1.1", - "Qwt-exception-1.0", - "SHL-2.0", - "SHL-2.1", - "Swift-exception", - "u-boot-exception-2.0", - "Universal-FOSS-exception-1.0", - "WxWindows-exception-3.1", - "x11vnc-openssl-exception", - } -} - -// licenseRanges returns a list of license ranges. -// -// Ranges are organized into groups (referred to as license groups) of the same base license (e.g. GPL). -// Groups have sub-groups of license versions (referred to as the range) where each member is considered -// to be the same version (e.g. {GPL-2.0, GPL-2.0-only}). The sub-groups are in ascending order within -// the license group, such that the first sub-group is considered to be less than the second sub-group, -// and so on. (e.g. {{GPL-1.0}, {GPL-2.0, GPL-2.0-only}} implies {GPL-1.0} < {GPL-2.0, GPL-2.0-only}). -func licenseRanges() [][][]string { - return [][][]string{ - { - { - "AFL-1.1", - }, - { - "AFL-1.2", - }, - { - "AFL-2.0", - }, - { - "AFL-2.1", - }, - { - "AFL-3.0", - }, - }, - { - { - "AGPL-1.0", - }, - { - "AGPL-3.0", - "AGPL-3.0-only", - }, - }, - { - { - "Apache-1.0", - }, - { - "Apache-1.1", - }, - { - "Apache-2.0", - }, - }, - { - { - "APSL-1.0", - }, - { - "APSL-1.1", - }, - { - "APSL-1.2", - }, - { - "APSL-2.0", - }, - }, - { - { - "Artistic-1.0", - }, - { - "Artistic-2.0", - }, - }, - { - { - "BitTorrent-1.0", - }, - { - "BitTorrent-1.1", - }, - }, - { - { - "CC-BY-1.0", - }, - { - "CC-BY-2.0", - }, - { - "CC-BY-2.5", - }, - { - "CC-BY-3.0", - }, - { - "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-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-4.0", - }, - }, - { - { - "CC-BY-NC-SA-1.0", - }, - { - "CC-BY-NC-SA-2.0", - }, - { - "CC-BY-NC-SA-2.5", - }, - { - "CC-BY-NC-SA-3.0", - }, - { - "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-4.0", - }, - }, - { - { - "CC-BY-SA-1.0", - }, - { - "CC-BY-SA-2.0", - }, - { - "CC-BY-SA-2.5", - }, - { - "CC-BY-SA-3.0", - }, - { - "CC-BY-SA-4.0", - }, - }, - { - { - "CDDL-1.0", - }, - { - "CDDL-1.1", - }, - }, - { - { - "CECILL-1.0", - }, - { - "CECILL-1.1", - }, - { - "CECILL-2.0", - }, - }, - { - { - "ECL-1.0", - }, - { - "ECL-2.0", - }, - }, - { - { - "EFL-1.0", - }, - { - "EFL-2.0", - }, - }, - { - { - "EPL-1.0", - }, - { - "EPL-2.0", - }, - }, - { - { - "EUPL-1.0", - }, - { - "EUPL-1.1", - }, - }, - { - { - "GFDL-1.1", - "GFDL-1.1-only", - }, - { - "GFDL-1.2", - "GFDL-1.2-only", - }, - { - "GFDL-1.1-or-later", - "GFDL-1.2-or-later", - "GFDL-1.3", - "GFDL-1.3-only", - "GFDL-1.3-or-later", - }, - }, - { - { - "GPL-1.0", - "GPL-1.0-only", - }, - { - "GPL-2.0", - "GPL-2.0-only", - }, - { - "GPL-1.0-or-later", - "GPL-2.0-or-later", - "GPL-3.0", - "GPL-3.0-only", - "GPL-3.0-or-later", - }, - }, - { - { - "LGPL-2.0", - "LGPL-2.0-only", - }, - { - "LGPL-2.1", - "LGPL-2.1-only", - }, - { - "LGPL-2.0-or-later", - "LGPL-2.1-or-later", - "LGPL-3.0", - "LGPL-3.0-only", - "LGPL-3.0-or-later", - }, - }, - { - { - "LPL-1.0", - }, - { - "LPL-1.02", - }, - }, - { - { - "LPPL-1.0", - }, - { - "LPPL-1.1", - }, - { - "LPPL-1.2", - }, - { - "LPPL-1.3a", - }, - { - "LPPL-1.3c", - }, - }, - { - { - "MPL-1.0", - }, - { - "MPL-1.1", - }, - { - "MPL-2.0", - }, - }, - { - { - "MPL-1.0", - }, - { - "MPL-1.1", - }, - { - "MPL-2.0-no-copyleft-exception", - }, - }, - { - { - "NPL-1.0", - }, - { - "NPL-1.1", - }, - }, - { - { - "OFL-1.0", - }, - { - "OFL-1.1", - }, - }, - { - { - "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", - }, - }, - { - { - "OSL-1.0", - }, - { - "OSL-1.1", - }, - { - "OSL-2.0", - }, - { - "OSL-2.1", - }, - { - "OSL-3.0", - }, - }, - { - { - "PHP-3.0", - }, - { - "PHP-3.01", - }, - }, - { - { - "RPL-1.1", - }, - { - "RPL-1.5", - }, - }, - { - { - "SGI-B-1.0", - }, - { - "SGI-B-1.1", - }, - { - "SGI-B-2.0", - }, - }, - { - { - "YPL-1.0", - }, - { - "YPL-1.1", - }, - }, - { - { - "ZPL-1.1", - }, - { - "ZPL-2.0", - }, - { - "ZPL-2.1", - }, - }, - { - { - "Zimbra-1.3", - }, - { - "Zimbra-1.4", - }, - }, - { - { - "bzip2-1.0.5", - }, - { - "bzip2-1.0.6", - }, - }, - } -} diff --git a/spdxexp/spdxlicenses/get_deprecated.go b/spdxexp/spdxlicenses/get_deprecated.go new file mode 100644 index 0000000..d0776a5 --- /dev/null +++ b/spdxexp/spdxlicenses/get_deprecated.go @@ -0,0 +1,37 @@ +package spdxlicenses + +func GetDeprecated() []string { + return []string{ + "AGPL-1.0", + "AGPL-3.0", + "BSD-2-Clause-FreeBSD", + "BSD-2-Clause-NetBSD", + "bzip2-1.0.5", + "eCos-2.0", + "GFDL-1.1", + "GFDL-1.2", + "GFDL-1.3", + "GPL-1.0", + "GPL-1.0+", + "GPL-2.0", + "GPL-2.0+", + "GPL-2.0-with-autoconf-exception", + "GPL-2.0-with-bison-exception", + "GPL-2.0-with-classpath-exception", + "GPL-2.0-with-font-exception", + "GPL-2.0-with-GCC-exception", + "GPL-3.0", + "GPL-3.0+", + "GPL-3.0-with-autoconf-exception", + "GPL-3.0-with-GCC-exception", + "LGPL-2.0", + "LGPL-2.0+", + "LGPL-2.1", + "LGPL-2.1+", + "LGPL-3.0", + "LGPL-3.0+", + "Nunit", + "StandardML-NJ", + "wxWindows", + } +} diff --git a/spdxexp/spdxlicenses/get_exceptions.go b/spdxexp/spdxlicenses/get_exceptions.go new file mode 100644 index 0000000..23ae857 --- /dev/null +++ b/spdxexp/spdxlicenses/get_exceptions.go @@ -0,0 +1,50 @@ +package spdxlicenses + +func GetExceptions() []string { + return []string{ + "389-exception", + "Autoconf-exception-2.0", + "Autoconf-exception-3.0", + "Bison-exception-2.2", + "Bootloader-exception", + "Classpath-exception-2.0", + "CLISP-exception-2.0", + "DigiRule-FOSS-exception", + "eCos-exception-2.0", + "Fawkes-Runtime-exception", + "FLTK-exception", + "Font-exception-2.0", + "freertos-exception-2.0", + "GCC-exception-2.0", + "GCC-exception-3.1", + "gnu-javamail-exception", + "GPL-3.0-linking-exception", + "GPL-3.0-linking-source-exception", + "GPL-CC-1.0", + "GStreamer-exception-2005", + "GStreamer-exception-2008", + "i2p-gpl-java-exception", + "KiCad-libraries-exception", + "LGPL-3.0-linking-exception", + "Libtool-exception", + "Linux-syscall-note", + "LLVM-exception", + "LZMA-exception", + "mif-exception", + "OCaml-LGPL-linking-exception", + "OCCT-exception-1.0", + "OpenJDK-assembly-exception-1.0", + "openvpn-openssl-exception", + "PS-or-PDF-font-exception-20170817", + "Qt-GPL-exception-1.0", + "Qt-LGPL-exception-1.1", + "Qwt-exception-1.0", + "SHL-2.0", + "SHL-2.1", + "Swift-exception", + "u-boot-exception-2.0", + "Universal-FOSS-exception-1.0", + "WxWindows-exception-3.1", + "x11vnc-openssl-exception", + } +} diff --git a/spdxexp/spdxlicenses/get_licenses.go b/spdxexp/spdxlicenses/get_licenses.go new file mode 100644 index 0000000..d95af23 --- /dev/null +++ b/spdxexp/spdxlicenses/get_licenses.go @@ -0,0 +1,485 @@ +package spdxlicenses + +func GetLicenses() []string { + return []string{ + "0BSD", + "AAL", + "Abstyles", + "Adobe-2006", + "Adobe-Glyph", + "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", + "AMDPLPA", + "AML", + "AMPAS", + "ANTLR-PD", + "ANTLR-PD-fallback", + "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", + "Baekmuk", + "Bahyph", + "Barr", + "Beerware", + "Bitstream-Charter", + "Bitstream-Vera", + "BitTorrent-1.0", + "BitTorrent-1.1", + "blessing", + "BlueOak-1.0.0", + "Borceux", + "BSD-1-Clause", + "BSD-2-Clause", + "BSD-2-Clause-Patent", + "BSD-2-Clause-Views", + "BSD-3-Clause", + "BSD-3-Clause-Attribution", + "BSD-3-Clause-Clear", + "BSD-3-Clause-LBNL", + "BSD-3-Clause-Modification", + "BSD-3-Clause-No-Military-License", + "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-4-Clause", + "BSD-4-Clause-Shortened", + "BSD-4-Clause-UC", + "BSD-Protection", + "BSD-Source-Code", + "BSL-1.0", + "BUSL-1.1", + "bzip2-1.0.6", + "C-UDA-1.0", + "CAL-1.0", + "CAL-1.0-Combined-Work-Exception", + "Caldera", + "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-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-FR", + "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-DE", + "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-4.0", + "CC-PDDC", + "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", + "checkmk", + "ClArtistic", + "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", + "CPAL-1.0", + "CPL-1.0", + "CPOL-1.02", + "Crossword", + "CrystalStacker", + "CUA-OPL-1.0", + "Cube", + "curl", + "D-FSL-1.0", + "diffmark", + "DL-DE-BY-2.0", + "DOC", + "Dotseqn", + "DRL-1.0", + "DSDP", + "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", + "FDK-AAC", + "Frameworx-1.0", + "FreeBSD-DOC", + "FreeImage", + "FSFAP", + "FSFUL", + "FSFULLR", + "FSFULLRWD", + "FTL", + "GD", + "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-invariants-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", + "HaskellReport", + "Hippocratic-2.1", + "HPND", + "HPND-export-US", + "HPND-sell-variant", + "HTMLTIDY", + "IBM-pibs", + "ICU", + "IJG", + "IJG-short", + "ImageMagick", + "iMatix", + "Imlib2", + "Info-ZIP", + "Intel", + "Intel-ACPI", + "Interbase-1.0", + "IPA", + "IPL-1.0", + "ISC", + "Jam", + "JasPer-2.0", + "JPNIC", + "JSON", + "Knuth-CTAN", + "LAL-1.2", + "LAL-1.3", + "Latex2e", + "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-2.0", + "libselinux-1.0", + "libtiff", + "libutil-David-Nugent", + "LiLiQ-P-1.1", + "LiLiQ-R-1.1", + "LiLiQ-Rplus-1.1", + "Linux-man-pages-copyleft", + "Linux-OpenIB", + "LOOP", + "LPL-1.0", + "LPL-1.02", + "LPPL-1.0", + "LPPL-1.1", + "LPPL-1.2", + "LPPL-1.3a", + "LPPL-1.3c", + "LZMA-SDK-9.11-to-9.20", + "LZMA-SDK-9.22", + "MakeIndex", + "Minpack", + "MirOS", + "MIT", + "MIT-0", + "MIT-advertising", + "MIT-CMU", + "MIT-enna", + "MIT-feh", + "MIT-Modern-Variant", + "MIT-open-group", + "MIT-Wu", + "MITNFA", + "Motosoto", + "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", + "NCGL-UK-2.0", + "NCSA", + "Net-SNMP", + "NetCDF", + "Newsletr", + "NGPL", + "NICTA-1.0", + "NIST-PD", + "NIST-PD-fallback", + "NLOD-1.0", + "NLOD-2.0", + "NLPL", + "Nokia", + "NOSL", + "Noweb", + "NPL-1.0", + "NPL-1.1", + "NPOSL-3.0", + "NRL", + "NTP", + "NTP-0", + "O-UDA-1.0", + "OCCT-PL", + "OCLC-2.0", + "ODbL-1.0", + "ODC-By-1.0", + "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", + "OML", + "OpenSSL", + "OPL-1.0", + "OPUBL-1.0", + "OSET-PL-2.1", + "OSL-1.0", + "OSL-1.1", + "OSL-2.0", + "OSL-2.1", + "OSL-3.0", + "Parity-6.0.0", + "Parity-7.0.0", + "PDDL-1.0", + "PHP-3.0", + "PHP-3.01", + "Plexus", + "PolyForm-Noncommercial-1.0.0", + "PolyForm-Small-Business-1.0.0", + "PostgreSQL", + "PSF-2.0", + "psfrag", + "psutils", + "Python-2.0", + "Python-2.0.1", + "Qhull", + "QPL-1.0", + "Rdisc", + "RHeCos-1.1", + "RPL-1.1", + "RPL-1.5", + "RPSL-1.0", + "RSA-MD", + "RSCPL", + "Ruby", + "SAX-PD", + "Saxpath", + "SCEA", + "SchemeReport", + "Sendmail", + "Sendmail-8.23", + "SGI-B-1.0", + "SGI-B-1.1", + "SGI-B-2.0", + "SHL-0.5", + "SHL-0.51", + "SimPL-2.0", + "SISSL", + "SISSL-1.2", + "Sleepycat", + "SMLNJ", + "SMPPL", + "SNIA", + "Spencer-86", + "Spencer-94", + "Spencer-99", + "SPL-1.0", + "SSH-OpenSSH", + "SSH-short", + "SSPL-1.0", + "SugarCRM-1.1.3", + "SWL", + "Symlinks", + "TAPR-OHL-1.0", + "TCL", + "TCP-wrappers", + "TMate", + "TORQUE-1.1", + "TOSL", + "TPDL", + "TTWL", + "TU-Berlin-1.0", + "TU-Berlin-2.0", + "UCL-1.0", + "Unicode-DFS-2015", + "Unicode-DFS-2016", + "Unicode-TOU", + "Unlicense", + "UPL-1.0", + "Vim", + "VOSTROM", + "VSL-1.0", + "W3C", + "W3C-19980720", + "W3C-20150513", + "Watcom-1.0", + "Wsuipa", + "WTFPL", + "X11", + "X11-distribute-modifications-variant", + "Xerox", + "XFree86-1.1", + "xinetd", + "Xnet", + "xpp", + "XSkat", + "YPL-1.0", + "YPL-1.1", + "Zed", + "Zend-2.0", + "Zimbra-1.3", + "Zimbra-1.4", + "Zlib", + "zlib-acknowledgement", + "ZPL-1.1", + "ZPL-2.0", + "ZPL-2.1", + } +} diff --git a/spdxexp/spdxlicenses/license_ranges.go b/spdxexp/spdxlicenses/license_ranges.go new file mode 100644 index 0000000..9474670 --- /dev/null +++ b/spdxexp/spdxlicenses/license_ranges.go @@ -0,0 +1,476 @@ +package spdxlicenses + +// licenseRanges returns a list of license ranges. +// +// Ranges are organized into groups (referred to as license groups) of the same base license (e.g. GPL). +// Groups have sub-groups of license versions (referred to as the range) where each member is considered +// to be the same version (e.g. {GPL-2.0, GPL-2.0-only}). The sub-groups are in ascending order within +// the license group, such that the first sub-group is considered to be less than the second sub-group, +// and so on. (e.g. {{GPL-1.0}, {GPL-2.0, GPL-2.0-only}} implies {GPL-1.0} < {GPL-2.0, GPL-2.0-only}). +func LicenseRanges() [][][]string { + return [][][]string{ + { + { + "AFL-1.1", + }, + { + "AFL-1.2", + }, + { + "AFL-2.0", + }, + { + "AFL-2.1", + }, + { + "AFL-3.0", + }, + }, + { + { + "AGPL-1.0", + }, + { + "AGPL-3.0", + "AGPL-3.0-only", + }, + }, + { + { + "Apache-1.0", + }, + { + "Apache-1.1", + }, + { + "Apache-2.0", + }, + }, + { + { + "APSL-1.0", + }, + { + "APSL-1.1", + }, + { + "APSL-1.2", + }, + { + "APSL-2.0", + }, + }, + { + { + "Artistic-1.0", + }, + { + "Artistic-2.0", + }, + }, + { + { + "BitTorrent-1.0", + }, + { + "BitTorrent-1.1", + }, + }, + { + { + "CC-BY-1.0", + }, + { + "CC-BY-2.0", + }, + { + "CC-BY-2.5", + }, + { + "CC-BY-3.0", + }, + { + "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-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-4.0", + }, + }, + { + { + "CC-BY-NC-SA-1.0", + }, + { + "CC-BY-NC-SA-2.0", + }, + { + "CC-BY-NC-SA-2.5", + }, + { + "CC-BY-NC-SA-3.0", + }, + { + "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-4.0", + }, + }, + { + { + "CC-BY-SA-1.0", + }, + { + "CC-BY-SA-2.0", + }, + { + "CC-BY-SA-2.5", + }, + { + "CC-BY-SA-3.0", + }, + { + "CC-BY-SA-4.0", + }, + }, + { + { + "CDDL-1.0", + }, + { + "CDDL-1.1", + }, + }, + { + { + "CECILL-1.0", + }, + { + "CECILL-1.1", + }, + { + "CECILL-2.0", + }, + }, + { + { + "ECL-1.0", + }, + { + "ECL-2.0", + }, + }, + { + { + "EFL-1.0", + }, + { + "EFL-2.0", + }, + }, + { + { + "EPL-1.0", + }, + { + "EPL-2.0", + }, + }, + { + { + "EUPL-1.0", + }, + { + "EUPL-1.1", + }, + }, + { + { + "GFDL-1.1", + "GFDL-1.1-only", + }, + { + "GFDL-1.2", + "GFDL-1.2-only", + }, + { + "GFDL-1.1-or-later", + "GFDL-1.2-or-later", + "GFDL-1.3", + "GFDL-1.3-only", + "GFDL-1.3-or-later", + }, + }, + { + { + "GPL-1.0", + "GPL-1.0-only", + }, + { + "GPL-2.0", + "GPL-2.0-only", + }, + { + "GPL-1.0-or-later", + "GPL-2.0-or-later", + "GPL-3.0", + "GPL-3.0-only", + "GPL-3.0-or-later", + }, + }, + { + { + "LGPL-2.0", + "LGPL-2.0-only", + }, + { + "LGPL-2.1", + "LGPL-2.1-only", + }, + { + "LGPL-2.0-or-later", + "LGPL-2.1-or-later", + "LGPL-3.0", + "LGPL-3.0-only", + "LGPL-3.0-or-later", + }, + }, + { + { + "LPL-1.0", + }, + { + "LPL-1.02", + }, + }, + { + { + "LPPL-1.0", + }, + { + "LPPL-1.1", + }, + { + "LPPL-1.2", + }, + { + "LPPL-1.3a", + }, + { + "LPPL-1.3c", + }, + }, + { + { + "MPL-1.0", + }, + { + "MPL-1.1", + }, + { + "MPL-2.0", + }, + }, + { + { + "MPL-1.0", + }, + { + "MPL-1.1", + }, + { + "MPL-2.0-no-copyleft-exception", + }, + }, + { + { + "NPL-1.0", + }, + { + "NPL-1.1", + }, + }, + { + { + "OFL-1.0", + }, + { + "OFL-1.1", + }, + }, + { + { + "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", + }, + }, + { + { + "OSL-1.0", + }, + { + "OSL-1.1", + }, + { + "OSL-2.0", + }, + { + "OSL-2.1", + }, + { + "OSL-3.0", + }, + }, + { + { + "PHP-3.0", + }, + { + "PHP-3.01", + }, + }, + { + { + "RPL-1.1", + }, + { + "RPL-1.5", + }, + }, + { + { + "SGI-B-1.0", + }, + { + "SGI-B-1.1", + }, + { + "SGI-B-2.0", + }, + }, + { + { + "YPL-1.0", + }, + { + "YPL-1.1", + }, + }, + { + { + "ZPL-1.1", + }, + { + "ZPL-2.0", + }, + { + "ZPL-2.1", + }, + }, + { + { + "Zimbra-1.3", + }, + { + "Zimbra-1.4", + }, + }, + { + { + "bzip2-1.0.5", + }, + { + "bzip2-1.0.6", + }, + }, + } +}