[PATCH] Bash script to review BSP File Organization
Joel Sherrill
joel.sherrill at OARcorp.com
Tue Sep 17 17:51:19 UTC 2013
I don't know what is wrong but it doesn't apply. :(
patching file merge-helpers/check_submission
patch: **** malformed patch at line 110: '0' to give only important stuff.
On 9/17/2013 12:24 PM, Vipul Nayyar wrote:
> ---
> merge-helpers/check_submission | 776 +++++++++++++++++++++++++++++++----------
> 1 file changed, 590 insertions(+), 186 deletions(-)
>
> diff --git a/merge-helpers/check_submission b/merge-helpers/check_submission
> index e838121..90908f1 100755
> --- a/merge-helpers/check_submission
> +++ b/merge-helpers/check_submission
> @@ -1,76 +1,247 @@
> -#
> -# Script to test for various things we want in a BSP when it is
> -# submitted.
> -#
> -# Test for:
> -# - XXX
> -#
> +#! /bin/bash
>
> -usage()
> -{
> -cat <<EOF
> -check_submission [options] directory
> - -b - check assuming directory is a BSP
> - -t - check assuming directory is a test
> - -v - verbose
> -EOF
> -}
> +# Bash Script to find discrepancies in BSP file organization.
> +# Author : Vipul Nayyar <nayyar_vipul at yahoo.com>
>
> -fatal()
> -{
> - usage
> - exit 1
> +
> +filename="0"
> +# Passing --verbose turns verbose to 1 & gives the whole story, otherwise '0' to give only important stuff.
> +verbose="0"
> +faults="0"
> +# Passing --warnings turns warnings to 1 & gives all the critical & non-critical bsp file org. problems.
> +warnings="0"
> +flag="0"
> +
> +calling_path=`pwd`
> +path=""
> +
> +important="1"
> +rtems_internal=""
> +internal_done="0"
> +do_test="0"
> +format="1"
> +
> +
> +# Finds all rtems internal functions ( name starting with '_' & type specifier)
> +# that are defined in cpukit & libcpu
> +function find_rtems_internal(){
> + if [[ $internal_done == "1" ]]; then
> + return
> + fi
> + echo "Compiling list of RTEMS Internal functions ..."
> + internal_files=""
> +
> + for k in `find -name *.c`
> + do
> + for j in `grep -oE "[a-z|A-Z|0-9|_]+[\ |^][_]+[a-z|A-Z|0-9|_]*[\ ]*\(" $k`
> + do
> + if [[ $j == "_"* ]]; then
> + j=${j%%\(}
> + internal_files="$j $internal_files"
> + fi
> +
> + done
> + done
> +
> + for k in `find ../c/src/lib/libcpu/ -name *.c`
> + do
> + for j in `grep -oE "[a-z|A-Z|0-9|_]+[\ |^][_]+[a-z|A-Z|0-9|_]*[\ ]*\(" $k`
> + do
> + if [[ $j == "_"* ]]; then
> + j=${j%%\(}
> + internal_files="$j $internal_files"
> + fi
> +
> + done
> + done
> +
> + for k in $internal_files
> + do
> + if echo $rtems_internal |grep -q $k ; then
> + echo > /dev/null
> + else
> + rtems_internal="$k $rtems_internal"
> + fi
> + done
> +
> + internal_done="1"
> }
>
> -toggle()
> -{
> - case $1 in
> - no) echo "yes" ;;
> - yes) echo "no" ;;
> - *) fatal "Unknown value to toggle ($1)" ;;
> - esac
> +# Finds all internal functions common in bsp and (cpukit + libcpu)
> +function find_bsp_internal(){
> + bsp_methods=""
> + common_internal_methods=""
> +
> +# Searching for internal functions starting with '_' called(i.e ending with a ';')
> + for i in `find -name *.c`
> + do
> + file_contents=`tr -d '\n' < $i | grep -oE "[ |^][_]+[a-z|A-Z|0-9|_]*[ ]*[\n]*\([^;]*\)[ ]*;" | tr -d '\n' `
> +
> + for j in `echo "$file_contents" | grep -oE "[_]+[a-z|A-Z|0-9|_]*[ ]*\("`
> + do
> + if `echo "$bsp_methods" |grep -q "${j%%\(}"` ; then
> + echo > /dev/null
> + else
> + bsp_methods="${j%%\(} $bsp_methods"
> + fi
> + done
> + done
> +
> +# Identifying common fucntions between $rtems_interval & $bsp_methods
> + for i in $rtems_internal
> + do
> + if [[ $i == "__asm__" || $i == "__attribute__" || $i == "__volatile__" || $i == "__"* ]];then
> + continue
> + fi
> + for j in $bsp_methods
> + do
> + if [[ $i == $j ]]; then
> + common_internal_methods="$j $common_internal_methods"
> + fi
> + done
> + done
> +
> + if [[ $common_internal_methods != "" ]]; then
> + echo -e "$bsp : RTEMS Internal functions used : \c"
> + for i in $common_internal_methods
> + do
> + echo -e "${i}() \c"
> + done
> + flag="1"
> + fi
> }
>
> -verbose="no"
> -do_bsp="no"
> -do_test="no"
> -
> -while getopts vbt OPT
> -do
> - case "$OPT" in
> - b) do_bsp="yes" ; do_test="no" ;;
> - t) do_bsp="no" ; do_test="yes" ;;
> - v) verbose=`toggle ${verbose}` ;;
> - *) fatal ;;
> - esac
> -done
>
> -########################### Grab Directory ###########################
> +# Passing 1 initially to any check function states that the file/method/header
> +# being checked is of critical nature
> +function check_file(){
> + filename="0"
> + if [[ $1 == 1 ]]; then
> + important="1"
> + shift
> + else
> + important="0"
> + fi
>
> -shiftcount=`expr $OPTIND - 1`
> -shift $shiftcount
> +#Grabbing the path of file being evaluated from Makefile.am
> + if grep -wqE "[ ]*[^\ ]*/($1)" Makefile.am ; then
> + file_path=`grep -woE "[ ]*[^\ ]*/($1)" Makefile.am | head --lines=1`
> + cd `dirname $file_path`
> + filename=$1
> + file_path=`pwd`
> +
> + cd - > /dev/null
> + shift
> +
> +# Checking if file lies in correct directory path
> + for i in $*
> + do
> + if [[ -d $i ]]; then
> + cd $i
> + else
> + continue
> + fi
> +
> +
> + if [[ "$file_path" == `pwd` ]]; then
> + filename="$file_path/$filename"
> + cd - >/dev/null
> + return
> + fi
> + cd - > /dev/null
> + done
> + echo "$bsp : $filename not present in correct path"
> + filename="$file_path/$filename"
> + return
> + else
> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then
> + flag="1"
> + echo "$bsp : $1 not compiled"
> + fi
> + fi
>
> -basedir=${1}
> + filename="0"
> + faults="1"
> + return
> +}
>
> -if [ "${basedir}X" = "X" ] ; then
> - basedir=.
> -fi
> +# Checking presence of functions in specific files
> +function check_methods(){
> + if [[ $1 == 1 ]]; then
> + important="1"
> + shift
> + else
> + important="0"
> + fi
>
> -if [ ${do_bsp} = "no" -a ${do_test} = "no" ] ; then
> - fatal must select test or bsp check mode
> -fi
> + for i in $*
> + do
>
> -if [ ! -d ${basedir} ] ; then
> - fatal ${basedir} is not a directory
> -fi
> +# When correct file for this function does not exist
> + if [[ $filename == "0" ]];then
> + if grep -rqlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" * ;then
> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]];then
> + echo $bsp : ${i%(*}"()" present in file `grep -rlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" *`
> + fi
> + fi
> + else
> +
> +# When correct file for this function exists
> + if grep -Eq "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" $filename ; then
> + if [[ $verbose -eq "1" ]] ;then
> + echo "$bsp : `basename $filename` : ${i%(*}() present in file"
> + fi
> + else
> + if grep -rqlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" * ;then
> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]];then
> + echo $bsp : ${i%(*}"()" present in file `grep -rlE "[a-z|A-Z|0-9|_]+[ ]*$i[ ]*\(" *`
> + fi
> + else
> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then
> + echo "$bsp : `basename $filename` : ${i%(*}() function does not exist in $filename "
> + flag="1"
> + fi
> + faults="1"
> + fi
> + fi
> +
> + fi
> + done
> +}
>
> +# Checking presence of headers installed by bsp
> +function check_header(){
> + if [[ $1 == 1 ]]; then
> + important="1"
> + shift
> + else
> + important="0"
> + fi
>
> -cd ${basedir}
> -if [ $? -ne 0 ] ; then
> - echo Unable to cd to ${basedir}
> - exit 1
> -fi
> + for i in $*
> + do
> + if grep -wq "$i" Makefile.am ;then
> + if [[ ! -f "$i" && ! -f "${i}.in" ]] ;then
> + continue
> + fi
> + if [[ $verbose -eq "1" ]] ;then
> + cd `dirname $i`
> + echo "$bsp : `basename $i` installed from directory" ${PWD##*/c/src/lib/}
> + cd - > /dev/null
> + fi
> + return
> + fi
> + done
> +
> + if [[ $warnings -eq "1" || $important -eq "1" || $verbose -eq "1" ]]; then
> + echo "${bsp%%[\ ]*} : `basename $1` not installed "
> + flag="1"
> + fi
> + filename="0"
> + faults="1"
> + return
>
> +}
>
> test_its_there()
> {
> @@ -79,7 +250,7 @@ test_its_there()
> fi
> grep ${2} ${1} >/dev/null
> if [ $? -ne 0 ] ; then
> - echo "${2} is NOT in ${basedir}/${1}"
> + echo "$bsp : ${2} is NOT in ${1##./}"
> fi
>
> }
> @@ -91,7 +262,7 @@ test_its_there_all_case()
> fi
> grep -i ${2} ${1} >/dev/null
> if [ $? -ne 0 ] ; then
> - echo "${2} is NOT in ${basedir}/${1} - case independent check"
> + echo "$bsp : ${2} is NOT in ${1##./} - case independent check"
> fi
>
> }
> @@ -105,7 +276,7 @@ test_its_NOT_there_all_case()
> shift
> grep -i "${*}" ${FILE} >/dev/null
> if [ $? -eq 0 ] ; then
> - echo "(${*}) SHOULD NOT BE IN ${basedir}/${FILE} - case independent check"
> + echo "$bsp : (${*}) SHOULD NOT BE IN ${FILE##./} - case independent check"
> fi
> }
>
> @@ -118,14 +289,14 @@ test_its_NOT_there()
> shift
> grep "${*}" ${FILE} >/dev/null
> if [ $? -eq 0 ] ; then
> - echo "(${*}) SHOULD NOT BE IN ${basedir}/${FILE}"
> + echo "$bsp : (${*}) SHOULD NOT BE IN ${FILE##./}"
> fi
> }
>
> find_source()
> {
> findArgs=
> - while getopts "cCm" OPT
> + while getopts "cCdm" OPT
> do
> case "$OPT" in
> c) findArgs="${findArgs} -o -name configure.ac" ;;
> @@ -144,145 +315,378 @@ find_source()
> find . -name "*.[chS]" ${findArgs}
> }
>
> -# Verify no lines longer than 80 columns
> -echo "=== Checking for lines greater than 79 columns"
> -find_source -m -c -C | while read f
> -do
> - grep ".\{80,\}" ${f} >/dev/null
> - if [ $? -eq 0 ] ; then
> - echo "*** ${basedir}/${f} has the following lines that are too long"
> - grep -n '.\{80,\}' ${f}
> - fi
> -done
> -
> -# really need to make the copyright strings consistent in BSPs
> -echo "=== Checking for copyright notices"
> -find_source | while read f
> -do
> - test_its_there_all_case ${f} COPYRIGHT
> -done
> -
> -# We want CVS Id strings everywhere possible
> -echo "=== Checking for CVS Id strings"
> -find_source -d | while read f
> -do
> - test_its_NOT_there ${f} "\$Id"
> -done
> -
> -# We do not want the reformatted license notice
> -echo "=== Checking for reformatted RTEMS license notices"
> -find_source -m -c -C | while read f
> -do
> - test_its_NOT_there ${f} "this file may be found in the file"
> -done
> -
> -# We do not want spaces at the end of lines
> -echo "=== Checking for spaces at the end of lines"
> -find_source -m -c -C | while read f
> -do
> - egrep " +$" $f >/dev/null
> - test $? -eq 0 && echo "$f has spaces at the end of one or more lines."
> -done
> -
> -# We do not want tabs in source files
> -echo "=== Checking for tabs in source files"
> -find_source | while read f
> -do
> - grep -P '\t' $f >/dev/null
> - if [ $? -eq 0 ]; then
> - echo "*** ${basedir}/${f} has the following lines with tabs"
> - grep -P '\t' $f
> - fi
> -done
> -
> -# We do not want GPL code
> -echo "=== Checking for hints of GPL code"
> -find_source -m -c -C | while read f
> -do
> - test_its_NOT_there ${f} "Free Software Foundation"
> - test_its_NOT_there ${f} "program is free software"
> - test_its_NOT_there ${f} "General Public License"
> -done
> -
> -# We do not want hints that there are things left to do
> -echo "=== Checking for TODO hints"
> -find_source -m -c -C | while read f
> -do
> - test_its_NOT_there ${f} XXX
> - test_its_NOT_there ${f} TODO
> - test_its_NOT_there ${f} TBD
> -done
> +function check_format(){
>
> -#
> -# BSP specific checks
> -#
> -if [ ${do_bsp} = "yes" ] ; then
> - # We do not want stdio in a BSP
> - echo "=== Checking for stdio"
> + # Verify no lines longer than 80 columns
> + echo "=== Checking for lines greater than 80 columns"
> + find_source -m -c -C | while read f
> + do
> + grep ".\{81,\}" ${f} >/dev/null
> + if [ $? -eq 0 ] ; then
> + echo -e "\n$bsp : ${f#./} has more than 80 character lines"
> + for i in `grep -n '.\{80,\}' ${f} | cut -f1 -d:`
> + do
> + echo -e "$i \c"
> + done
> + fi
> + done
> +
> + # really need to make the copyright strings consistent in BSPs
> + echo -e "\n=== Checking for copyright notices"
> + find_source | while read f
> + do
> + test_its_there_all_case ${f} COPYRIGHT
> + done
> +
> + # We want CVS Id strings everywhere possible
> + echo "=== Checking for CVS Id strings"
> + find_source -d | while read f
> + do
> + test_its_NOT_there ${f} "\$Id"
> + done
> +
> + # We do not want the reformatted license notice
> + echo "=== Checking for reformatted RTEMS license notices"
> + find_source -m -c -C | while read f
> + do
> + test_its_NOT_there ${f} "this file may be found in the file"
> + done
> +
> + # We do not want spaces at the end of lines
> + echo "=== Checking for spaces at the end of lines"
> + find_source -m -c -C | while read f
> + do
> + egrep " +$" $f >/dev/null
> + test $? -eq 0 && echo -e "${f##./} \c"
> + done
> +
> + # We do not want tabs in source files
> + echo -e "\n=== Checking for tabs in source files"
> + find_source | while read f
> + do
> + grep -P '\t' $f >/dev/null
> + test $? -eq 0 && echo -e "${f##./} \c"
> + done
> +
> + # We do not want GPL code
> + echo -e "\n=== Checking for hints of GPL code"
> find_source -m -c -C | while read f
> do
> - test_its_NOT_there ${f} printf
> - test_its_NOT_there ${f} "puts("
> + test_its_NOT_there ${f} "Free Software Foundation"
> + test_its_NOT_there ${f} "program is free software"
> + test_its_NOT_there ${f} "General Public License"
> done
>
> - # BSPs should include RTEMS_BSP_CLEANUP_OPTIONS and maybe
> - # RTEMS_BSP_BOOTCARD_OPTIONS
> - if [ -r configure.ac ] ; then
> - echo "=== Checking for RTEMS_BSP_BOOTCARD_OPTIONS in BSP configure.ac"
> - test_its_not_there configure.ac RTEMS_BSP_BOOTCARD_OPTIONS
> - echo "=== Checking for RTEMS_BSP_CLEANUP_OPTIONS in BSP configure.ac"
> - test_its_there configure.ac RTEMS_BSP_CLEANUP_OPTIONS
> + # We do not want hints that there are things left to do
> + echo "=== Checking for TODO hints"
> + find_source -m -c -C | while read f
> + do
> + test_its_NOT_there ${f} XXX
> + test_its_NOT_there ${f} TODO
> + test_its_NOT_there ${f} TBD
> + done
> +}
> +
> +# Reviewing for a BSP Starts
> +function main(){
> +
> + if [[ $format -eq "1" ]]; then
> + check_format
> fi
>
> - # If not using -O2, then we really want to know
> - # BSPs should normally use -O2
> - echo "=== Checking for not using -O2"
> - grep -H "\-O[013456789]" make/custom/*.cfg
> + # We do not want stdio in a BSP
> + echo "=== Checking for stdio"
> + find_source -m -c -C | while read f
> + do
> + test_its_NOT_there ${f} printf
> + test_its_NOT_there ${f} "puts("
> + done
> +
> + # BSPs should include RTEMS_BSP_CLEANUP_OPTIONS and maybe
> + # RTEMS_BSP_BOOTCARD_OPTIONS
> + if [ -r configure.ac ] ; then
> + echo "=== Checking for RTEMS_BSP_BOOTCARD_OPTIONS in BSP configure.ac"
> + test_its_NOT_there configure.ac RTEMS_BSP_BOOTCARD_OPTIONS
> + echo "=== Checking for RTEMS_BSP_CLEANUP_OPTIONS in BSP configure.ac"
> + test_its_there configure.ac RTEMS_BSP_CLEANUP_OPTIONS
> + fi
> +
> + # If not using -O2, then we really want to know
> + # BSPs should normally use -O2
> + echo "=== Checking for not using -O2"
> + grep -H "\-O[013456789]" make/custom/*.cfg
>
> - # BSPs should not turn on extra warnings
> - echo "=== Checking for turning on extra GCC warning checks"
> - grep -H "\-W" make/custom/*.cfg
> + # BSPs should not turn on extra warnings
> + echo "=== Checking for turning on extra GCC warning checks"
> + grep -H "\-W" make/custom/*.cfg
>
> - # Hopefully have some output from the tmtests
> - echo "=== Checking for timing information"
> - c=`ls -1 times* 2>/dev/null | wc -l`
> - if [ ${c} -eq 0 ] ; then
> - echo "Please run the timing tests and include the results."
> + # Hopefully have some output from the tmtests
> + echo "=== Checking for timing information"
> + c=`ls -1 times* 2>/dev/null | wc -l`
> + if [ ${c} -eq 0 ] ; then
> + echo "Please run the timing tests and include the results."
> fi
> -fi ## END OF IF BSP
>
> -#
> + echo -e "\n=== Starting BSP Unified way checks"
> +
> + flag="0"
> +
> + check_file 1 start.S ../shared/start/ start/
> + if [[ $filename != "0" ]];then
> + if grep -wq "start" "$filename" || grep -wq "_start" "$filename"; then
> + if [[ $verbose -eq "1" ]] ;then
> + echo "$bsp : `basename $filename` start() present in $filename"
> + fi
> + else
> + echo "$bsp : `basename $filename` start() does not exist in start.S"
> + fi
> + fi
> +
> + check_file 1 bspstart.c ../../shared/ ../shared/ startup/
> + check_methods "bsp_start"
> +
> + check_file 1 bspreset.c ../../shared/ ../shared/ startup/
> + check_methods 1 "bsp_reset"
> +
> +
> + check_file 1 bootcard.c ../../shared/
> + check_header ../../shared/include/bootcard.h
> +
> + check_file 1 bspclean.c ../../shared/ startup/
> + check_methods "bsp_fatal_extension"
> +
> + check_file 1 bspgetworkarea.c ../../shared/ ../../shared/startup ../shared/ ../shared/startup/ startup/
> + check_methods 1 "bsp_work_area_initialize"
> +
> +
> + check_file 1 bsplibc.c ../../shared/
> + check_methods "bsp_libc_init"
> +
> + check_file 1 bsppost.c ../../shared/
> + check_methods "bsp_postdriver_hook"
> +
> + check_file 1 bsppredriverhook.c ../../shared/ ../shared/startup/ startup/
> + check_methods "bsp_predriver_hook"
> +
> +
> + check_file gnatinstallhandler.c ../../shared/
> +
> + check_file sbrk.c ../../shared/ ../../shared/ startup/
> + check_methods "sbrk"
> +
> +
> + check_file stackalloc.c ../../shared/src/
> + check_methods "bsp_stack_allocate_init" "bsp_stack_allocate" "bsp_stack_free"
> +
> + check_header ../../shared/include/stackalloc.h
> +
> + # Interrupt Files
> + check_file 1 irq.c irq/
> + check_methods "bsp_interrupt_vector_enable" "bsp_interrupt_vector_disable" "bsp_interrupt_facility_initialize" "bsp_interrupt_dispatch"
> + check_header 1 include/irq.h
> +
> + # PIC Support
> +
> + check_file irq-default-handler.c ../../shared/src/
> +
> + check_file 1 irq-generic.c ../../shared/src/
> + check_header 1 ../../shared/include/irq-generic.h
> +
> + check_file irq-info.c ../../shared/src/
> + check_header ../../shared/include/irq-info.h
> +
> + check_file irq-legacy.c ../../shared/src/
> + check_file irq-server.c ../../shared/src/
> + check_file irq-shell.c ../../shared/src/
> +
> + # Real Time Clock
> + check_file rtc-config.c rtc/
> + check_methods "bsp_rtc_initialize" "bsp_rtc_get_time" "bsp_rtc_set_time" "bsp_rtc_probe"
> +
> +
> + check_file 1 tod.c ../../shared/ tod/
> +
> + # Benchmark Timers
> + check_file benchmark_timer.c benchmark_timer/
> + check_methods "benchmark_timer_initialize" "benchmark_timer_read" "benchmark_timer_disable_subtracting_average_overhead"
> +
> +
> + # Standard Headers
> +
> + check_header 1 include/bsp.h
> + check_header include/bspopts.h
> + check_header 1 ../../shared/include/coverhd.h include/coverhd.h
> + check_header ../../shared/include/utility.h
> + check_header 1 ../../shared/include/tm27.h include/tm27.h
> +
> + cd ../../../../../../cpukit
> + find_rtems_internal
> + cd - > /dev/null
> +
> + # Finding all internal functions being used in a bsp
> + find_bsp_internal
> +
> + if [[ $flag == "1" ]]; then
> + echo -e "\n"
> + fi
> +
> + #
> # Test specific checks
> #
> -if [ ${do_test} = "yes" ] ; then
> - # find all the Makefile.am's with rtems_tests_PROGRAMS in them
> - Makefiles=`find . -name Makefile.am | xargs -e grep -l ^rtems_tests`
> - if [ "X${Makefiles}" = "X" ] ; then
> - fatal "Unable to locate any test Makefile.am files."
> - fi
> - echo "=== Checking for missing test support files"
> - for m in ${Makefiles}
> - do
> - directory=`dirname ${m}`
> - if [ ${directory} = "." ] ; then
> - directory=`pwd`
> + if [ ${do_test} == "1" ] ; then
> +
> + echo -e "\n=== Starting Test specific checks"
> + # find all the Makefile.am's with rtems_tests_PROGRAMS in them
> + Makefiles=`find . -name Makefile.am | xargs -e grep -l ^rtems_tests`
> + if [ "X${Makefiles}" = "X" ] ; then
> + echo -e "Unable to locate any test Makefile.am files.\n"
> + return
> fi
> - testName=`basename ${directory}`
> - # Does this test have a .doc file?
> - if [ ! -r ${directory}/${testName}.doc ] ; then
> - echo ${testName}.doc is not present
> + echo "=== Checking for missing test support files"
> + for m in ${Makefiles}
> + do
> + directory=`dirname ${m}`
> + if [ ${directory} = "." ] ; then
> + directory=`pwd`
> + fi
> + testName=`basename ${directory}`
> + # Does this test have a .doc file?
> + if [ ! -r ${directory}/${testName}.doc ] ; then
> + echo ${testName}.doc is not present
> + fi
> + case ${directory} in
> + */*tmtests*) ;;
> + *)
> + # Does this test have a .scn file?
> + if [ ! -r ${directory}/${testName}.scn ] ; then
> + echo ${testName}.scn is not present
> + fi
> + ;;
> + esac
> + done
> +
> + fi
> +}
> +
> +# Verifying if the directory given or pwd is a valid bsp, shared architecture, or libbsp directory
> +function check_given_dir(){
> + if echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)/([^/]+)/([^/]+)*" ; then
> + return 0
> +
> + elif echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)/([^/]+)" ; then
> +# BSP given
> + bsp=${cur_dir##*/}
> +
> + if [[ $bsp == "shared" || $bsp == "autom4te.cache" || $bsp == "no_bsp" ]]; then
> + return 0
> + else
> + main
> fi
> - case ${directory} in
> - */*tmtests*) ;;
> - *)
> - # Does this test have a .scn file?
> - if [ ! -r ${directory}/${testName}.scn ] ; then
> - echo ${testName}.scn is not present
> + elif echo $cur_dir | grep -Eq "c/src/lib/libbsp/([^/]+)" ; then
> +# Shared architecture given
> + for i in *
> + do
> + if [[ -d $i ]]; then
> + if [[ $i == "shared" || $i == "autom4te.cache" || $i == "no_bsp" ]]; then
> + echo -n
> + else
> + bsp=$i
> +
> + cd $bsp
> + main
> + cd .. > /dev/null
> + fi
> + fi
> + done
> + elif echo $cur_dir | grep -Eq "c/src/lib/libbsp" ; then
> +# libbsp given
> + for i in */*/Makefile.am
> + do
> + i=`dirname $i`
> + if [[ -d $i ]]; then
> + if [[ $i == "shared" || $i == "autom4te.cache" || $i == "no_cpu/no_bsp" ]]; then
> + echo -n
> + else
> + bsp=$i
> +
> + cd $bsp
> + main
> + cd ../../ > /dev/null
> fi
> - ;;
> + fi
> + done
> +
> + else
> + return 0
> + fi
> +}
> +
> +# Evaluating Command Line Arguments
> +function start(){
> +
> + for i in $*
> + do
> + case $i in
> + "--verbose") verbose="1" # The whole story
> + ;;
> +
> + "--warnings") warnings="1" # All warnings
> + verbose="0"
> + ;;
> +
> + "--no_format") format="0" # Disabling format checks
> + verbose="0"
> + ;;
> +
> + "--tests") do_test="1" # Enabling check of tests
> + verbose="0"
> + ;;
> +
> + "--help") echo "Help to be provided"
> + ;;
> +
> + "--"* | "-"* ) echo "Invalid options provided"
> + ;;
> +
> + *) path="$path $i" ;; # If not above options, then assumed to be a path for bsp
> esac
> done
> -
> -fi
>
> -exit 0
> +# No path given, search for bsp from pwd
> + if [[ -z $path ]];then
> + path=$PWD
> + cur_dir=`pwd`
> + check_given_dir
> + if [[ $? -eq 1 ]];then
> + echo "Current directory does not seem a valid RTEMS directory"
> + fi
> +
> + else
> + for i in $path
> + do
> + if [[ -d $i ]]; then
> + echo > /dev/null
> + else
> + echo "$i is an invalid directory."
> + continue
> + fi
> +
> + cd $i
> + cur_dir=`pwd`
> + check_given_dir
> + if [[ $? -eq 1 ]];then
> + echo "$i does not seem a valid RTEMS directory"
> + fi
> + cd $calling_path
> +
> + done
> + fi
> +}
> +
> +# Let the Game begin !!
> +start $*
> +
> +# End of Checks
> +if [[ $faults -eq "0" ]] ; then
> + echo -e "\nNo faults found in BSP organization"
> +fi
> --
> 1.7.11.7
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the devel
mailing list