diff options
Diffstat (limited to 'lib/rubygems/util/licenses.rb')
-rw-r--r-- | lib/rubygems/util/licenses.rb | 244 |
1 files changed, 209 insertions, 35 deletions
diff --git a/lib/rubygems/util/licenses.rb b/lib/rubygems/util/licenses.rb index ab5485d020..192ae30b9b 100644 --- a/lib/rubygems/util/licenses.rb +++ b/lib/rubygems/util/licenses.rb @@ -15,6 +15,7 @@ class Gem::Licenses # license identifiers LICENSE_IDENTIFIERS = %w[ 0BSD + 3D-Slicer-1.0 AAL ADSL AFL-1.1 @@ -22,14 +23,14 @@ class Gem::Licenses AFL-2.0 AFL-2.1 AFL-3.0 - AGPL-1.0 AGPL-1.0-only AGPL-1.0-or-later - AGPL-3.0 AGPL-3.0-only AGPL-3.0-or-later + AMD-newlib AMDPLPA AML + AML-glslang AMPAS ANTLR-PD ANTLR-PD-fallback @@ -39,10 +40,14 @@ class Gem::Licenses APSL-1.1 APSL-1.2 APSL-2.0 + ASWF-Digital-Assets-1.0 + ASWF-Digital-Assets-1.1 Abstyles AdaCore-doc Adobe-2006 + Adobe-Display-PostScript Adobe-Glyph + Adobe-Utopia Afmparse Aladdin Apache-1.0 @@ -56,13 +61,14 @@ class Gem::Licenses Artistic-2.0 BSD-1-Clause BSD-2-Clause - BSD-2-Clause-FreeBSD - BSD-2-Clause-NetBSD + BSD-2-Clause-Darwin BSD-2-Clause-Patent BSD-2-Clause-Views + BSD-2-Clause-first-lines BSD-3-Clause BSD-3-Clause-Attribution BSD-3-Clause-Clear + BSD-3-Clause-HP BSD-3-Clause-LBNL BSD-3-Clause-Modification BSD-3-Clause-No-Military-License @@ -70,6 +76,9 @@ class Gem::Licenses BSD-3-Clause-No-Nuclear-License-2014 BSD-3-Clause-No-Nuclear-Warranty BSD-3-Clause-Open-MPI + BSD-3-Clause-Sun + BSD-3-Clause-acpica + BSD-3-Clause-flex BSD-4-Clause BSD-4-Clause-Shortened BSD-4-Clause-UC @@ -77,8 +86,12 @@ class Gem::Licenses BSD-4.3TAHOE BSD-Advertising-Acknowledgement BSD-Attribution-HPND-disclaimer + BSD-Inferno-Nettverk BSD-Protection BSD-Source-Code + BSD-Source-beginning-file + BSD-Systemics + BSD-Systemics-W3Works BSL-1.0 BUSL-1.1 Baekmuk @@ -90,7 +103,9 @@ class Gem::Licenses Bitstream-Charter Bitstream-Vera BlueOak-1.0.0 + Boehm-GC Borceux + Brian-Gladman-2-Clause Brian-Gladman-3-Clause C-UDA-1.0 CAL-1.0 @@ -102,6 +117,7 @@ class Gem::Licenses 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 @@ -144,6 +160,7 @@ class Gem::Licenses 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 CC0-1.0 @@ -166,6 +183,7 @@ class Gem::Licenses CERN-OHL-W-2.0 CFITSIO CMU-Mach + CMU-Mach-nodoc CNRI-Jython CNRI-Python CNRI-Python-GPL-Compatible @@ -175,18 +193,24 @@ class Gem::Licenses CPOL-1.02 CUA-OPL-1.0 Caldera + Caldera-no-preamble + Catharon ClArtistic Clips Community-Spec-1.0 Condor-1.1 Cornell-Lossless-JPEG + Cronyx Crossword CrystalStacker Cube D-FSL-1.0 + DEC-3-Clause DL-DE-BY-2.0 + DL-DE-ZERO-2.0 DOC DRL-1.0 + DRL-1.1 DSDP Dotseqn ECL-1.0 @@ -204,32 +228,34 @@ class Gem::Licenses Entessa ErlPL-1.1 Eurosym + FBM FDK-AAC FSFAP + FSFAP-no-warranty-disclaimer FSFUL FSFULLR FSFULLRWD FTL Fair + Ferguson-Twofish Frameworx-1.0 FreeBSD-DOC FreeImage + Furuseth + GCR-docs GD - GFDL-1.1 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 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 GFDL-1.3-invariants-only GFDL-1.3-invariants-or-later GFDL-1.3-no-invariants-only @@ -238,35 +264,42 @@ class Gem::Licenses GFDL-1.3-or-later GL2PS GLWTPL - GPL-1.0 - GPL-1.0+ GPL-1.0-only GPL-1.0-or-later - GPL-2.0 - GPL-2.0+ GPL-2.0-only GPL-2.0-or-later - GPL-2.0-with-GCC-exception - 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-3.0 - GPL-3.0+ GPL-3.0-only GPL-3.0-or-later - GPL-3.0-with-GCC-exception - GPL-3.0-with-autoconf-exception Giftware Glide Glulxe Graphics-Gems + Gutmann HP-1986 + HP-1989 HPND + HPND-DEC + HPND-Fenneberg-Livingston + HPND-INRIA-IMAG + HPND-Intel + HPND-Kevlin-Henney + HPND-MIT-disclaimer HPND-Markus-Kuhn + HPND-Pbmplus + HPND-UC + HPND-UC-export-US + HPND-doc + HPND-doc-sell HPND-export-US + HPND-export-US-acknowledgement + HPND-export-US-modify + HPND-export2-US + HPND-merchantability-variant + HPND-sell-MIT-disclaimer-xserver + HPND-sell-regexpr HPND-sell-variant HPND-sell-variant-MIT-disclaimer + HPND-sell-variant-MIT-disclaimer-rev HTMLTIDY HaskellReport Hippocratic-2.1 @@ -278,9 +311,11 @@ class Gem::Licenses IPA IPL-1.0 ISC + ISC-Veillard ImageMagick Imlib2 Info-ZIP + Inner-Net-2.0 Intel Intel-ACPI Interbase-1.0 @@ -289,24 +324,20 @@ class Gem::Licenses JSON Jam JasPer-2.0 + Kastrup Kazlib Knuth-CTAN LAL-1.2 LAL-1.3 - LGPL-2.0 - LGPL-2.0+ LGPL-2.0-only LGPL-2.0-or-later - LGPL-2.1 - LGPL-2.1+ LGPL-2.1-only LGPL-2.1-or-later - LGPL-3.0 - LGPL-3.0+ LGPL-3.0-only LGPL-3.0-or-later LGPLLR LOOP + LPD-document LPL-1.0 LPL-1.02 LPPL-1.0 @@ -317,23 +348,33 @@ class Gem::Licenses LZMA-SDK-9.11-to-9.20 LZMA-SDK-9.22 Latex2e + Latex2e-translated-notice Leptonica LiLiQ-P-1.1 LiLiQ-R-1.1 LiLiQ-Rplus-1.1 Libpng Linux-OpenIB + Linux-man-pages-1-para Linux-man-pages-copyleft + Linux-man-pages-copyleft-2-para + Linux-man-pages-copyleft-var + Lucida-Bitmap-Fonts MIT MIT-0 MIT-CMU + MIT-Festival + MIT-Khronos-old MIT-Modern-Variant MIT-Wu MIT-advertising MIT-enna MIT-feh MIT-open-group + MIT-testregex MITNFA + MMIXware + MPEG-SSG MPL-1.0 MPL-1.1 MPL-2.0 @@ -342,8 +383,11 @@ class Gem::Licenses MS-PL MS-RL MTLL + Mackerras-3-Clause + Mackerras-3-Clause-acknowledgment MakeIndex Martin-Birgmeier + McPhee-slideshow Minpack MirOS Motosoto @@ -354,12 +398,15 @@ class Gem::Licenses NAIST-2003 NASA-1.3 NBPL-1.0 + NCBI-PD NCGL-UK-2.0 + NCL NCSA NGPL NICTA-1.0 NIST-PD NIST-PD-fallback + NIST-Software NLOD-1.0 NLOD-2.0 NLPL @@ -376,8 +423,8 @@ class Gem::Licenses Newsletr Nokia Noweb - Nunit O-UDA-1.0 + OAR OCCT-PL OCLC-2.0 ODC-By-1.0 @@ -412,8 +459,10 @@ class Gem::Licenses OLDAP-2.6 OLDAP-2.7 OLDAP-2.8 + OLFL-1.3 OML OPL-1.0 + OPL-UK-3.0 OPUBL-1.0 OSET-PL-2.1 OSL-1.0 @@ -423,12 +472,17 @@ class Gem::Licenses OSL-3.0 OpenPBS-2.3 OpenSSL + OpenSSL-standalone + OpenVision + PADL PDDL-1.0 PHP-3.0 PHP-3.01 + PPL PSF-2.0 Parity-6.0.0 Parity-7.0.0 + Pixar Plexus PolyForm-Noncommercial-1.0.0 PolyForm-Small-Business-1.0.0 @@ -447,20 +501,25 @@ class Gem::Licenses Rdisc Ruby SAX-PD + SAX-PD-2.0 SCEA SGI-B-1.0 SGI-B-1.1 SGI-B-2.0 + SGI-OpenGL + SGP4 SHL-0.5 SHL-0.51 SISSL SISSL-1.2 + SL SMLNJ SMPPL SNIA SPL-1.0 SSH-OpenSSH SSH-short + SSLeay-standalone SSPL-1.0 SWL Saxpath @@ -469,30 +528,39 @@ class Gem::Licenses Sendmail-8.23 SimPL-2.0 Sleepycat + Soundex Spencer-86 Spencer-94 Spencer-99 - StandardML-NJ SugarCRM-1.1.3 + Sun-PPP + Sun-PPP-2000 SunPro Symlinks TAPR-OHL-1.0 TCL TCP-wrappers + TGPPL-1.0 TMate TORQUE-1.1 TOSL TPDL TPL-1.0 TTWL + TTYP0 TU-Berlin-1.0 TU-Berlin-2.0 + TermReadKey UCAR UCL-1.0 + UMich-Merit UPL-1.0 + URT-RLE + Unicode-3.0 Unicode-DFS-2015 Unicode-DFS-2016 Unicode-TOU + UnixCrypt Unlicense VOSTROM VSL-1.0 @@ -502,12 +570,15 @@ class Gem::Licenses W3C-20150513 WTFPL Watcom-1.0 + Widget-Workshop Wsuipa X11 X11-distribute-modifications-variant XFree86-1.1 XSkat + Xdebug-1.03 Xerox + Xfig Xnet YPL-1.0 YPL-1.1 @@ -515,49 +586,109 @@ class Gem::Licenses ZPL-2.0 ZPL-2.1 Zed + Zeeff Zend-2.0 Zimbra-1.3 Zimbra-1.4 Zlib + any-OSI + bcrypt-Solar-Designer blessing - bzip2-1.0.5 bzip2-1.0.6 + check-cvs checkmk copyleft-next-0.3.0 copyleft-next-0.3.1 curl + cve-tou diffmark + dtoa dvipdfm - eCos-2.0 eGenix etalab-2.0 + fwlw gSOAP-1.3b gnuplot + gtkbook + hdparm iMatix libpng-2.0 libselinux-1.0 libtiff libutil-David-Nugent + lsof + magaz + mailprio + metamail mpi-permissive mpich2 mplus + pkgconf + pnmstitch psfrag psutils + python-ldap + radvd snprintf + softSurfer + ssh-keyscan + swrule + threeparttable + ulem w3m - wxWindows xinetd + xkeyboard-config-Zinoviev xlock xpp + xzoom zlib-acknowledgement ].freeze + DEPRECATED_LICENSE_IDENTIFIERS = %w[ + AGPL-1.0 + AGPL-3.0 + BSD-2-Clause-FreeBSD + BSD-2-Clause-NetBSD + 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-GCC-exception + 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-3.0 + GPL-3.0+ + GPL-3.0-with-GCC-exception + GPL-3.0-with-autoconf-exception + LGPL-2.0 + LGPL-2.0+ + LGPL-2.1 + LGPL-2.1+ + LGPL-3.0 + LGPL-3.0+ + Nunit + StandardML-NJ + bzip2-1.0.5 + eCos-2.0 + wxWindows + ].freeze + # exception identifiers EXCEPTION_IDENTIFIERS = %w[ 389-exception + Asterisk-exception + Asterisk-linking-protocols-exception Autoconf-exception-2.0 Autoconf-exception-3.0 Autoconf-exception-generic + Autoconf-exception-generic-3.0 + Autoconf-exception-macro + Bison-exception-1.24 Bison-exception-2.2 Bootloader-exception CLISP-exception-2.0 @@ -567,45 +698,64 @@ class Gem::Licenses Fawkes-Runtime-exception Font-exception-2.0 GCC-exception-2.0 + GCC-exception-2.0-note GCC-exception-3.1 GNAT-exception + GNOME-examples-exception + GNU-compiler-exception + GPL-3.0-interface-exception GPL-3.0-linking-exception GPL-3.0-linking-source-exception GPL-CC-1.0 GStreamer-exception-2005 GStreamer-exception-2008 + Gmsh-exception KiCad-libraries-exception LGPL-3.0-linking-exception + LLGPL LLVM-exception LZMA-exception Libtool-exception Linux-syscall-note - Nokia-Qt-exception-1.1 OCCT-exception-1.0 OCaml-LGPL-linking-exception OpenJDK-assembly-exception-1.0 + PCRE2-exception PS-or-PDF-font-exception-20170817 QPL-1.0-INRIA-2004-exception Qt-GPL-exception-1.0 Qt-LGPL-exception-1.1 Qwt-exception-1.0 + RRDtool-FLOSS-exception-2.0 + SANE-exception SHL-2.0 SHL-2.1 SWI-exception Swift-exception + Texinfo-exception + UBDL-exception Universal-FOSS-exception-1.0 WxWindows-exception-3.1 + cryptsetup-OpenSSL-exception eCos-exception-2.0 + fmt-exception freertos-exception-2.0 gnu-javamail-exception i2p-gpl-java-exception + libpri-OpenH323-exception mif-exception openvpn-openssl-exception + stunnel-exception u-boot-exception-2.0 + vsftpd-openssl-exception x11vnc-openssl-exception ].freeze - REGEXP = / + DEPRECATED_EXCEPTION_IDENTIFIERS = %w[ + Nokia-Qt-exception-1.1 + ].freeze + + VALID_REGEXP = / \A (?: #{Regexp.union(LICENSE_IDENTIFIERS)} @@ -615,10 +765,34 @@ class Gem::Licenses | #{LICENSE_REF} ) \Z - /ox.freeze + /ox + + DEPRECATED_LICENSE_REGEXP = / + \A + #{Regexp.union(DEPRECATED_LICENSE_IDENTIFIERS)} + \+? + (?:\s WITH \s .+?)? + \Z + /ox + + DEPRECATED_EXCEPTION_REGEXP = / + \A + .+? + \+? + (?:\s WITH \s #{Regexp.union(DEPRECATED_EXCEPTION_IDENTIFIERS)}) + \Z + /ox def self.match?(license) - REGEXP.match?(license) + VALID_REGEXP.match?(license) + end + + def self.deprecated_license_id?(license) + DEPRECATED_LICENSE_REGEXP.match?(license) + end + + def self.deprecated_exception_id?(license) + DEPRECATED_EXCEPTION_REGEXP.match?(license) end def self.suggestions(license) |