blob: c78ca1a94cd83ebc971a8c06c160682dd12ede45 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
* file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to You 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.
*/
/**
* Check that the licenses of our 3rd parties are in our acceptedLicenses list.
*
* run it with "gradle checkLicenses"
*
* To add new accepted licenses you need to update this script.
* Some products may be available with multiple licenses. In this case you must update
* this script to add it in the downloadLicenses#licenses.
*/
// Some parts of this code comes from Zipkin/https://github.com/openzipkin/zipkin/pull/852
// Zipkin itself is under Apache License.
/**
* The lists of the license we accept.
*/
ext.acceptedLicenses = [
'Apache License, Version 2.0',
'Bouncy Castle Licence',
'CC0',
'The 2-Clause BSD License',
'The 3-Clause BSD License',
'Common Development and Distribution License 1.0',
'Eclipse Distribution License - v 1.0',
'Eclipse Public License 1.0',
'Eclipse Public License 2.0',
'The MIT License',
'Unicode/ICU License',
'Public Domain',
]*.toLowerCase()
/**
* This is the configuration we need for our licenses plugin: 'com.github.hierynomus.license'
* This plugin generates a list of dependencies.
*/
downloadLicenses {
includeProjectDependencies = true
reportByDependency = false
reportByLicenseType = true
dependencyConfiguration = 'compileClasspath'
ext.apache2 = license(
'Apache License, Version 2.0',
'http://opensource.org/licenses/Apache-2.0')
ext.bsd = license(
'The 2-Clause BSD License',
'https://opensource.org/licenses/BSD-2-Clause')
ext.bsd3Clause = license(
'The 3-Clause BSD License',
'http://opensource.org/licenses/BSD-3-Clause')
ext.cddl1 = license(
'Common Development and Distribution License 1.0',
'https://opensource.org/licenses/CDDL-1.0')
ext.edl1 = license(
'Eclipse Distribution License - v 1.0',
'http://www.eclipse.org/org/documents/edl-v10.html')
ext.epl1 = license(
'Eclipse Public License 1.0',
'https://opensource.org/licenses/EPL-1.0')
ext.epl2 = license(
'Eclipse Public License 2.0',
'https://opensource.org/licenses/EPL-2.0')
ext.mit = license(
'The MIT License',
'https://opensource.org/licenses/MIT')
aliases = [
(apache2): [
'Apache',
'Apache 2',
'Apache 2.0',
'Apache-2.0',
'Apache License',
'Apache License, 2.0',
'Apache License 2.0',
'Apache License Version 2.0',
'Apache License, Version 2.0',
'Apache Software License - Version 2.0',
'Apache Software Licenses',
'Apache v2',
'ASL, Version 2',
'The Apache License, Version 2.0',
'The Apache Software License, Version 2.0',
'The Apache Software License, version 2.0'
],
(bsd): [
'Berkeley Software Distribution (BSD) License',
'BSD',
'BSD licence',
'BSD Licence',
'BSD License',
'New BSD License',
'The BSD Licence',
'The BSD License',
'BSD 2-Clause license',
'BSD-2-Clause',
'BSD 2-Clause',
],
(bsd3Clause): [
'BSD 3-Clause',
'BSD 3-Clause "New" or "Revised" License (BSD-3-Clause)',
'The 3-Clause BSD License',
'The BSD 3-Clause License',
],
(cddl1): [
'CDDL-1.0',
'Common Development and Distribution License',
'Common Development and Distribution License 1.0',
'Dual license consisting of the CDDL v1.1 and GPL v2',
'CDDL 1.1',
],
(edl1): [
'Eclipse Distribution License - v 1.0',
],
(epl1): [
'Eclipse Public License - v 1.0',
'Eclipse Distribution License v. 1.0',
'Eclipse Public License v1.0',
'Eclipse Public License - Version 1.0',
],
(epl2): [
'Eclipse Public License v2.0',
'Eclipse Public License - v 2.0',
'EPL 2.0',
],
(mit): [
'MIT license',
'MIT License',
],
]
licenses = [
// Logback is dual licensed under EPL v1.0 or LGPL v2.1
// Explicitly declare that we are using the EPL v1.0 license
(group('ch.qos.logback')) : epl1,
// https://checkerframework.org/manual/#license
// The more permissive MIT License applies to code that you might want
// to include in your own program, such as the annotations and run-time utility classes.
(group('org.checkerframework')): mit,
(group('org.jboss.spec.javax.transaction')): cddl1,
(group('org.rocksdb')): apache2,
(group('tuweni')): apache2,
(group('org.glassfish.jersey.core')): epl2,
(group('org.glassfish.jersey.containers')): epl2,
(group('org.glassfish.jersey.inject')): epl2,
(group('org.glassfish.jersey.media')): epl2,
(group('javax.activation')): cddl1,
(group('javax.servlet')): cddl1,
(group('org.javassist')): apache2,
(group('org.glassfish.hk2.external')): epl2,
(group('javax.xml.bind')): cddl1,
(group('jakarta.ws.rs')): epl2,
(group('org.glassfish.hk2')): epl2,
(group('jakarta.annotation')): epl2,
(group('org.ethereum.evmc')): apache2
]
}
task checkLicenses {
description "Verify that all dependencies use accepted licenses."
dependsOn ':downloadLicenses'
def bads = ""
doLast {
def xml = new XmlParser().parse("$rootProject.buildDir/reports/license/license-dependency.xml")
xml.each { license ->
if (!acceptedLicenses.contains((license.@name).toLowerCase())) {
def depStrings = []
license.dependency.each { depStrings << it.text() }
bads = bads + depStrings + " => -${license.@name}- \n"
}
}
if (bads != "") {
throw new GradleException("Some 3rd parties are using licenses not in our accepted licenses list:\n" +
bads +
"If it's a license acceptable for us, add it in the file check-licenses.gradle.\n" +
"Be careful, some 3rd parties may accept multiple licenses.\n" +
"In this case, select the one you want to use by changing downloadLicenses.licenses\n"
)
}
}
}