You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2017/06/21 20:05:31 UTC

hbase git commit: HBASE-16351 Improve error reporting for license failures

Repository: hbase
Updated Branches:
  refs/heads/master 00f657fbe -> d8e0163fa


HBASE-16351 Improve error reporting for license failures

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


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d8e0163f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d8e0163f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d8e0163f

Branch: refs/heads/master
Commit: d8e0163facdb8003b71fb1173ca86340317c8fdc
Parents: 00f657f
Author: Mike Drob <md...@apache.org>
Authored: Fri Jun 16 21:53:13 2017 -0500
Committer: Sean Busbey <bu...@apache.org>
Committed: Wed Jun 21 14:12:53 2017 -0500

----------------------------------------------------------------------
 .../src/main/resources/META-INF/LICENSE.vm      | 30 ++++++++---
 .../src/main/resources/META-INF/NOTICE.vm       | 10 +---
 pom.xml                                         | 57 ++++++++++++++++++++
 3 files changed, 81 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/d8e0163f/hbase-resource-bundle/src/main/resources/META-INF/LICENSE.vm
----------------------------------------------------------------------
diff --git a/hbase-resource-bundle/src/main/resources/META-INF/LICENSE.vm b/hbase-resource-bundle/src/main/resources/META-INF/LICENSE.vm
index f842d00..7183310 100644
--- a/hbase-resource-bundle/src/main/resources/META-INF/LICENSE.vm
+++ b/hbase-resource-bundle/src/main/resources/META-INF/LICENSE.vm
@@ -1550,7 +1550,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")} || ${dep.licenses[0].name.contains("The Apache Software 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))
@@ -1576,7 +1596,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
 
@@ -1596,12 +1616,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

http://git-wip-us.apache.org/repos/asf/hbase/blob/d8e0163f/hbase-resource-bundle/src/main/resources/META-INF/NOTICE.vm
----------------------------------------------------------------------
diff --git a/hbase-resource-bundle/src/main/resources/META-INF/NOTICE.vm b/hbase-resource-bundle/src/main/resources/META-INF/NOTICE.vm
index c77ade5..953b316 100644
--- a/hbase-resource-bundle/src/main/resources/META-INF/NOTICE.vm
+++ b/hbase-resource-bundle/src/main/resources/META-INF/NOTICE.vm
@@ -270,14 +270,7 @@ project website
 ${dep.url}
 project source
 ${dep.scm.url}
-
-
-
-## fail the template. If you're looking at the source NOTICE.vm
-## file based on a stacktrace or exception message, you need to find
-## the generated NOTICE file that has the actual dependency info printed.
-${dep.license[0]}
-#end
+#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")}) )
@@ -309,6 +302,7 @@ For source see '${dep.url}'.
 #end
 #end
 #end
+#end
 ## Print out jetty
 #if(${jetty})
 #jetty_notice(${jetty-with-crypt})

http://git-wip-us.apache.org/repos/asf/hbase/blob/d8e0163f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 45f8e45..1b87973 100644
--- a/pom.xml
+++ b/pom.xml
@@ -913,6 +913,24 @@
     </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>
         <version>1.4</version>
@@ -1009,6 +1027,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 -->
@@ -1270,6 +1323,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