#! /bin/sh # Run standard scripts. t=__wt.$$ t_pfx=__s_all_tmp_ trap 'rm -f $t *.pyc __tmp __wt.* __s_all_tmp*' 0 1 2 3 13 15 # We require python which may not be installed. type python > /dev/null 2>&1 || { echo 's_all: python not found' exit 1 } echo 'dist/s_all run started...' force= reconf=0 errmode=0 errfound=0 while : do case "$1" in -A) # Reconfigure the library build. reconf=1 shift;; -f) # Force versions to be updated force="-f" shift;; -E) # Return an error code on failure errmode=1 shift;; *) break;; esac done echo "Updating files that include the package version" && sh ./s_version $force test "$reconf" -eq 0 || { (echo "Rebuilding GNU tools library support" && cd ../build_posix && 2>&1 sh ./reconf | sed -e 's/^/ /') } errchk() { if ! `test -s $2`; then return fi echo "####################### MESSAGE ############################" echo "s_all run of: \"$1\" resulted in:" sed -e 's/^/ /' $2 echo "#######################" rm -f $2 # Some tests shouldn't return an error, we exclude them here. case "$1" in *s_export|*s_tags) ;; *) errfound=1;; esac } run() { 2>&1 $1 > $t errchk "$1" $t } # Non parallelizable scripts The following scripts either modify files or # already parallelize internally. run "sh ./s_readme $force" run "sh ./s_install $force" run "python api_config_gen.py" run "python api_err.py" run "python flags.py" run "python log.py" run "python stat.py" run "sh ./s_copyright" run "sh ./s_style" run "./s_clang-format" run "python prototypes.py" run "sh ./s_typedef -b" run "python test_tag.py" COMMANDS=" 2>&1 ./s_define > ${t_pfx}s_define 2>&1 ./s_docs > ${t_pfx}s_docs 2>&1 ./s_evergreen > ${t_pfx}s_evergreen 2>&1 ./s_export > ${t_pfx}s_export 2>&1 ./s_funcs > ${t_pfx}s_funcs 2>&1 ./s_function > ${t_pfx}s_function 2>&1 ./s_getopt > ${t_pfx}s_getopt 2>&1 ./s_lang > ${t_pfx}s_lang 2>&1 ./s_longlines > ${t_pfx}s_longlines 2>&1 ./s_python > ${t_pfx}s_python 2>&1 ./s_stat > ${t_pfx}_stat 2>&1 ./s_string > ${t_pfx}s_string 2>&1 ./s_tags > ${t_pfx}tags 2>&1 ./s_typedef -c > ${t_pfx}s_typedef_c 2>&1 ./s_void > ${t_pfx}s_void 2>&1 ./s_whitespace > ${t_pfx}s_whitespace 2>&1 ./s_win > ${t_pfx}s_win 2>&1 python function.py > ${t_pfx}py_function 2>&1 python style.py > ${t_pfx}py_style" # Parallelize if possible. xp="" echo date | xargs -P 20 >/dev/null 2>&1 if test $? -eq 0; then xp="-P 20" fi echo "$COMMANDS" | xargs $xp -I{} /bin/sh -c {} for f in `find . -name ${t_pfx}\*`; do if `test -s $f`; then LOCAL_NAME=`basename $f` # Find original command and trim redirect garbage FAILED_CMD=`echo "$COMMANDS" | grep $LOCAL_NAME | \ sed -e 's/ >.*//' -e 's/.* //'` errchk "$FAILED_CMD" $f fi done echo 'dist/s_all run finished' if test $errmode -ne 0; then exit $errfound; fi exit 0