Skip to content

Commit

Permalink
Merge pull request #1 from iustin/master
Browse files Browse the repository at this point in the history
Add support for the Apache license
  • Loading branch information
kosmikus committed May 7, 2012
2 parents 85f959a + f06a8fa commit 39db02e
Show file tree
Hide file tree
Showing 5 changed files with 223 additions and 3 deletions.
8 changes: 8 additions & 0 deletions Cabal/Distribution/License.hs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ data License =
-- | The MIT license, similar to the BSD3. Very free license.
| MIT

-- | The Apache License. Version 2.0 is the current version,
-- previous versions are considered historical.

| Apache (Maybe Version)

-- | Holder makes no claim to ownership, least restrictive license.
| PublicDomain

Expand All @@ -107,6 +112,7 @@ knownLicenses :: [License]
knownLicenses = [ GPL unversioned, GPL (version [2]), GPL (version [3])
, LGPL unversioned, LGPL (version [2,1]), LGPL (version [3])
, BSD3, MIT
, Apache unversioned, Apache (version [2, 0])
, PublicDomain, AllRightsReserved, OtherLicense]
where
unversioned = Nothing
Expand All @@ -115,6 +121,7 @@ knownLicenses = [ GPL unversioned, GPL (version [2]), GPL (version [3])
instance Text License where
disp (GPL version) = Disp.text "GPL" <> dispOptVersion version
disp (LGPL version) = Disp.text "LGPL" <> dispOptVersion version
disp (Apache version) = Disp.text "Apache" <> dispOptVersion version
disp (UnknownLicense other) = Disp.text other
disp other = Disp.text (show other)

Expand All @@ -127,6 +134,7 @@ instance Text License where
("BSD3", Nothing) -> BSD3
("BSD4", Nothing) -> BSD4
("MIT", Nothing) -> MIT
("Apache", _ ) -> Apache version
("PublicDomain", Nothing) -> PublicDomain
("AllRightsReserved", Nothing) -> AllRightsReserved
("OtherLicense", Nothing) -> OtherLicense
Expand Down
3 changes: 3 additions & 0 deletions Cabal/Distribution/PackageDescription/Check.hs
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,9 @@ checkLicense pkg =
unknownLicenseVersion (LGPL (Just v))
| v `notElem` knownVersions = Just knownVersions
where knownVersions = [ v' | LGPL (Just v') <- knownLicenses ]
unknownLicenseVersion (Apache (Just v))
| v `notElem` knownVersions = Just knownVersions
where knownVersions = [ v' | Apache (Just v') <- knownLicenses ]
unknownLicenseVersion _ = Nothing

checkSourceRepos :: PackageDescription -> [PackageCheck]
Expand Down
2 changes: 1 addition & 1 deletion Cabal/tests/UnitTest/Distribution/PackageDescription.hs
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ hunitTests =
[ TestLabel "license parsers" $ TestCase $
sequence_ [ assertParseOk ("license " ++ show lVal) lVal
(runP 1 "license" parseLicenseQ (show lVal))
| lVal <- [GPL,LGPL,BSD3,BSD4] ]
| lVal <- [GPL,LGPL,BSD3,BSD4,Apache] ]

, TestLabel "Required fields" $ TestCase $
do assertParseOk "some fields"
Expand Down
7 changes: 5 additions & 2 deletions cabal-install/Distribution/Client/Init.hs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ import qualified Distribution.Package as P
import Distribution.Client.Init.Types
( InitFlags(..), PackageType(..), Category(..) )
import Distribution.Client.Init.Licenses
( bsd3, gplv2, gplv3, lgpl2, lgpl3 )
( bsd3, gplv2, gplv3, lgpl2, lgpl3, apache20 )
import Distribution.Client.Init.Heuristics
( guessPackageName, guessAuthorNameMail, SourceFileEntry(..), scanForModules, neededBuildPrograms )

Expand Down Expand Up @@ -178,7 +178,7 @@ getLicense flags = do
return $ flags { license = maybeToFlag lic }
where
listedLicenses =
knownLicenses \\ [GPL Nothing, LGPL Nothing, OtherLicense]
knownLicenses \\ [GPL Nothing, LGPL Nothing, Apache Nothing, OtherLicense]

-- | The author's name and email. Prompt, or try to guess from an existing
-- darcs repo.
Expand Down Expand Up @@ -495,6 +495,9 @@ writeLicense flags = do
Flag (LGPL (Just (Version {versionBranch = [3]})))
-> Just lgpl3

Flag (Apache (Just (Version {versionBranch = [2, 0]})))
-> Just apache20

_ -> Nothing

case licenseFile of
Expand Down
206 changes: 206 additions & 0 deletions cabal-install/Distribution/Client/Init/Licenses.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ module Distribution.Client.Init.Licenses
, gplv3
, lgpl2
, lgpl3
, apache20

) where

Expand Down Expand Up @@ -1720,3 +1721,208 @@ lgpl3 = unlines
, "Library."
]

