Unverified Commit 09bf7b4e authored by Oleg Grenrus's avatar Oleg Grenrus Committed by GitHub
Browse files

Merge pull request #7092 from phadej/spdx-license-list-3.10

Add SPDX License list 3.10
parents 1d320e8a 885da596
......@@ -47,30 +47,30 @@ data LicenseExceptionId
| GCC_exception_2_0 -- ^ @GCC-exception-2.0@, GCC Runtime Library exception 2.0
| GCC_exception_3_1 -- ^ @GCC-exception-3.1@, GCC Runtime Library exception 3.1
| Gnu_javamail_exception -- ^ @gnu-javamail-exception@, GNU JavaMail exception
| GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9
| GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9
| GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9
| GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10
| GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9, SPDX License List 3.10
| GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| I2p_gpl_java_exception -- ^ @i2p-gpl-java-exception@, i2p GPL+Java Exception
| LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9
| LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10
| Libtool_exception -- ^ @Libtool-exception@, Libtool Exception
| Linux_syscall_note -- ^ @Linux-syscall-note@, Linux Syscall Note
| LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
| LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| LZMA_exception -- ^ @LZMA-exception@, LZMA exception
| Mif_exception -- ^ @mif-exception@, Macros and Inline Functions Exception
| Nokia_Qt_exception_1_1 -- ^ @Nokia-Qt-exception-1.1@, Nokia Qt LGPL exception 1.1, SPDX License List 3.0, SPDX License List 3.2
| OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9
| OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| OCCT_exception_1_0 -- ^ @OCCT-exception-1.0@, Open CASCADE Exception 1.0
| OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
| OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| Openvpn_openssl_exception -- ^ @openvpn-openssl-exception@, OpenVPN OpenSSL Exception
| PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
| Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
| Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9
| PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| Qwt_exception_1_0 -- ^ @Qwt-exception-1.0@, Qwt exception 1.0
| SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9
| SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9
| Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9
| SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9, SPDX License List 3.10
| SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9, SPDX License List 3.10
| Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| U_boot_exception_2_0 -- ^ @u-boot-exception-2.0@, U-Boot exception 2.0
| Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9
| Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10
| WxWindows_exception_3_1 -- ^ @WxWindows-exception-3.1@, WxWindows Library Exception 3.1
deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable, Data, Generic)
......@@ -238,13 +238,31 @@ licenseExceptionIdList LicenseListVersion_3_9 =
, Universal_FOSS_exception_1_0
]
++ bulkOfLicenses
licenseExceptionIdList LicenseListVersion_3_10 =
[ GPL_3_0_linking_exception
, GPL_3_0_linking_source_exception
, GPL_CC_1_0
, LGPL_3_0_linking_exception
, LLVM_exception
, OCaml_LGPL_linking_exception
, OpenJDK_assembly_exception_1_0
, PS_or_PDF_font_exception_20170817
, Qt_GPL_exception_1_0
, Qt_LGPL_exception_1_1
, SHL_2_0
, SHL_2_1
, Swift_exception
, Universal_FOSS_exception_1_0
]
++ bulkOfLicenses
-- | Create a 'LicenseExceptionId' from a 'String'.
mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId
mkLicenseExceptionId LicenseListVersion_3_0 s = Map.lookup s stringLookup_3_0
mkLicenseExceptionId LicenseListVersion_3_2 s = Map.lookup s stringLookup_3_2
mkLicenseExceptionId LicenseListVersion_3_6 s = Map.lookup s stringLookup_3_6
mkLicenseExceptionId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9
mkLicenseExceptionId LicenseListVersion_3_0 s = Map.lookup s stringLookup_3_0
mkLicenseExceptionId LicenseListVersion_3_2 s = Map.lookup s stringLookup_3_2
mkLicenseExceptionId LicenseListVersion_3_6 s = Map.lookup s stringLookup_3_6
mkLicenseExceptionId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9
mkLicenseExceptionId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10
stringLookup_3_0 :: Map String LicenseExceptionId
stringLookup_3_0 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $
......@@ -262,6 +280,10 @@ stringLookup_3_9 :: Map String LicenseExceptionId
stringLookup_3_9 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $
licenseExceptionIdList LicenseListVersion_3_9
stringLookup_3_10 :: Map String LicenseExceptionId
stringLookup_3_10 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $
licenseExceptionIdList LicenseListVersion_3_10
-- | License exceptions in all SPDX License lists
bulkOfLicenses :: [LicenseExceptionId]
bulkOfLicenses =
......
This diff is collapsed.
......@@ -11,10 +11,11 @@ data LicenseListVersion
| LicenseListVersion_3_2
| LicenseListVersion_3_6
| LicenseListVersion_3_9
| LicenseListVersion_3_10
deriving (Eq, Ord, Show, Enum, Bounded)
cabalSpecVersionToSPDXListVersion :: CabalSpecVersion -> LicenseListVersion
cabalSpecVersionToSPDXListVersion CabalSpecV3_6 = LicenseListVersion_3_9
cabalSpecVersionToSPDXListVersion CabalSpecV3_6 = LicenseListVersion_3_10
cabalSpecVersionToSPDXListVersion CabalSpecV3_4 = LicenseListVersion_3_9
cabalSpecVersionToSPDXListVersion CabalSpecV3_0 = LicenseListVersion_3_6
cabalSpecVersionToSPDXListVersion CabalSpecV2_4 = LicenseListVersion_3_2
......
......@@ -41,11 +41,13 @@ SPDX_EXCEPTION_HS:=Cabal/src/Distribution/SPDX/LicenseExceptionId.hs
spdx : $(SPDX_LICENSE_HS) $(SPDX_EXCEPTION_HS)
SPDX_LICENSE_VERSIONS:=3.0 3.2 3.6 3.9 3.10
$(SPDX_LICENSE_HS) : templates/SPDX.LicenseId.template.hs cabal-dev-scripts/src/GenUtils.hs cabal-dev-scripts/src/GenSPDX.hs license-list-data/licenses-3.0.json license-list-data/licenses-3.2.json
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx -- templates/SPDX.LicenseId.template.hs license-list-data/licenses-3.0.json license-list-data/licenses-3.2.json license-list-data/licenses-3.6.json license-list-data/licenses-3.9.json $(SPDX_LICENSE_HS)
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx -- templates/SPDX.LicenseId.template.hs $(SPDX_LICENSE_VERSIONS:%=license-list-data/licenses-%.json) $(SPDX_LICENSE_HS)
$(SPDX_EXCEPTION_HS) : templates/SPDX.LicenseExceptionId.template.hs cabal-dev-scripts/src/GenUtils.hs cabal-dev-scripts/src/GenSPDXExc.hs license-list-data/exceptions-3.0.json license-list-data/exceptions-3.2.json
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx-exc -- templates/SPDX.LicenseExceptionId.template.hs license-list-data/exceptions-3.0.json license-list-data/exceptions-3.2.json license-list-data/exceptions-3.6.json license-list-data/exceptions-3.9.json $(SPDX_EXCEPTION_HS)
cabal v2-run --builddir=dist-newstyle-meta --project-file=cabal.project.meta gen-spdx-exc -- templates/SPDX.LicenseExceptionId.template.hs $(SPDX_LICENSE_VERSIONS:%=license-list-data/exceptions-%.json) $(SPDX_EXCEPTION_HS)
# source generation: templates
......
......@@ -33,7 +33,8 @@ main = generate =<< O.execParser opts where
<$> licenses "3.0"
<*> licenses "3.2"
<*> licenses "3.6"
<*> licenses "3.8"
<*> licenses "3.9"
<*> licenses "3.10"
template = O.strArgument $ mconcat
[ O.metavar "SPDX.LicenseId.template.hs"
......@@ -63,29 +64,17 @@ generate'
-> (Input -> IO String)
-> IO String
generate' lss template = template $ Input
{ inputLicenseIds = licenseIds
, inputLicenses = licenseValues
, inputLicenseList_all = mkLicenseList (== allVers)
, inputLicenseList_3_0 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_0 vers)
, inputLicenseList_3_2 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_2 vers)
, inputLicenseList_3_6 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_6 vers)
, inputLicenseList_3_9 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_9 vers)
{ inputLicenseIds = licenseIds
, inputLicenses = licenseValues
, inputLicenseList_all = mkLicenseList (== allVers)
, inputLicenseList_perv = tabulate $ \ver -> mkLicenseList
(\vers -> vers /= allVers && Set.member ver vers)
}
where
PerV (LL ls_3_0) (LL ls_3_2) (LL ls_3_6) (LL ls_3_9) = lss
constructorNames :: [(Text, License, Set.Set SPDXLicenseListVersion)]
constructorNames
= map (\(l, tags) -> (toConstructorName $ licenseId l, l, tags))
$ combine licenseId $ \ver -> case ver of
SPDXLicenseListVersion_3_9 -> filterDeprecated ls_3_9
SPDXLicenseListVersion_3_6 -> filterDeprecated ls_3_6
SPDXLicenseListVersion_3_2 -> filterDeprecated ls_3_2
SPDXLicenseListVersion_3_0 -> filterDeprecated ls_3_0
$ combine licenseId $ \ver -> filterDeprecated $ unLL $ index ver lss
filterDeprecated = filter (not . licenseDeprecated)
......@@ -122,7 +111,7 @@ data License = License
}
deriving (Show)
newtype LicenseList = LL [License]
newtype LicenseList = LL { unLL :: [License] }
deriving (Show)
instance FromJSON License where
......
......@@ -32,7 +32,8 @@ main = generate =<< O.execParser opts where
<$> licenses "3.0"
<*> licenses "3.2"
<*> licenses "3.6"
<*> licenses "3.8"
<*> licenses "3.9"
<*> licenses "3.10"
template = O.strArgument $ mconcat
[ O.metavar "SPDX.LicenseExceptionId.template.hs"
......@@ -62,29 +63,17 @@ generate'
-> (Input -> IO String)
-> IO String
generate' lss template = template $ Input
{ inputLicenseIds = licenseIds
, inputLicenses = licenseValues
, inputLicenseList_all = mkLicenseList (== allVers)
, inputLicenseList_3_0 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_0 vers)
, inputLicenseList_3_2 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_2 vers)
, inputLicenseList_3_6 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_6 vers)
, inputLicenseList_3_9 = mkLicenseList
(\vers -> vers /= allVers && Set.member SPDXLicenseListVersion_3_9 vers)
{ inputLicenseIds = licenseIds
, inputLicenses = licenseValues
, inputLicenseList_all = mkLicenseList (== allVers)
, inputLicenseList_perv = tabulate $ \ver -> mkLicenseList
(\vers -> vers /= allVers && Set.member ver vers)
}
where
PerV (LL ls_3_0) (LL ls_3_2) (LL ls_3_6) (LL ls_3_9) = lss
constructorNames :: [(Text, License, Set.Set SPDXLicenseListVersion)]
constructorNames
= map (\(l, tags) -> (toConstructorName $ licenseId l, l, tags))
$ combine licenseId $ \ver -> case ver of
SPDXLicenseListVersion_3_9 -> filterDeprecated ls_3_9
SPDXLicenseListVersion_3_6 -> filterDeprecated ls_3_6
SPDXLicenseListVersion_3_2 -> filterDeprecated ls_3_2
SPDXLicenseListVersion_3_0 -> filterDeprecated ls_3_0
$ combine licenseId $ \ver -> filterDeprecated $ unLL $ index ver lss
filterDeprecated = filter (not . licenseDeprecated)
......@@ -128,7 +117,7 @@ instance FromJSON License where
fixSpace '\n' = ' '
fixSpace c = c
newtype LicenseList = LL [License]
newtype LicenseList = LL { unLL :: [License] }
deriving (Show)
instance FromJSON LicenseList where
......
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module GenUtils where
import Control.Lens (each, ix, (%~), (&))
import Data.Char (toUpper)
import Data.Maybe (fromMaybe)
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import GHC.Generics (Generic)
import qualified Zinza as Z
import qualified Data.Algorithm.Diff as Diff
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Data.Text as T
import qualified Zinza as Z
-------------------------------------------------------------------------------
-- License List version
......@@ -28,23 +30,50 @@ data SPDXLicenseListVersion
| SPDXLicenseListVersion_3_2
| SPDXLicenseListVersion_3_6
| SPDXLicenseListVersion_3_9
| SPDXLicenseListVersion_3_10
deriving (Eq, Ord, Show, Enum, Bounded)
allVers :: Set.Set SPDXLicenseListVersion
allVers = Set.fromList [minBound .. maxBound]
prettyVer :: SPDXLicenseListVersion -> Text
prettyVer SPDXLicenseListVersion_3_9 = "SPDX License List 3.9"
prettyVer SPDXLicenseListVersion_3_6 = "SPDX License List 3.6"
prettyVer SPDXLicenseListVersion_3_2 = "SPDX License List 3.2"
prettyVer SPDXLicenseListVersion_3_0 = "SPDX License List 3.0"
prettyVer SPDXLicenseListVersion_3_10 = "SPDX License List 3.10"
prettyVer SPDXLicenseListVersion_3_9 = "SPDX License List 3.9"
prettyVer SPDXLicenseListVersion_3_6 = "SPDX License List 3.6"
prettyVer SPDXLicenseListVersion_3_2 = "SPDX License List 3.2"
prettyVer SPDXLicenseListVersion_3_0 = "SPDX License List 3.0"
suffixVer :: SPDXLicenseListVersion -> String
suffixVer SPDXLicenseListVersion_3_10 = "_3_10"
suffixVer SPDXLicenseListVersion_3_9 = "_3_9"
suffixVer SPDXLicenseListVersion_3_6 = "_3_6"
suffixVer SPDXLicenseListVersion_3_2 = "_3_2"
suffixVer SPDXLicenseListVersion_3_0 = "_3_0"
-------------------------------------------------------------------------------
-- Per version
-------------------------------------------------------------------------------
data PerV a = PerV a a a a
deriving (Functor, Foldable, Traversable)
data PerV a = PerV a a a a a
deriving (Show, Functor, Foldable, Traversable)
class Functor f => Representable i f | f -> i where
index :: i -> f a -> a
tabulate :: (i -> a) -> f a
instance Representable SPDXLicenseListVersion PerV where
index SPDXLicenseListVersion_3_0 (PerV x _ _ _ _) = x
index SPDXLicenseListVersion_3_2 (PerV _ x _ _ _) = x
index SPDXLicenseListVersion_3_6 (PerV _ _ x _ _) = x
index SPDXLicenseListVersion_3_9 (PerV _ _ _ x _) = x
index SPDXLicenseListVersion_3_10 (PerV _ _ _ _ x) = x
tabulate f = PerV
(f SPDXLicenseListVersion_3_0)
(f SPDXLicenseListVersion_3_2)
(f SPDXLicenseListVersion_3_6)
(f SPDXLicenseListVersion_3_9)
(f SPDXLicenseListVersion_3_10)
-------------------------------------------------------------------------------
-- Sorting
......@@ -137,13 +166,10 @@ mkList (x:xs) =
-------------------------------------------------------------------------------
data Input = Input
{ inputLicenseIds :: Text
, inputLicenses :: [InputLicense]
, inputLicenseList_all :: Text
, inputLicenseList_3_0 :: Text
, inputLicenseList_3_2 :: Text
, inputLicenseList_3_6 :: Text
, inputLicenseList_3_9 :: Text
{ inputLicenseIds :: Text
, inputLicenses :: [InputLicense]
, inputLicenseList_all :: Text
, inputLicenseList_perv :: PerV Text
}
deriving (Show, Generic)
......@@ -165,3 +191,16 @@ instance Z.Zinza InputLicense where
toType = Z.genericToTypeSFP
toValue = Z.genericToValueSFP
fromValue = Z.genericFromValueSFP
instance Z.Zinza a => Z.Zinza (PerV a) where
toType _ = Z.TyRecord $ Map.fromList
[ ("v" ++ suffixVer v, ("index " ++ show v, Z.toType (Proxy :: Proxy a)))
| v <- [ minBound .. maxBound ]
]
toValue x = Z.VRecord $ Map.fromList
[ ("v" ++ suffixVer v, Z.toValue (index v x))
| v <- [ minBound .. maxBound ]
]
fromValue = error "fromExpr @PerV not implemented"
......@@ -22,6 +22,9 @@ relative to the respective preceding *published* version.
``cabal-version: 3.6``
----------------------
* License fields use identifiers from SPDX License List version
``3.10 2020-08-03``
* Add :pkg-field:`hsc2hs-options`
``cabal-version: 3.4``
......
{
"licenseListVersion": "3.10",
"releaseDate": "2020-08-03",
"exceptions": [
{
"reference": "./GCC-exception-2.0.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/GCC-exception-2.0.json",
"referenceNumber": "1",
"name": "GCC Runtime Library exception 2.0",
"seeAlso": [
"https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10"
],
"licenseExceptionId": "GCC-exception-2.0"
},
{
"reference": "./openvpn-openssl-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/openvpn-openssl-exception.json",
"referenceNumber": "2",
"name": "OpenVPN OpenSSL Exception",
"seeAlso": [
"http://openvpn.net/index.php/license.html"
],
"licenseExceptionId": "openvpn-openssl-exception"
},
{
"reference": "./Nokia-Qt-exception-1.1.html",
"isDeprecatedLicenseId": true,
"detailsUrl": "http://spdx.org/licenses/Nokia-Qt-exception-1.1.json",
"referenceNumber": "3",
"name": "Nokia Qt LGPL exception 1.1",
"seeAlso": [
"https://www.keepassx.org/dev/projects/keepassx/repository/revisions/b8dfb9cc4d5133e0f09cd7533d15a4f1c19a40f2/entry/LICENSE.NOKIA-LGPL-EXCEPTION"
],
"licenseExceptionId": "Nokia-Qt-exception-1.1"
},
{
"reference": "./GPL-3.0-linking-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/GPL-3.0-linking-exception.json",
"referenceNumber": "4",
"name": "GPL-3.0 Linking Exception",
"seeAlso": [
"https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs"
],
"licenseExceptionId": "GPL-3.0-linking-exception"
},
{
"reference": "./Fawkes-Runtime-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/Fawkes-Runtime-exception.json",
"referenceNumber": "5",
"name": "Fawkes Runtime Exception",
"seeAlso": [
"http://www.fawkesrobotics.org/about/license/"
],
"licenseExceptionId": "Fawkes-Runtime-exception"
},
{
"reference": "./u-boot-exception-2.0.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/u-boot-exception-2.0.json",
"referenceNumber": "6",
"name": "U-Boot exception 2.0",
"seeAlso": [
"http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003dLicenses/Exceptions"
],
"licenseExceptionId": "u-boot-exception-2.0"
},
{
"reference": "./PS-or-PDF-font-exception-20170817.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/PS-or-PDF-font-exception-20170817.json",
"referenceNumber": "7",
"name": "PS/PDF font exception (2017-08-17)",
"seeAlso": [
"https://github.com/ArtifexSoftware/urw-base35-fonts/blob/65962e27febc3883a17e651cdb23e783668c996f/LICENSE"
],
"licenseExceptionId": "PS-or-PDF-font-exception-20170817"
},
{
"reference": "./gnu-javamail-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/gnu-javamail-exception.json",
"referenceNumber": "8",
"name": "GNU JavaMail exception",
"seeAlso": [
"http://www.gnu.org/software/classpathx/javamail/javamail.html"
],
"licenseExceptionId": "gnu-javamail-exception"
},
{
"reference": "./LGPL-3.0-linking-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/LGPL-3.0-linking-exception.json",
"referenceNumber": "9",
"name": "LGPL-3.0 Linking Exception",
"seeAlso": [
"https://raw.githubusercontent.com/go-xmlpath/xmlpath/v2/LICENSE",
"https://github.com/goamz/goamz/blob/master/LICENSE",
"https://github.com/juju/errors/blob/master/LICENSE"
],
"licenseExceptionId": "LGPL-3.0-linking-exception"
},
{
"reference": "./DigiRule-FOSS-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/DigiRule-FOSS-exception.json",
"referenceNumber": "10",
"name": "DigiRule FOSS License Exception",
"seeAlso": [
"http://www.digirulesolutions.com/drupal/foss"
],
"licenseExceptionId": "DigiRule-FOSS-exception"
},
{
"reference": "./LLVM-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/LLVM-exception.json",
"referenceNumber": "11",
"name": "LLVM Exception",
"seeAlso": [
"http://llvm.org/foundation/relicensing/LICENSE.txt"
],
"licenseExceptionId": "LLVM-exception"
},
{
"reference": "./Linux-syscall-note.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/Linux-syscall-note.json",
"referenceNumber": "12",
"name": "Linux Syscall Note",
"seeAlso": [
"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/COPYING"
],
"licenseExceptionId": "Linux-syscall-note"
},
{
"reference": "./GPL-3.0-linking-source-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/GPL-3.0-linking-source-exception.json",
"referenceNumber": "13",
"name": "GPL-3.0 Linking Exception (with Corresponding Source)",
"seeAlso": [
"https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs",
"https://github.com/mirror/wget/blob/master/src/http.c#L20"
],
"licenseExceptionId": "GPL-3.0-linking-source-exception"
},
{
"reference": "./Qwt-exception-1.0.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/Qwt-exception-1.0.json",
"referenceNumber": "14",
"name": "Qwt exception 1.0",
"seeAlso": [
"http://qwt.sourceforge.net/qwtlicense.html"
],
"licenseExceptionId": "Qwt-exception-1.0"
},
{
"reference": "./389-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/389-exception.json",
"referenceNumber": "15",
"name": "389 Directory Server Exception",
"seeAlso": [
"http://directory.fedoraproject.org/wiki/GPL_Exception_License_Text"
],
"licenseExceptionId": "389-exception"
},
{
"reference": "./mif-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/mif-exception.json",
"referenceNumber": "16",
"name": "Macros and Inline Functions Exception",
"seeAlso": [
"http://www.scs.stanford.edu/histar/src/lib/cppsup/exception",
"http://dev.bertos.org/doxygen/",
"https://www.threadingbuildingblocks.org/licensing"
],
"licenseExceptionId": "mif-exception"
},
{
"reference": "./eCos-exception-2.0.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/eCos-exception-2.0.json",
"referenceNumber": "17",
"name": "eCos exception 2.0",
"seeAlso": [
"http://ecos.sourceware.org/license-overview.html"
],
"licenseExceptionId": "eCos-exception-2.0"
},
{
"reference": "./CLISP-exception-2.0.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/CLISP-exception-2.0.json",
"referenceNumber": "18",
"name": "CLISP exception 2.0",
"seeAlso": [
"http://sourceforge.net/p/clisp/clisp/ci/default/tree/COPYRIGHT"
],
"licenseExceptionId": "CLISP-exception-2.0"
},
{
"reference": "./Bison-exception-2.2.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/Bison-exception-2.2.json",
"referenceNumber": "19",
"name": "Bison exception 2.2",
"seeAlso": [
"http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141"
],
"licenseExceptionId": "Bison-exception-2.2"
},
{
"reference": "./Libtool-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/Libtool-exception.json",
"referenceNumber": "20",
"name": "Libtool Exception",
"seeAlso": [
"http://git.savannah.gnu.org/cgit/libtool.git/tree/m4/libtool.m4"
],
"licenseExceptionId": "Libtool-exception"
},
{
"reference": "./LZMA-exception.html",
"isDeprecatedLicenseId": false,
"detailsUrl": "http://spdx.org/licenses/LZMA-exception.json",
"referenceNumber":