spdx 0.2.1.0 → 0.2.2.0
raw patch · 6 files changed
+132/−209 lines, 6 filesdep ~basedep ~tasty-quickcheck
Dependency ranges changed: base, tasty-quickcheck
Files
- CHANGELOG.md +4/−0
- spdx.cabal +13/−7
- src/Data/SPDX/Licenses.hs +62/−14
- src/Data/SPDX/Parser.hs +3/−0
- tests/Generators.hs +9/−1
- tests/Tests.hs +41/−187
+ CHANGELOG.md view
@@ -0,0 +1,4 @@+0.2.2.0++- Update license list to v2.6+- GHC-8.2 compatible release
spdx.cabal view
@@ -1,5 +1,5 @@ name: spdx-version: 0.2.1.0+version: 0.2.2.0 synopsis: SPDX license expression language description: Implementation of <http://spdx.org/sites/spdx/files/SPDX-2.0.pdf SPDX> related functionality. homepage: https://github.com/phadej/spdx@@ -10,9 +10,15 @@ copyright: (c) 2015 Oleg Grenrus category: Data build-type: Simple-extra-source-files: README.md-tested-with: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.2+extra-source-files: README.md CHANGELOG.md cabal-version: >=1.10+tested-with:+ GHC==7.4.2,+ GHC==7.6.3,+ GHC==7.8.4,+ GHC==7.10.3,+ GHC==8.0.2,+ GHC==8.2.1 source-repository head type: git@@ -36,8 +42,8 @@ other-extensions: DeriveGeneric hs-source-dirs: src/ ghc-options: -Wall- build-depends: base >=4.2 && <4.9,- transformers >=0.3 && <0.5+ build-depends: base >=4.2 && <4.11,+ transformers >=0.3 && <0.6 if impl(ghc >=7.2 && <7.5) build-depends: ghc-prim @@ -49,7 +55,7 @@ default-language: Haskell98 hs-source-dirs: tests ghc-options: -Wall- build-depends: base >=4.5 && <4.9,+ build-depends: base >=4.5 && <4.11, tasty >=0.10 && <0.12,- tasty-quickcheck >=0.8 && <0.9,+ tasty-quickcheck >=0.8 && <0.10, spdx
src/Data/SPDX/Licenses.hs view
@@ -16,17 +16,33 @@ import Data.SPDX.Types licenseExceptions :: [LicenseExceptionId]-licenseExceptions = map LicenseExceptionId [- "Autoconf-exception-2.0",- "Autoconf-exception-3.0",- "Bison-exception-2.2",- "Classpath-exception-2.0",- "eCos-exception-2.0",- "Font-exception-2.0",- "GCC-exception-2.0",- "GCC-exception-3.1",- "WxWindows-exception-3.1"- ]+licenseExceptions = map LicenseExceptionId+ [ "389-exception"+ , "Autoconf-exception-2.0"+ , "Autoconf-exception-3.0"+ , "Bison-exception-2.2"+ , "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"+ , "i2p-gpl-java-exception"+ , "Libtool-exception"+ , "LZMA-exception"+ , "mif-exception"+ , "Nokia-Qt-exception-1.1"+ , "OCCT-exception-1.0"+ , "openvpn-openssl-exception"+ , "Qwt-exception-1.0"+ , "u-boot-exception-2.0"+ , "WxWindows-exception-3.1"+ ] -- | A list of SPDX licenses identifiers. --@@ -58,7 +74,8 @@ -- See <http://spdx.org/licenses/>. licenses :: [(LicenseId, String, Bool)] licenses =- [ (LicenseId "AAL", "Attribution Assurance License", True)+ [ (LicenseId "0BSD", "BSD Zero Clause License", True)+ , (LicenseId "AAL", "Attribution Assurance License", True) , (LicenseId "ADSL", "Amazon Digital Services License", False) , (LicenseId "AFL-1.1", "Academic Free License v1.1", True) , (LicenseId "AFL-1.2", "Academic Free License v1.2", True)@@ -96,9 +113,13 @@ , (LicenseId "BSD-3-Clause-Attribution", "BSD with attribution", False) , (LicenseId "BSD-3-Clause-Clear", "BSD 3-clause Clear License", False) , (LicenseId "BSD-3-Clause-LBNL", "Lawrence Berkeley National Labs BSD variant license", False)+ , (LicenseId "BSD-3-Clause-No-Nuclear-License", "BSD 3-Clause No Nuclear License", False)+ , (LicenseId "BSD-3-Clause-No-Nuclear-License-2014", "BSD 3-Clause No Nuclear License 2014", False)+ , (LicenseId "BSD-3-Clause-No-Nuclear-Warranty", "BSD 3-Clause No Nuclear Warranty", False) , (LicenseId "BSD-4-Clause", "BSD 4-clause \"Original\" or \"Old\" License", False) , (LicenseId "BSD-4-Clause-UC", "BSD-4-Clause (University of California-Specific)", False) , (LicenseId "BSD-Protection", "BSD Protection License", False)+ , (LicenseId "BSD-Source-Code", "BSD Source Code Attribution", False) , (LicenseId "BSL-1.0", "Boost Software License 1.0", True) , (LicenseId "Bahyph", "Bahyph License", False) , (LicenseId "Barr", "Barr License", False)@@ -143,8 +164,10 @@ , (LicenseId "CECILL-1.0", "CeCILL Free Software License Agreement v1.0", False) , (LicenseId "CECILL-1.1", "CeCILL Free Software License Agreement v1.1", False) , (LicenseId "CECILL-2.0", "CeCILL Free Software License Agreement v2.0", False)+ , (LicenseId "CECILL-2.1", "CeCILL Free Software License Agreement v2.1", True) , (LicenseId "CECILL-B", "CeCILL-B Free Software License Agreement", False) , (LicenseId "CECILL-C", "CeCILL-C Free Software License Agreement", False)+ , (LicenseId "CNRI-Jython", "CNRI Jython License", False) , (LicenseId "CNRI-Python", "CNRI Python License", True) , (LicenseId "CNRI-Python-GPL-Compatible", "CNRI Python Open Source GPL Compatible License Agreement", False) , (LicenseId "CPAL-1.0", "Common Public Attribution License 1.0", True)@@ -155,6 +178,7 @@ , (LicenseId "ClArtistic", "Clarified Artistic License", False) , (LicenseId "Condor-1.1", "Condor Public License v1.1", False) , (LicenseId "Crossword", "Crossword License", False)+ , (LicenseId "CrystalStacker", "CrystalStacker License", False) , (LicenseId "Cube", "Cube License", False) , (LicenseId "D-FSL-1.0", "Deutsche Freie Software Lizenz", False) , (LicenseId "DOC", "DOC License", False)@@ -171,6 +195,7 @@ , (LicenseId "Entessa", "Entessa Public License v1.0", True) , (LicenseId "ErlPL-1.1", "Erlang Public License v1.1", False) , (LicenseId "Eurosym", "Eurosym License", False)+ , (LicenseId "FSFAP", "FSF All Permissive License", False) , (LicenseId "FSFUL", "FSF Unlimited License", False) , (LicenseId "FSFULLR", "FSF Unlimited License (with License Retention)", False) , (LicenseId "FTL", "Freetype Project License", False)@@ -197,24 +222,31 @@ , (LicenseId "ISC", "ISC License", True) , (LicenseId "ImageMagick", "ImageMagick License", False) , (LicenseId "Imlib2", "Imlib2 License", False)+ , (LicenseId "Info-ZIP", "Info-ZIP License", False) , (LicenseId "Intel", "Intel Open Source License", True) , (LicenseId "Intel-ACPI", "Intel ACPI Software License Agreement", False)+ , (LicenseId "Interbase-1.0", "Interbase Public License v1.0", False) , (LicenseId "JSON", "JSON License", False) , (LicenseId "JasPer-2.0", "JasPer License", False)+ , (LicenseId "LAL-1.2", "Licence Art Libre 1.2", False)+ , (LicenseId "LAL-1.3", "Licence Art Libre 1.3", False) , (LicenseId "LGPL-2.0", "GNU Library General Public License v2 only", True) , (LicenseId "LGPL-2.1", "GNU Lesser General Public License v2.1 only", True) , (LicenseId "LGPL-3.0", "GNU Lesser General Public License v3.0 only", True)+ , (LicenseId "LGPLLR", "Lesser General Public License For Linguistic Resources", False) , (LicenseId "LPL-1.0", "Lucent Public License Version 1.0", True) , (LicenseId "LPL-1.02", "Lucent Public License v1.02", True) , (LicenseId "LPPL-1.0", "LaTeX Project Public License v1.0", False) , (LicenseId "LPPL-1.1", "LaTeX Project Public License v1.1", False) , (LicenseId "LPPL-1.2", "LaTeX Project Public License v1.2", False)- , (LicenseId "LPPL-1.3a", "LaTeX Project Public License 1.3a", False)+ , (LicenseId "LPPL-1.3a", "LaTeX Project Public License v1.3a", False) , (LicenseId "LPPL-1.3c", "LaTeX Project Public License v1.3c", True) , (LicenseId "Latex2e", "Latex2e License", False) , (LicenseId "Leptonica", "Leptonica License", False)+ , (LicenseId "LiLiQ-P-1.1", "Licence Libre du Qu\233bec \8211 Permissive version 1.1", True)+ , (LicenseId "LiLiQ-R-1.1", "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 version 1.1", True)+ , (LicenseId "LiLiQ-Rplus-1.1", "Licence Libre du Qu\233bec \8211 R\233ciprocit\233 forte version 1.1", True) , (LicenseId "Libpng", "libpng License", False)- , (LicenseId "License Identifier", "Full name of License", False) , (LicenseId "MIT", "MIT License", True) , (LicenseId "MIT-CMU", "CMU License", False) , (LicenseId "MIT-advertising", "Enlightenment License (e16)", False)@@ -237,6 +269,7 @@ , (LicenseId "NBPL-1.0", "Net Boolean Public License v1", False) , (LicenseId "NCSA", "University of Illinois/NCSA Open Source License", True) , (LicenseId "NGPL", "Nethack General Public License", True)+ , (LicenseId "NLOD-1.0", "Norwegian Licence for Open Government Data", False) , (LicenseId "NLPL", "No Limit Public License", False) , (LicenseId "NOSL", "Netizen Open Source License", False) , (LicenseId "NPL-1.0", "Netscape Public License v1.0", False)@@ -245,11 +278,13 @@ , (LicenseId "NRL", "NRL License", False) , (LicenseId "NTP", "NTP License", True) , (LicenseId "Naumen", "Naumen Public License", True)+ , (LicenseId "Net-SNMP", "Net-SNMP License", False) , (LicenseId "NetCDF", "NetCDF license", False) , (LicenseId "Newsletr", "Newsletr License", False) , (LicenseId "Nokia", "Nokia Open Source License", True) , (LicenseId "Noweb", "Noweb License", False) , (LicenseId "Nunit", "Nunit License", False)+ , (LicenseId "OCCT-PL", "Open CASCADE Technology Public License", False) , (LicenseId "OCLC-2.0", "OCLC Research Public License 2.0", True) , (LicenseId "ODbL-1.0", "ODC Open Database License v1.0", False) , (LicenseId "OFL-1.0", "SIL Open Font License 1.0", False)@@ -273,6 +308,7 @@ , (LicenseId "OLDAP-2.8", "Open LDAP Public License v2.8", False) , (LicenseId "OML", "Open Market License", False) , (LicenseId "OPL-1.0", "Open Public License v1.0", False)+ , (LicenseId "OSET-PL-2.1", "OSET Public License version 2.1", True) , (LicenseId "OSL-1.0", "Open Software License 1.0", True) , (LicenseId "OSL-1.1", "Open Software License 1.1", False) , (LicenseId "OSL-2.0", "Open Software License 2.0", True)@@ -291,6 +327,7 @@ , (LicenseId "RPL-1.1", "Reciprocal Public License 1.1", True) , (LicenseId "RPL-1.5", "Reciprocal Public License 1.5", True) , (LicenseId "RPSL-1.0", "RealNetworks Public Source License v1.0", True)+ , (LicenseId "RSA-MD", "RSA Message-Digest License ", False) , (LicenseId "RSCPL", "Ricoh Source Code Public License", True) , (LicenseId "Rdisc", "Rdisc License", False) , (LicenseId "Ruby", "Ruby License", False)@@ -302,17 +339,26 @@ , (LicenseId "SISSL", "Sun Industry Standards Source License v1.1", True) , (LicenseId "SISSL-1.2", "Sun Industry Standards Source License v1.2", False) , (LicenseId "SMLNJ", "Standard ML of New Jersey License", False)+ , (LicenseId "SMPPL", "Secure Messaging Protocol Public License", False) , (LicenseId "SNIA", "SNIA Public License 1.1", False) , (LicenseId "SPL-1.0", "Sun Public License v1.0", True) , (LicenseId "SWL", "Scheme Widget Library (SWL) Software License Agreement", False) , (LicenseId "Saxpath", "Saxpath License", False)+ , (LicenseId "Sendmail", "Sendmail License", False) , (LicenseId "SimPL-2.0", "Simple Public License 2.0", True) , (LicenseId "Sleepycat", "Sleepycat License", True)+ , (LicenseId "Spencer-86", "Spencer License 86", False)+ , (LicenseId "Spencer-94", "Spencer License 94", False)+ , (LicenseId "Spencer-99", "Spencer License 99", False) , (LicenseId "SugarCRM-1.1.3", "SugarCRM Public License v1.1.3", False) , (LicenseId "TCL", "TCL/TK License", False)+ , (LicenseId "TCP-wrappers", "TCP Wrappers License", False) , (LicenseId "TMate", "TMate Open Source License", False) , (LicenseId "TORQUE-1.1", "TORQUE v2.5+ Software License v1.1", False) , (LicenseId "TOSL", "Trusster Open Source License", False)+ , (LicenseId "UPL-1.0", "Universal Permissive License v1.0", True)+ , (LicenseId "Unicode-DFS-2015", "Unicode License Agreement - Data Files and Software (2015)", False)+ , (LicenseId "Unicode-DFS-2016", "Unicode License Agreement - Data Files and Software (2016)", False) , (LicenseId "Unicode-TOU", "Unicode Terms of Use", False) , (LicenseId "Unlicense", "The Unlicense", False) , (LicenseId "VOSTROM", "VOSTROM Public License for Open Source", False)@@ -320,6 +366,7 @@ , (LicenseId "Vim", "Vim License", False) , (LicenseId "W3C", "W3C Software Notice and License (2002-12-31)", True) , (LicenseId "W3C-19980720", "W3C Software Notice and License (1998-07-20)", False)+ , (LicenseId "W3C-20150513", "W3C Software Notice and Document License (2015-05-13)", False) , (LicenseId "WTFPL", "Do What The F*ck You Want To Public License", False) , (LicenseId "Watcom-1.0", "Sybase Open Watcom Public License 1.0", True) , (LicenseId "Wsuipa", "Wsuipa License", False)@@ -340,6 +387,7 @@ , (LicenseId "Zlib", "zlib License", True) , (LicenseId "bzip2-1.0.5", "bzip2 and libbzip2 License v1.0.5", False) , (LicenseId "bzip2-1.0.6", "bzip2 and libbzip2 License v1.0.6", False)+ , (LicenseId "curl", "curl License", False) , (LicenseId "diffmark", "diffmark license", False) , (LicenseId "dvipdfm", "dvipdfm License", False) , (LicenseId "eGenix", "eGenix.com Public License 1.1.0", False)
src/Data/SPDX/Parser.hs view
@@ -8,7 +8,10 @@ #define MIN_VERSION_base(x,y,z) 0 #endif +#if !MIN_VERSION_base(4,8,0) import Control.Applicative+#endif+ import Control.Monad import Data.Char import Text.ParserCombinators.ReadP
tests/Generators.hs view
@@ -1,6 +1,14 @@+{-# LANGUAGE CPP #-} module Generators where -import Control.Applicative+#ifndef MIN_VERSION_base+#define MIN_VERSION_base(x,y,z) 0+#endif++#if !MIN_VERSION_base(4,8,0)+import Control.Applicative+#endif+ import Test.Tasty.QuickCheck as QC import Data.SPDX
tests/Tests.hs view
@@ -64,7 +64,7 @@ ] rangeUnit :: TestTree-rangeUnit = QC.testProperty "calculated license ranges" $ once $ property $ sort (map (map getLicenseId) licenseRanges) == sort ranges+rangeUnit = QC.testProperty "calculated license ranges" $ once $ sort (map (map getLicenseId) licenseRanges) === sort ranges lsProps :: TestTree lsProps = testGroup "LatticeSyntax"@@ -110,189 +110,43 @@ ] ranges :: [[String]]-ranges = [- [- "AFL-1.1",- "AFL-1.2",- "AFL-2.0",- "AFL-2.1",- "AFL-3.0"- ],- [ "AGPL-1.0", "AGPL-3.0" ],- [- "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"- ],- [- "EUPL-1.0",- "EUPL-1.1"- ],- [- "GFDL-1.1",- "GFDL-1.2",- "GFDL-1.3"- ],- [- "GPL-1.0",- "GPL-2.0",- "GPL-3.0"- ],- [- "LGPL-2.0",- "LGPL-2.1",- "LGPL-3.0"- ],- [- "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"- ],- [- "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"- ]- ]+ranges =+ [ ["AFL-1.1","AFL-1.2","AFL-2.0","AFL-2.1","AFL-3.0"]+ , ["AGPL-1.0","AGPL-3.0"]+ , ["APSL-1.0","APSL-1.1","APSL-1.2","APSL-2.0"]+ , ["Apache-1.0","Apache-1.1","Apache-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","CECILL-2.1"]+ , ["ECL-1.0","ECL-2.0"]+ , ["EFL-1.0","EFL-2.0"]+ , ["EUPL-1.0","EUPL-1.1"]+ , ["GFDL-1.1","GFDL-1.2","GFDL-1.3"]+ , ["GPL-1.0","GPL-2.0","GPL-3.0"]+ , ["LAL-1.2","LAL-1.3"]+ , ["LGPL-2.0","LGPL-2.1","LGPL-3.0"]+ , ["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"]+ , ["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"]+ , ["Spencer-86","Spencer-94","Spencer-99"]+ , ["Unicode-DFS-2015","Unicode-DFS-2016"]+ , ["W3C-19980720","W3C-20150513"]+ , ["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"]+ ]