aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt16
-rwxr-xr-xscripts/build.sh9
-rwxr-xr-xscripts/git/commit-msg-hook.py136
-rw-r--r--scripts/git/commit-msg-template28
4 files changed, 186 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 293ff79..adb0670 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,9 +40,23 @@ MESSAGE(STATUS "Shared library dir: " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
add_custom_target(clean-cmake-files
- COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
+ COMMAND ${CMAKE_COMMAND} -P clean-all.cmake
)
+execute_process(COMMAND git config --local --get commit.template
+ OUTPUT_VARIABLE commit_template)
+if(commit_template STREQUAL "")
+ message(STATUS "Setting git commit template...")
+ execute_process(COMMAND git config --local commit.template ${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-template)
+ message(STATUS "Setting git commit template...done")
+endif()
+
+if(NOT EXISTS "${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg")
+ message(STATUS "Setting git commit hook...")
+ execute_process(COMMAND ln -s ${CMAKE_SOURCE_DIR}/scripts/git/commit-msg-hook.py ${CMAKE_SOURCE_DIR}/.git/hooks/commit-msg)
+ message(STATUS "Setting git commit hook...done")
+endif()
+
option(WITH_SECUREC_LIB "Option description" OFF)
option(WITH_HAL_LIB "Option description" OFF)
diff --git a/scripts/build.sh b/scripts/build.sh
index 0a5daf4..0fa8af2 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -1,3 +1,4 @@
+#!/bin/bash -x
#########################################################################
# Copyright (c) 2018 Huawei Technologies Co.,Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#########################################################################
-#!/bin/bash -x
set -x
@@ -65,6 +65,8 @@ if [ "$OS_ID" == "ubuntu" ]; then
sudo apt-get update ${APT_OPTS}
sudo DEBIAN_FRONTEND=noninteractive apt-get install -yq git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump libpcre3 libpcre3-dev zlibc zlib1g zlib1g-dev vim pkg-config tcl libnl-route-3-200 flex graphviz tk debhelper dpatch gfortran ethtool libgfortran3 bison dkms quilt chrpath swig python-libxml2
elif [ "$OS_ID" == "debian" ]; then
+ echo "not tested for debian and exit"
+ exit 1
export DEBIAN_FRONTEND=noninteractive
export DEBCONF_NONINTERACTIVE_SEEN=true
@@ -74,6 +76,8 @@ elif [ "$OS_ID" == "debian" ]; then
elif [ "$OS_ID" == "centos" ]; then
sudo yum install -y deltarpm git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump vim sudo yum-utils pcre-devel zlib-devel libiverbs tk tcl tcsh
elif [ "$OS_ID" == "opensuse" ]; then
+ echo "not tested for opensuse and exit"
+ exit 1
sudo yum install -y git cmake gcc g++ automake libtool wget lsof lshw pciutils net-tools tcpdump vim sudo yum-utils pcre-devel zlib-devel
fi
@@ -81,12 +85,13 @@ fi
#DPDK will be having dependancy on linux headers
if [ "$OS_ID" == "ubuntu" ]; then
sudo apt-get -y install git build-essential linux-headers-`uname -r`
- sudo apt-get install libnuma-dev
+ sudo apt-get -y install libnuma-dev
elif [ "$OS_ID" == "debian" ]; then
sudo apt-get -y install git build-essential linux-headers-`uname -r`
elif [ "$OS_ID" == "centos" ]; then
sudo yum groupinstall -y "Development Tools"
sudo yum install -y kernel-headers
+ sudo yum install -y numactl-devel
elif [ "$OS_ID" == "opensuse" ]; then
sudo yum groupinstall -y "Development Tools"
sudo yum install -y kernel-headers
diff --git a/scripts/git/commit-msg-hook.py b/scripts/git/commit-msg-hook.py
new file mode 100755
index 0000000..719ff22
--- /dev/null
+++ b/scripts/git/commit-msg-hook.py
@@ -0,0 +1,136 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys
+
+
+# format: \033[type;fg;bgm
+#
+# fg bg color
+# -------------------------------------------
+# 30 40 black
+# 31 41 red
+# 32 42 green
+# 33 43 yellow
+# 34 44 blue
+# 35 45 purple
+# 36 46 cyan
+# 37 47 white
+#
+# type
+# -------------------------
+# 0 normal
+# 1 bold
+# 4 underline
+# 5 blink
+# 7 invert
+# 8 hide
+#
+# examples:
+# \033[1;31;40m <!--1-bold 31-red fg 40-black bg-->
+# \033[0m <!--back to normal-->
+
+
+STYLE = {
+ 'fore':
+ {
+ 'black' : 30,
+ 'red' : 31,
+ 'green' : 32,
+ 'yellow' : 33,
+ 'blue' : 34,
+ 'purple' : 35,
+ 'cyan' : 36,
+ 'white' : 37,
+ },
+
+ 'back':
+ {
+ 'black' : 40,
+ 'red' : 41,
+ 'green' : 42,
+ 'yellow' : 43,
+ 'blue' : 44,
+ 'purple' : 45,
+ 'cyan' : 46,
+ 'white' : 47,
+ },
+
+ 'mode':
+ {
+ 'normal' : 0,
+ 'bold' : 1,
+ 'underline' : 4,
+ 'blink' : 5,
+ 'invert' : 7,
+ 'hide' : 8,
+ },
+
+ 'default':
+ {
+ 'end': 0,
+ },
+}
+
+
+def style(string, mode='', fore='', back=''):
+
+ mode = '%s' % STYLE['mode'][mode] if STYLE['mode'].has_key(mode) else ''
+
+ fore = '%s' % STYLE['fore'][fore] if STYLE['fore'].has_key(fore) else ''
+
+ back = '%s' % STYLE['back'][back] if STYLE['back'].has_key(back) else ''
+
+ style = ';'.join([s for s in [mode, fore, back] if s])
+
+ style = '\033[%sm' % style if style else ''
+
+ end = '\033[%sm' % STYLE['default']['end'] if style else ''
+
+ return '%s%s%s' % (style, string, end)
+
+
+def check_subject(subject_line):
+ types = ['Feat', 'Fix', 'Refactor', 'Style', 'Docs', 'Test', 'Chore']
+
+ if subject_line.startswith(' '):
+ print style('Error: Subject line starts with whitespace\n', fore='red')
+ return 1
+
+ if len(subject_line) > 50:
+ print style('Error: Subject line should be limited to 50 chars\n', fore='red')
+ return 1
+
+ ll = subject_line.split(':')
+ if len(ll) < 2:
+ print style('Error: Subject line should have a type\n', fore='red')
+ return 1
+
+ type = ll[0]
+ if type not in types:
+ print style('Error: Subject line starts with unknown type\n', fore='red')
+ return 1
+
+ return 0
+
+
+contents = []
+ret = 0
+subject = True
+
+with open(sys.argv[1], 'r') as commit_msg:
+ contents = commit_msg.readlines()
+
+for line in contents:
+ dup = line.lstrip()
+ if dup.startswith('#'):
+ continue
+ if subject is True:
+ ret = check_subject(line)
+ subject = False
+ else:
+ if len(line) > 72:
+ print style('Error: Body line should be limited to 72 chars\n', fore='red')
+ ret = 1
+
+exit(ret)
diff --git a/scripts/git/commit-msg-template b/scripts/git/commit-msg-template
new file mode 100644
index 0000000..6d72af1
--- /dev/null
+++ b/scripts/git/commit-msg-template
@@ -0,0 +1,28 @@
+# <type>: (if applied, this commit will...) <subject> (Max 50 chars)
+# |<---- Using a Maximum Of 50 Characters ---->|
+
+
+# Explain why this change is being made
+# |<---- Try To Limit Each Line to a Maximum Of 72 Characters ---->|
+
+# Provide links or keys to any relevant tickets, articles or other resources
+# Example: Github issue #23
+
+# --- COMMIT END ---
+# Type can be
+# Feat (new feature)
+# Fix (bug fix)
+# Refactor (refactoring production code)
+# Style (formatting, missing semi colons, etc; no code change)
+# Docs (changes to documentation)
+# Test (adding or refactoring tests; no production code change)
+# Chore (updating grunt tasks etc; no production code change)
+# --------------------
+# Remember to
+# Choose one of types above in subject line
+# Use the imperative mood in the subject line
+# Do not end the subject line with a period
+# Separate subject from body with a blank line
+# Use the body to explain what and why vs. how
+# Can use multiple lines with "-" for bullet points in body
+# --------------------