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