Vipul Make sure it gives the same results after check in that it did from your local version.
Paranoid sounding but better to be safe than sorry. On 9/17/2013 1:12 PM, Vipul Nayyar wrote: > Hello Gedare, Joel > > Thanks for committing it. I can see it > here > http://git.rtems.org/rtems-testing/commit/?id=3486c86b95341b50876a781f5c178229c52bf26b > > I hope it's visible to everyone :-) > > Regards > Vipul Nayyar > > > ------------------------------------------------------------------------ > *From:* Gedare Bloom <ged...@rtems.org> > *To:* Joel Sherrill <joel.sherr...@oarcorp.com> > *Cc:* Vipul Nayyar <nayyar_vi...@yahoo.com>; "rtems-devel@rtems.org" > <rtems-devel@rtems.org> > *Sent:* Tuesday, 17 September 2013 11:39 PM > *Subject:* Re: [PATCH] Bash script to review BSP File Organization > > Hey Joel and Vipul, > I applied and committed it. Please verify. > -Gedare > > On Tue, Sep 17, 2013 at 1:51 PM, Joel Sherrill > <joel.sherr...@oarcorp.com <mailto:joel.sherr...@oarcorp.com>> wrote: >> 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_vi...@yahoo.com > <mailto:nayyar_vi...@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@rtems.org <mailto:rtems-devel@rtems.org> >>> http://www.rtems.org/mailman/listinfo/rtems-devel >>> >> >> >> >> -- >> Joel Sherrill, Ph.D. Director of Research & Development >> joel.sherr...@oarcorp.com <mailto:joel.sherr...@oarcorp.com> > On-Line Applications Research >> Ask me about RTEMS: a free RTOS Huntsville AL 35805 >> Support Available (256) 722-9985 >> _______________________________________________ >> rtems-devel mailing list >> rtems-devel@rtems.org <mailto:rtems-devel@rtems.org> >> http://www.rtems.org/mailman/listinfo/rtems-devel > > -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ rtems-devel mailing list rtems-devel@rtems.org http://www.rtems.org/mailman/listinfo/rtems-devel