Merge pull request #60 from daniellimws/license-ci

ci: Add scripts to check for necessary headers
diff --git a/.github/travis/check_license.sh b/.github/travis/check_license.sh
new file mode 100755
index 0000000..2efc7f3
--- /dev/null
+++ b/.github/travis/check_license.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+# Copyright (C) 2020  The SymbiFlow Authors.
+#
+# Use of this source code is governed by a ISC-style
+# license that can be found in the LICENSE file or at
+# https://opensource.org/licenses/ISC
+#
+# SPDX-License-Identifier:	ISC
+
+echo
+echo "==========================="
+echo "Check SPDX identifier"
+echo "==========================="
+echo
+
+ERROR_FILES=""
+FILES_TO_CHECK=`find . \
+    -type f \( -name '*.sh' -o -name '*.py' -o -name 'Makefile' -o -name '*.v' \) \
+    \( -not -path "*/.*/*" -not -path "*/third_party/*" -not -path "*/env/*" \) \
+    \( -not -path "*/*/__init__.py" -not -path "./miniconda.sh" \)`
+
+for file in $FILES_TO_CHECK; do
+    echo "Checking $file"
+    grep -q "SPDX-License-Identifier" $file || ERROR_FILES="$ERROR_FILES $file"
+done
+
+if [ ! -z "$ERROR_FILES" ]; then
+    for file in $ERROR_FILES; do
+        echo "ERROR: $file does not have license information."
+    done
+    return 1
+fi
+
+echo
+echo "==========================="
+echo "Check third party LICENSE"
+echo "==========================="
+echo
+
+function check_if_submodule {
+    for submodule in `git submodule --quiet foreach 'echo $sm_path'`; do
+        if [ "$1" == "$submodule" ]; then
+            return 1
+        fi
+    done
+}
+
+THIRD_PARTY_DIRS=`ls -d third_party/*`
+ERROR_NO_LICENSE=""
+
+for dir in $THIRD_PARTY_DIRS; do
+    # Checks if we are not in a submodule
+    if check_if_submodule $dir; then
+        echo "Checking $dir"
+        [ -f $dir/LICENSE ] || ERROR_NO_LICENSE="$ERROR_NO_LICENSE $dir"
+    fi
+done
+
+if [ ! -z "$ERROR_NO_LICENSE" ]; then
+    for dir in $ERROR_NO_LICENSE; do
+        echo "ERROR: $dir does not have the LICENSE file."
+    done
+    return 1
+fi
\ No newline at end of file
diff --git a/.github/travis/check_python_script.sh b/.github/travis/check_python_script.sh
new file mode 100644
index 0000000..57d792f
--- /dev/null
+++ b/.github/travis/check_python_script.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+echo
+echo "==================================="
+echo "Check python utf coding and shebang"
+echo "==================================="
+echo
+
+ERROR_FILES_SHEBANG=""
+ERROR_FILES_UTF_CODING=""
+FILES_TO_CHECK=`find . \
+    -type f \( -name '*.py' \) \
+    \( -not -path "*/.*/*" -not -path "*/third_party/*" -not -path "*/env/*" \)`
+
+for file in $FILES_TO_CHECK; do
+    echo "Checking $file"
+    grep -q "\#\!/usr/bin/env python3" $file || ERROR_FILES_SHEBANG="$ERROR_FILES_SHEBANG $file"
+    grep -q "\#.*coding: utf-8" $file || ERROR_FILES_UTF_CODING="$ERROR_FILES_UTF_CODING $file"
+done
+
+if [ ! -z "$ERROR_FILES_SHEBANG" ]; then
+    for file in $ERROR_FILES_SHEBANG; do
+        echo "ERROR: $file does not have the python3 shebang."
+    done
+    return 1
+fi
+
+if [ ! -z "$ERROR_FILES_UTF_CODING" ]; then
+    for file in $ERROR_FILES_UTF_CODING; do
+        echo "ERROR: $file does not have the utf encoding set."
+    done
+    return 1
+fi
+
+echo
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 5c492fa..dabf64f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,6 +8,8 @@
 install:
   - . prepareenv.sh
   - conda activate yosys-env
+  - source .github/travis/check_license.sh
+  - source .github/travis/check_python_script.sh
 
 script: tox
 
diff --git a/docs/Makefile b/docs/Makefile
index 2bff6bc..d4a3bc0 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,3 +1,11 @@
+# Copyright (C) 2020  The SymbiFlow Authors.
+#
+# Use of this source code is governed by a ISC-style
+# license that can be found in the LICENSE file or at
+# https://opensource.org/licenses/ISC
+#
+# SPDX-License-Identifier:	ISC
+
 # Minimal makefile for Sphinx documentation
 #
 
diff --git a/prepareenv.sh b/prepareenv.sh
index 5169d5a..5193fa0 100755
--- a/prepareenv.sh
+++ b/prepareenv.sh
@@ -1,4 +1,12 @@
 #!/bin/bash
+#
+# Copyright (C) 2020  The SymbiFlow Authors.
+#
+# Use of this source code is governed by a ISC-style
+# license that can be found in the LICENSE file or at
+# https://opensource.org/licenses/ISC
+#
+# SPDX-License-Identifier:	ISC
 
 pip install tox
 wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
diff --git a/v2x/__init__.py b/v2x/__init__.py
index e69de29..56fafa5 100644
--- a/v2x/__init__.py
+++ b/v2x/__init__.py
@@ -0,0 +1,2 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
diff --git a/v2x/lib/__init__.py b/v2x/lib/__init__.py
index e69de29..56fafa5 100644
--- a/v2x/lib/__init__.py
+++ b/v2x/lib/__init__.py
@@ -0,0 +1,2 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
diff --git a/v2x/xmlinc/__init__.py b/v2x/xmlinc/__init__.py
index e69de29..56fafa5 100644
--- a/v2x/xmlinc/__init__.py
+++ b/v2x/xmlinc/__init__.py
@@ -0,0 +1,2 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
diff --git a/v2x/yosys/__init__.py b/v2x/yosys/__init__.py
index e5a0d9b..56fafa5 100644
--- a/v2x/yosys/__init__.py
+++ b/v2x/yosys/__init__.py
@@ -1 +1,2 @@
 #!/usr/bin/env python3
+# -*- coding: utf-8 -*-