HBASE-16351 Improve error reporting for license failures

Signed-off-by: Sean Busbey <busbey@apache.org>

 Conflicts:
	hbase-resource-bundle/src/main/resources/META-INF/LICENSE.vm
	hbase-resource-bundle/src/main/resources/META-INF/NOTICE.vm
	pom.xml
This commit is contained in:
Mike Drob 2017-06-16 21:53:13 -05:00 committed by Sean Busbey
parent 7b977695aa
commit 739fedbbb7
3 changed files with 96 additions and 8 deletions

View File

@ -1624,7 +1624,27 @@ ${dep.scm.url}
#thrift_license()
#end
## Note that this will fail the build if we don't have a license. update supplemental-models.
#if( !(${dep.licenses[0].name.contains("Apache License, Version 2.0")}) )
#if( ${dep.licenses.isEmpty()} )
--
ERROR: ${dep.name} dependency found without license information!
Please find the appropriate license and update supplemental-models.xml or
revert the change that added this dependency.
More info on the dependency:
<groupId>${dep.groupId}</groupId>
<artifactId>${dep.artifactId}</artifactId>
<version>${dep.version}</version>
maven central search
g:${dep.groupId} AND a:${dep.artifactId} AND v:${dep.version}
project website
${dep.url}
project source
${dep.scm.url}
#elseif( !(${dep.licenses[0].name.contains("Apache License, Version 2.0")} || ${dep.licenses[0].name.contains("The Apache Software License, Version 2.0")}) )
#if( ${dep.licenses[0].name.contains("CDDL")} )
#if( ${dep.licenses[0].name.contains("1.0")} )
#set($aggregated = $cddl_1_0.add($dep))
@ -1650,7 +1670,7 @@ This product includes ${dep.name} licensed under the ${dep.licenses[0].name}.
${dep.licenses[0].comments}
#if(!(${non_aggregate_fine.contains($dep.licenses[0].name)}))
Please check ^^^^^^^^^^^^ this License for acceptability here:
ERROR: Please check ^^^^^^^^^^^^ this License for acceptability here:
https://www.apache.org/legal/resolved
@ -1670,12 +1690,6 @@ project website
${dep.url}
project source
${dep.scm.url}
## fail the template. If you're looking at the source LICENSE.vm
## file based on a stacktrace or exception message, you need to find
## the generated LICENSE file that has the actual dependency info printed.
#set($empty = [])
${empty[0]}
#end
#end
#end

View File

@ -272,6 +272,22 @@ JRuby's licence.
#if(${dep.artifactId.equals("jruby-complete")})
#set($jruby=true)
#end
#if( ${dep.licenses.isEmpty()} )
ERROR: This product includes ${dep.name} which has no licenses!
Revert the change if invalid or if intentional add license info to supplemental-models.xml
<groupId>${dep.groupId}</groupId>
<artifactId>${dep.artifactId}</artifactId>
<version>${dep.version}</version>
maven central search
g:${dep.groupId} AND a:${dep.artifactId} AND v:${dep.version}
project website
${dep.url}
project source
${dep.scm.url}
#else
#if( !(${dep.licenses[0].name.contains("BSD")} || ${dep.licenses[0].name.contains("MIT")}) )
#if( !(${dep.licenses[0].name.equals("Public Domain")}) )
#if( !(${dep.licenses[0].name.contains("Apache Software License, Version 2.0")}) )
@ -303,6 +319,7 @@ For source see '${dep.url}'.
#end
#end
#end
#end
## Print out jetty
#if(${jetty})
#jetty_notice(${jetty-with-crypt})

57
pom.xml
View File

@ -810,6 +810,24 @@
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>negate-license-bundles-property</id>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<source>skip.license.check = !${license.bundles.dependencies};</source>
<properties>
<property>skip.license.check</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
@ -875,6 +893,41 @@
</rules>
</configuration>
</execution>
<execution>
<id>check-aggregate-license</id>
<!-- must check after LICENSE is built at 'generate-resources' -->
<phase>process-resources</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<evaluateBeanshell>
<condition>
File license = new File("${license.aggregate.path}");
// Beanshell does not support try-with-resources,
// so we must close this scanner manually
Scanner scanner = new Scanner(license);
while (scanner.hasNextLine()) {
if (scanner.nextLine().startsWith("ERROR:")) {
scanner.close();
return false;
}
}
scanner.close();
return true;
</condition>
<message>
License errors detected, for more detail find ERROR in
${license.aggregate.path}
</message>
</evaluateBeanshell>
</rules>
<skip>${skip.license.check}</skip>
</configuration>
</execution>
</executions>
</plugin>
<!-- parent-module only plugins -->
@ -1161,6 +1214,10 @@
<license.bundles.bootstrap>false</license.bundles.bootstrap>
<!-- modules that include jquery in their source tree should set true -->
<license.bundles.jquery>false</license.bundles.jquery>
<!-- where to find the generated LICENSE files -->
<license.aggregate.path>
${project.build.directory}/maven-shared-archive-resources/META-INF/LICENSE
</license.aggregate.path>
<tar.name>${project.build.finalName}.tar.gz</tar.name>
<maven.build.timestamp.format>
yyyy-MM-dd'T'HH:mm