summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/dist/s_all
blob: 7b6e291f62c20f4c663c0e3f5a4e7f0c79ed63cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#! /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...'

fast=""
force=
reconf=0
errmode=0
errfound=0

while :
    do case "$1" in
    -A)    # Reconfigure the library build.
        reconf=1
        shift;;
    -E)    # Return an error code on failure
        errmode=1
        shift;;
    -f)    # Force versions to be updated
        force="-f"
        shift;;
    -F) # Run fast.
        echo "dist/s_all running in fast mode..."
        fast="-F"
        shift;;
    *)
        break;;
    esac
done

echo "Updating files that include the package version" &&
    sh ./s_version $force

errchk()
{
    if ! `test -s $2`; then
        return
    fi

    echo "####################### MESSAGE ############################"
    echo "s_all run of: \"$1\" resulted in:"
    sed -e 's/^/    /' $2
    echo "#######################"

    # If the test was skipped, ignore the failure.
    if ! `grep "$1.*skipped" $2 > /dev/null`; then
        errfound=1;
    fi

    # Ignore errors if the script is marked warning-only
    if [ "$3" = "--warning-only" ]; then
        errfound=0;
    fi

    rm -f $2
}

run()
{
    2>&1 $1 > $t
    errchk "$1" $t "$2"
}

# 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 "python verbose.py"
run "sh ./s_copyright"
run "sh ./s_style ${fast}"
run "./s_clang_format ${fast}"
run "python prototypes.py"
run "sh ./s_typedef -b"
run "python test_tag.py"
# The s_mentions script requires bash.
run "./s_mentions" "--warning-only"

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_evergreen_validate ${fast} > ${t_pfx}s_evergreen_validate
2>&1 ./s_export > ${t_pfx}s_export
2>&1 ./s_free > ${t_pfx}s_free
2>&1 ./s_funcs > ${t_pfx}s_funcs
2>&1 ./s_function ${fast} > ${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 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/2>&1 //'`
        errchk "$FAILED_CMD" $f
    fi
done

echo 'dist/s_all run finished'
if test $errmode -ne 0; then
    exit $errfound;
fi
exit 0