[rtems-libbsd commit] Add helper script to find licenses.

Christian Mauderer christianm at rtems.org
Thu Apr 4 07:09:30 UTC 2019


Module:    rtems-libbsd
Branch:    master
Commit:    c64a1ebaf9c8871f3f72b8754097e272043012d6
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=c64a1ebaf9c8871f3f72b8754097e272043012d6

Author:    Christian Mauderer <christian.mauderer at embedded-brains.de>
Date:      Fri Mar 29 07:45:16 2019 +0100

Add helper script to find licenses.

---

 find_licenses_and_unused.sh | 121 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)

diff --git a/find_licenses_and_unused.sh b/find_licenses_and_unused.sh
new file mode 100755
index 0000000..ee15f65
--- /dev/null
+++ b/find_licenses_and_unused.sh
@@ -0,0 +1,121 @@
+#!/bin/bash
+
+#
+# Copyright (c) 2018 embedded brains GmbH.  All rights reserved.
+#
+#  embedded brains GmbH
+#  Dornierstr. 4
+#  82178 Puchheim
+#  Germany
+#  <rtems at embedded-brains.de>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+
+# exit on wrong command and undefined variable
+set -e
+set -u
+set -o pipefail
+
+SCRIPTNAME=$0
+TARGET="freebsd/"
+SOURCE="freebsd-org/"
+LIST="libbsd.py"
+FORCE=0
+
+printhelp () {
+	echo ""
+	echo "Call:   ${SCRIPTNAME} <options>"
+	echo "1. Find LICENSE files for each file in \"${TARGET}\" if the"
+	echo "   license file is not in ${LIST}."
+	echo "2. Find all files in \"${TARGET}\" that are not in \"${LIST}\"."
+	echo "   Note: This function currently prints a lot of generated files too."
+	echo "Reccomended usage:"
+	echo "./${SCRIPTNAME} | sort | uniq"
+	echo ""
+	echo "The following parameters are optional:"
+	echo "  -h          Print this help and exit the script."
+	echo "  -f          Force printing all license files."
+	echo "  -v          Be more verbose. Can be used multiple times."
+	exit 0
+}
+
+while getopts "hfv" OPTION
+do
+	case ${OPTION} in
+		h)  printhelp ;;
+		f)  FORCE=1 ;;
+		\?) echo "Unknown option \"-${OPTARG}\"."
+			exit 1 ;;
+		:)  echo "Option \"-${OPTARG}\" needs an argument."; exit 1 ;;
+	esac
+done
+shift $((${OPTIND} - 1))
+
+checkfile () {
+	local FILE="$1"
+	local FILE_WITHOUT_PATH=${FILE#"$TARGET"}
+	local LICENSE=""
+
+	grep "${FILE_WITHOUT_PATH}" "${LIST}" > /dev/null || \
+	    echo "File not in ${LIST}: ${FILE_WITHOUT_PATH}"
+
+	local DIR="${SOURCE}`dirname ${FILE_WITHOUT_PATH}`"
+	while [ "$DIR" != "." ]
+	do
+		local MAYBELICENSE="${DIR}/LICENSE*"
+		if [ -e ${MAYBELICENSE} ]
+		then
+			LICENSE=`ls ${MAYBELICENSE}`
+			break
+		fi
+		local MAYBELICENSE="${DIR}/COPY*"
+		if [ -e ${MAYBELICENSE} ]
+		then
+			LICENSE=`ls ${MAYBELICENSE}`
+			break
+		fi
+		DIR="`dirname ${DIR}`"
+	done
+
+	if [ "${LICENSE}" != "" ]
+	then
+		local LICENSE_WITHOUT_PATH=${LICENSE#"$SOURCE"}
+		if grep "${LICENSE_WITHOUT_PATH}" "${LIST}" > /dev/null
+		then
+			if [ ${FORCE} -ne 0 ]
+			then
+				echo "License file found: ${LICENSE}"
+			fi
+		else
+			echo "New license file found: ${LICENSE}"
+		fi
+	fi
+}
+
+export -f checkfile
+export TARGET
+export SOURCE
+export LIST
+export FORCE
+
+find ${TARGET} -name "*\.[ch]" -exec bash -c 'checkfile "$0"' {} \;



More information about the vc mailing list