superset-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maximebeauche...@apache.org
Subject [incubator-superset] branch master updated: Add Apache Rat for license checks (#6663)
Date Sun, 13 Jan 2019 04:28:18 GMT
This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 8e6c114  Add Apache Rat for license checks (#6663)
8e6c114 is described below

commit 8e6c11419529661e084e8cce235a0ef3be886888
Author: bolkedebruin <bolkedebruin@users.noreply.github.com>
AuthorDate: Sun Jan 13 05:28:12 2019 +0100

    Add Apache Rat for license checks (#6663)
---
 .rat-excludes            |  26 ++++++++++++
 .travis.yml              |  10 +++++
 scripts/check_license.sh | 107 +++++++++++++++++++++++++++++++++++++++++++++++
 tox.ini                  |   8 ++++
 4 files changed, 151 insertions(+)

diff --git a/.rat-excludes b/.rat-excludes
new file mode 100644
index 0000000..faca168
--- /dev/null
+++ b/.rat-excludes
@@ -0,0 +1,26 @@
+.gitignore
+.gitattributes
+.coverage
+.coveragerc
+.codecov.yml
+.eslintrc
+.eslintignore
+.flake8
+.rat-excludes
+.*log
+.*pyc
+.*lock
+dist
+build
+superset.egg-info
+apache_superset.egg-info
+.idea
+.*sql
+.*zip
+.*lock
+# Generated doc files
+docs/_build/*
+_build/*
+_static/*
+.buildinfo
+searchindex.js
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 5a0d991..ea2159c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -57,6 +57,15 @@ jobs:
     - language: python
       python: 3.6
       env: TOXENV=pylint
+    - language: python
+      env:
+        - TOXENV=license-check
+        - TRAVIS_CACHE=$HOME/.travis_cache/
+      jdk:
+        - oraclejdk8
+      before_install:
+        - jdk_switcher use oraclejdk8
+
 install:
   - pip install --upgrade pip
   - pip install codecov tox
@@ -69,3 +78,4 @@ cache:
   directories:
     - ~/.npm
     - ~/.cache
+    - ~/.travis_cache/
diff --git a/scripts/check_license.sh b/scripts/check_license.sh
new file mode 100755
index 0000000..fd164fc
--- /dev/null
+++ b/scripts/check_license.sh
@@ -0,0 +1,107 @@
+#!/usr/bin/env bash
+
+#
+# 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.
+#
+
+
+acquire_rat_jar () {
+
+  URL="http://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar"
+
+  JAR="$rat_jar"
+
+  # Download rat launch jar if it hasn't been downloaded yet
+  if [ ! -f "$JAR" ]; then
+    # Download
+    printf "Attempting to fetch rat\n"
+    JAR_DL="${JAR}.part"
+    if [ $(command -v curl) ]; then
+      curl -L --silent "${URL}" > "$JAR_DL" && mv "$JAR_DL" "$JAR"
+    elif [ $(command -v wget) ]; then
+      wget --quiet ${URL} -O "$JAR_DL" && mv "$JAR_DL" "$JAR"
+    else
+      printf "You do not have curl or wget installed, please install rat manually.\n"
+      exit -1
+    fi
+  fi
+
+  unzip -tq "$JAR" &> /dev/null
+  if [ $? -ne 0 ]; then
+    # We failed to download
+    rm "$JAR"
+    printf "Our attempt to download rat locally to ${JAR} failed. Please install rat manually.\n"
+    exit -1
+  fi
+  printf "Done downloading.\n"
+}
+
+# Go to the project root directory
+FWDIR="$(cd "`dirname "$0"`"/..; pwd)"
+cd "$FWDIR"
+
+TMP_DIR=/tmp
+
+if test -x "$JAVA_HOME/bin/java"; then
+    declare java_cmd="$JAVA_HOME/bin/java"
+else
+    declare java_cmd=java
+fi
+
+export RAT_VERSION=0.13
+export rat_jar="${TMP_DIR}"/lib/apache-rat-${RAT_VERSION}.jar
+mkdir -p ${TMP_DIR}/lib
+
+
+[[ -f "$rat_jar" ]] || acquire_rat_jar || {
+    echo "Download failed. Obtain the rat jar manually and place it at $rat_jar"
+    exit 1
+}
+
+# This is the target of a symlink in superset/assets/docs - and rat exclude doesn't cope
with the symlink target doesn't exist
+mkdir -p docs/_build/html/
+
+echo "Running license checks. This can take a while."
+echo "$FWDIR"/.rat-excludes
+$java_cmd -jar "$rat_jar" -E "$FWDIR"/.rat-excludes  -d "$FWDIR" > rat-results.txt
+
+if [ $? -ne 0 ]; then
+   echo "RAT exited abnormally"
+   exit 1
+fi
+
+ERRORS="$(cat rat-results.txt | grep -e "??")"
+
+if test ! -z "$ERRORS"; then
+    echo >&2 "Could not find Apache license headers in the following files:"
+    echo >&2 "$ERRORS"
+    COUNT=`echo "${ERRORS}" | wc -l`
+    if [ ! -f ${TRAVIS_CACHE}/rat-error-count-builds ]; then
+        [ "${TRAVIS_PULL_REQUEST}" = "false" ] && echo ${COUNT} > ${TRAVIS_CACHE}/rat-error-count-builds
+        OLD_COUNT=${COUNT}
+    else
+        typeset -i OLD_COUNT=$(cat ${TRAVIS_CACHE}/rat-error-count-builds)
+    fi
+    if [ ${COUNT} -gt ${OLD_COUNT} ]; then
+        echo "New missing licenses (${COUNT} vs ${OLD_COUNT}) detected. Please correct them
by adding them to to header of your files"
+        exit 1
+    else
+        [ "${TRAVIS_PULL_REQUEST}" = "false" ] && echo ${COUNT} > ${TRAVIS_CACHE}/rat-error-count-builds
+    fi
+    exit 0
+else
+    echo -e "RAT checks passed."
+fi
diff --git a/tox.ini b/tox.ini
index 03ad634..6fed8b5 100644
--- a/tox.ini
+++ b/tox.ini
@@ -109,6 +109,13 @@ deps =
     -rrequirements.txt
     -rrequirements-dev.txt
 
+[testenv:license-check]
+commands =
+    {toxinidir}/scripts/check_license.sh
+whitelist_externals =
+    {toxinidir}/scripts/check_license.sh
+passenv = *
+
 [tox]
 envlist =
     cypress-dashboard
@@ -118,4 +125,5 @@ envlist =
     flake8
     javascript
     pylint
+    license-check
 skipsdist = true


Mime
View raw message