apache20 :: License
apache20 = unlines
[ ""
, " Apache License"
, " Version 2.0, January 2004"
, " http://www.apache.org/licenses/"
, ""
, " TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION"
, ""
, " 1. Definitions."
, ""
, " \"License\" shall mean the terms and conditions for use, reproduction,"
, " and distribution as defined by Sections 1 through 9 of this document."
, ""
, " \"Licensor\" shall mean the copyright owner or entity authorized by"
, " the copyright owner that is granting the License."
, ""
, " \"Legal Entity\" shall mean the union of the acting entity and all"
, " other entities that control, are controlled by, or are under common"
, " control with that entity. For the purposes of this definition,"
, " \"control\" means (i) the power, direct or indirect, to cause the"
, " direction or management of such entity, whether by contract or"
, " otherwise, or (ii) ownership of fifty percent (50%) or more of the"
, " outstanding shares, or (iii) beneficial ownership of such entity."
, ""
, " \"You\" (or \"Your\") shall mean an individual or Legal Entity"
, " exercising permissions granted by this License."
, ""
, " \"Source\" form shall mean the preferred form for making modifications,"
, " including but not limited to software source code, documentation"
, " source, and configuration files."
, ""
, " \"Object\" form shall mean any form resulting from mechanical"
, " transformation or translation of a Source form, including but"
, " not limited to compiled object code, generated documentation,"
, " and conversions to other media types."
, ""
, " \"Work\" shall mean the work of authorship, whether in Source or"
, " Object form, made available under the License, as indicated by a"
, " copyright notice that is included in or attached to the work"
, " (an example is provided in the Appendix below)."
, ""
, " \"Derivative Works\" shall mean any work, whether in Source or Object"
, " form, that is based on (or derived from) the Work and for which the"
, " editorial revisions, annotations, elaborations, or other modifications"
, " represent, as a whole, an original work of authorship. For the purposes"
, " of this License, Derivative Works shall not include works that remain"
, " separable from, or merely link (or bind by name) to the interfaces of,"
, " the Work and Derivative Works thereof."
, ""
, " \"Contribution\" shall mean any work of authorship, including"
, " the original version of the Work and any modifications or additions"
, " to that Work or Derivative Works thereof, that is intentionally"
, " submitted to Licensor for inclusion in the Work by the copyright owner"
, " or by an individual or Legal Entity authorized to submit on behalf of"
, " the copyright owner. For the purposes of this definition, \"submitted\""
, " means any form of electronic, verbal, or written communication sent"
, " to the Licensor or its representatives, including but not limited to"
, " communication on electronic mailing lists, source code control systems,"
, " and issue tracking systems that are managed by, or on behalf of, the"
, " Licensor for the purpose of discussing and improving the Work, but"
, " excluding communication that is conspicuously marked or otherwise"
, " designated in writing by the copyright owner as \"Not a Contribution.\""
, ""
, " \"Contributor\" shall mean Licensor and any individual or Legal Entity"
, " on behalf of whom a Contribution has been received by Licensor and"
, " subsequently incorporated within the Work."
, ""
, " 2. Grant of Copyright License. Subject to the terms and conditions of"
, " this License, each Contributor hereby grants to You a perpetual,"
, " worldwide, non-exclusive, no-charge, royalty-free, irrevocable"
, " copyright license to reproduce, prepare Derivative Works of,"
, " publicly display, publicly perform, sublicense, and distribute the"
, " Work and such Derivative Works in Source or Object form."
, ""
, " 3. Grant of Patent License. Subject to the terms and conditions of"
, " this License, each Contributor hereby grants to You a perpetual,"
, " worldwide, non-exclusive, no-charge, royalty-free, irrevocable"
, " (except as stated in this section) patent license to make, have made,"
, " use, offer to sell, sell, import, and otherwise transfer the Work,"
, " where such license applies only to those patent claims licensable"
, " by such Contributor that are necessarily infringed by their"
, " Contribution(s) alone or by combination of their Contribution(s)"
, " with the Work to which such Contribution(s) was submitted. If You"
, " institute patent litigation against any entity (including a"
, " cross-claim or counterclaim in a lawsuit) alleging that the Work"
, " or a Contribution incorporated within the Work constitutes direct"
, " or contributory patent infringement, then any patent licenses"
, " granted to You under this License for that Work shall terminate"
, " as of the date such litigation is filed."
, ""
, " 4. Redistribution. You may reproduce and distribute copies of the"
, " Work or Derivative Works thereof in any medium, with or without"
, " modifications, and in Source or Object form, provided that You"
, " meet the following conditions:"
, ""
, " (a) You must give any other recipients of the Work or"
, " Derivative Works a copy of this License; and"
, ""
, " (b) You must cause any modified files to carry prominent notices"
, " stating that You changed the files; and"
, ""
, " (c) You must retain, in the Source form of any Derivative Works"
, " that You distribute, all copyright, patent, trademark, and"
, " attribution notices from the Source form of the Work,"
, " excluding those notices that do not pertain to any part of"
, " the Derivative Works; and"
, ""
, " (d) If the Work includes a \"NOTICE\" text file as part of its"
, " distribution, then any Derivative Works that You distribute must"
, " include a readable copy of the attribution notices contained"
, " within such NOTICE file, excluding those notices that do not"
, " pertain to any part of the Derivative Works, in at least one"
, " of the following places: within a NOTICE text file distributed"
, " as part of the Derivative Works; within the Source form or"
, " documentation, if provided along with the Derivative Works; or,"
, " within a display generated by the Derivative Works, if and"
, " wherever such third-party notices normally appear. The contents"
, " of the NOTICE file are for informational purposes only and"
, " do not modify the License. You may add Your own attribution"
, " notices within Derivative Works that You distribute, alongside"
, " or as an addendum to the NOTICE text from the Work, provided"
, " that such additional attribution notices cannot be construed"
, " as modifying the License."
, ""
, " You may add Your own copyright statement to Your modifications and"
, " may provide additional or different license terms and conditions"
, " for use, reproduction, or distribution of Your modifications, or"
, " for any such Derivative Works as a whole, provided Your use,"
, " reproduction, and distribution of the Work otherwise complies with"
, " the conditions stated in this License."
, ""
, " 5. Submission of Contributions. Unless You explicitly state otherwise,"
, " any Contribution intentionally submitted for inclusion in the Work"
, " by You to the Licensor shall be under the terms and conditions of"
, " this License, without any additional terms or conditions."
, " Notwithstanding the above, nothing herein shall supersede or modify"
, " the terms of any separate license agreement you may have executed"
, " with Licensor regarding such Contributions."
, ""
, " 6. Trademarks. This License does not grant permission to use the trade"
, " names, trademarks, service marks, or product names of the Licensor,"
, " except as required for reasonable and customary use in describing the"
, " origin of the Work and reproducing the content of the NOTICE file."
, ""
, " 7. Disclaimer of Warranty. Unless required by applicable law or"
, " agreed to in writing, Licensor provides the Work (and each"
, " Contributor provides its Contributions) on an \"AS IS\" BASIS,"
, " WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or"
, " implied, including, without limitation, any warranties or conditions"
, " of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A"
, " PARTICULAR PURPOSE. You are solely responsible for determining the"
, " appropriateness of using or redistributing the Work and assume any"
, " risks associated with Your exercise of permissions under this License."
, ""
, " 8. Limitation of Liability. In no event and under no legal theory,"
, " whether in tort (including negligence), contract, or otherwise,"
, " unless required by applicable law (such as deliberate and grossly"
, " negligent acts) or agreed to in writing, shall any Contributor be"
, " liable to You for damages, including any direct, indirect, special,"
, " incidental, or consequential damages of any character arising as a"
, " result of this License or out of the use or inability to use the"
, " Work (including but not limited to damages for loss of goodwill,"
, " work stoppage, computer failure or malfunction, or any and all"
, " other commercial damages or losses), even if such Contributor"
, " has been advised of the possibility of such damages."
, ""
, " 9. Accepting Warranty or Additional Liability. While redistributing"
, " the Work or Derivative Works thereof, You may choose to offer,"
, " and charge a fee for, acceptance of support, warranty, indemnity,"
, " or other liability obligations and/or rights consistent with this"
, " License. However, in accepting such obligations, You may act only"
, " on Your own behalf and on Your sole responsibility, not on behalf"
, " of any other Contributor, and only if You agree to indemnify,"
, " defend, and hold each Contributor harmless for any liability"
, " incurred by, or claims asserted against, such Contributor by reason"
, " of your accepting any such warranty or additional liability."
, ""
, " END OF TERMS AND CONDITIONS"
, ""
, " APPENDIX: How to apply the Apache License to your work."
, ""
, " To apply the Apache License to your work, attach the following"
, " boilerplate notice, with the fields enclosed by brackets \"[]\""
, " replaced with your own identifying information. (Don't include"
, " the brackets!) The text should be enclosed in the appropriate"
, " comment syntax for the file format. We also recommend that a"
, " file or class name and description of purpose be included on the"
, " same \"printed page\" as the copyright notice for easier"
, " identification within third-party archives."
, ""
, " Copyright [yyyy] [name of copyright owner]"
, ""
, " Licensed under the Apache License, Version 2.0 (the \"License\");"
, " you may not use this file except in compliance with the License."
, " You may obtain a copy of the License at"
, ""
, " http://www.apache.org/licenses/LICENSE-2.0"
, ""
, " Unless required by applicable law or agreed to in writing, software"
, " distributed under the License is distributed on an \"AS IS\" BASIS,"
, " WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied."
, " See the License for the specific language governing permissions and"
, " limitations under the License."
]

0 comments on commit 39db02e

Please sign in to comment.