diff options
Diffstat (limited to 'make/scripts/lic_check.sh')
-rw-r--r-- | make/scripts/lic_check.sh | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/make/scripts/lic_check.sh b/make/scripts/lic_check.sh deleted file mode 100644 index c166115..0000000 --- a/make/scripts/lic_check.sh +++ /dev/null @@ -1,224 +0,0 @@ -#! /bin/sh -f -# -# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# -# This script checks a copyright notice. -# -# The script should be located in the main jdk repository under make/scripts. -# It works with the templates in the make/templates directory of the jdk source. -# -# Usage: "lic_check.sh [-gpl] or [-gplcp] or [-bsd] file(s)" - -script_directory=`dirname $0` -script_name=`basename $0` -first_option=$1 - -# parse the first argument - -case "$1" in - "-gpl") - header="gpl-header" - ;; - "-gplcp") - header="gpl-cp-header" - ;; - "-bsd") - header="bsd-header" - ;; - *) - echo "Usage: $0 [-gpl] or [-gplcp] or [-bsd] file(s)" 1>&2 - exit 1 - ;; -esac -shift - -#initialize error status -error_status=0 - -# determine and set the absolute path for the script directory -D=`dirname "${script_directory}"` -B=`basename "${script_directory}"` -script_dir="`cd \"${D}\" 2>/dev/null && pwd || echo \"${D}\"`/${B}" - -# set up a variable for the templates directory -template_dir=${script_dir}/../templates - -# Check existence of the template directory. -if [ ! -d ${template_dir} ] ; then - echo "ERROR: The templates directory "${template_dir}" doesn't exist." 1>&2 - exit 1 -fi - -# set the temporary file location -tmpfile=/tmp/source_file.$$ -rm -f ${tmpfile} - -# check number of lines in the template file -lines=`cat ${template_dir}/${header} | wc -l` - -# the template file has one empty line at the end, we need to ignore it -lines=`expr ${lines} - 1` - -# A loop through the all script parameters: -# -# 1. Given a set of source files and a license template header, read a file name of each source file. -# 2. Check if a given file exists. When a directory is encountered, dive in and process all sources in those directories. -# 3. Read each line of the given file and check it for a copyright string. -# 4. If a copyright string found, check the correctness of the years format in the string and replace years with %YEARS%. -# 5. Continue reading the file until the number of lines is equal to the length of the license template header ($lines) and remove a comment prefix for each line. -# 6. Store the result (the license header from a given file) into a temporary file. -# 7. If a temporary file is not empty, compare it with a template file to verify if the license text is the same as in a template. -# 8. Produce a error in case a temporary file is empty, it means we didn't find a copyright string, or it's not correct -# -while [ "$#" -gt "0" ] ; do - touch ${tmpfile} - - # In case of the directory as a parameter check recursively every file inside. - if [ -d $1 ] ; then - curdir=`pwd` - cd $1 - echo "*** Entering directory: "`pwd` - echo "***" - files=`ls .` - sh ${script_dir}/${script_name} ${first_option} ${files} - status=$? - if [ ${error_status} -ne 1 ] ; then - error_status=${status} - fi - cd ${curdir} - shift - continue - else - echo "### Checking copyright notice in the file: "$1 - echo "###" - fi - - # Check the existence of the source file. - if [ ! -f $1 ] ; then - echo "ERROR: The source file "$1" doesn't exist." 1>&2 - error_status=1 - shift - continue - fi - - # read the source file and determine where the header starts, then get license header without prefix - counter=0 - while read line ; do - # remove windows "line feed" character from the line (if any) - line=`echo "${line}" | tr -d '\r'` - # check if the given line contains copyright - check_copyright=`echo "${line}" | grep "Copyright (c) "` - if [ "${check_copyright}" != "" ] ; then - # determine the comment prefix - prefix=`echo "${line}" | cut -d "C" -f 1` - # remove prefix (we use "_" as a sed delimiter, since the prefix could be like //) - copyright_without_prefix=`echo "${line}" | sed s_"^${prefix}"__g` - # copyright years - year1=`echo "${copyright_without_prefix}" | cut -d " " -f 3` - year2=`echo "${copyright_without_prefix}" | cut -d " " -f 4` - # Processing the first year in the copyright string - length=`expr "${year1}" : '.*'` - if [ ${length} -ne 5 ] ; then - break - fi - check_year1=`echo ${year1} | egrep "19[0-9][0-9],|2[0-9][0-9][0-9],"` - if [ "${check_year1}" = "" ] ; then - break - fi - # Processing the second year in the copyright string - if [ "${year2}" != "Oracle" ] ; then - length=`expr "${year2}" : '.*'` - if [ ${length} -ne 5 ] ; then - break - else - check_year2=`echo ${year2} | egrep "19[0-9][0-9],|2[0-9][0-9][0-9],"` - if [ "${check_year2}" = "" ] ; then - break - fi - fi - fi - - # copyright string without copyright years - no_years=`echo "${copyright_without_prefix}" | sed 's/[0-9,]*//g'` - # copyright string before years - before_years=`echo "${no_years}" | cut -d "O" -f 1` - # copyright string after years - after_years=`echo "${no_years}" | cut -d ")" -f 2` - # form a new copyright string with %YEARS% - new_copyright=`echo ${before_years}"%YEARS%"${after_years}` - # save the new copyright string to a file - echo "${new_copyright}" > ${tmpfile} - # start counting the lines - counter=1 - # move to the next line - continue - fi - if [ ${counter} -ne 0 ] ; then - # this should be a license header line, hence increment counter - counter=`expr ${counter} + 1` - # record a string without a prefix to a file - newline=`echo "${line}" | sed s_"^${prefix}"__` - - # we need to take care of the empty lines in the header, i.e. check the prefix without spaces - trimmed_prefix=`echo "${prefix}" | tr -d " "` - trimmed_line=`echo "${line}" | tr -d " "` - if [ "${trimmed_line}" = "${trimmed_prefix}" ] ; then - echo "" >> ${tmpfile} - else - echo "${newline}" >> ${tmpfile} - fi - fi - # stop reading lines when a license header ends and add an empty line to the end - if [ ${counter} -eq ${lines} ] ; then - echo "" >> ${tmpfile} - break - fi - done < $1 - - # compare the license header with a template file - if [ -s ${tmpfile} ] ; then - diff -c ${tmpfile} ${template_dir}/${header} 1>&2 - if [ "$?" = "0" ] ; then - echo "SUCCESS: The license header for "`pwd`"/"$1" has been verified." - echo "###" - else - echo "ERROR: License header is not correct in "`pwd`"/"$1 1>&2 - echo "See diffs above. " 1>&2 - echo "###" 1>&2 - echo "" 1>&2 - error_status=1 - fi - else - # If we don't have a temporary file, there is a problem with a copyright string (or no copyright string) - echo "ERROR: Copyright string is not correct or missing in "`pwd`"/"$1 1>&2 - echo "###" 1>&2 - echo "" 1>&2 - error_status=1 - fi - rm -f ${tmpfile} - shift -done -if [ ${error_status} -ne 0 ] ; then - exit 1 -fi |