Updated to 3.17 for bug fixes and optimizations
[platform/upstream/nss.git] / coverage / cov.sh
1 #!/bin/bash
2 #
3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7 OS=`uname -s`
8 ARCH=`uname -p`
9 SCRIPT_DIR=`pwd`
10 DATE=`date +%Y%m%d`
11
12 if [ $# -ne 1 ]; then
13     echo "Usage: $0 [securitytip|securityjes5]"
14     exit 1
15 fi
16
17 BRANCH="$1"
18
19 if [ "${BRANCH}" != "securitytip" -a "${BRANCH}" != "securityjes5" ]; then
20     echo "Usage: $0 [securitytip|securityjes5]"
21     exit 1
22 fi
23
24 COV_DIR="/share/builds/mccrel3/security/coverage"
25 BRANCH_DIR="${COV_DIR}/${BRANCH}"
26 DATE_DIR="${BRANCH_DIR}/${DATE}-${ARCH}"
27 CVS_DIR="${DATE_DIR}/cvs_mozilla"
28 TCOV_DIR="${DATE_DIR}/tcov_mozilla"
29
30 CVS_CHECKOUT_BRANCH="cvs_checkout_${BRANCH}"
31
32 export HOST=`hostname`
33 export DOMSUF=red.iplanet.com
34
35 export NSS_ECC_MORE_THAN_SUITE_B=1
36 export IOPR_HOSTADDR_LIST="dochinups.red.iplanet.com"
37 export NSS_AIA_PATH="/share/builds/mccrel3/security/aia_certs"
38 export NSS_AIA_HTTP="http://cindercone.red.iplanet.com/share/builds/mccrel3/security/aia_certs"
39
40 export USE_TCOV=1
41 export SUN_PROFDATA_DIR="${DATE_DIR}"
42 export SUN_PROFDATA="tcov_data"
43
44 if [ "${OS}" != "SunOS" ]; then
45     echo "OS not supported"
46     exit 1
47 fi
48
49 case "${ARCH}" in 
50 "sparc")
51     export PATH="/usr/dist/share/sunstudio_sparc,v12.0/SUNWspro/prod/bin:/usr/sfw/bin:/usr/bin:/usr/ccs/bin:/usr/ucb:/tools/ns/bin:/usr/local/bin"
52     ;;
53 "i386")
54     export PATH="/usr/dist/share/sunstudio_i386,v12.0/SUNWspro/bin:/usr/sfw/bin:/usr/bin:/usr/ccs/bin:/usr/ucb:/tools/ns/bin:/usr/local/bin"
55     ;;
56 *)
57     echo "Platform not supported"
58     exit 1
59     ;;
60 esac
61
62 cvs_checkout_securitytip()
63 {
64     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A mozilla/nsprpub
65     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A mozilla/dbm
66     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A mozilla/security/dbm
67     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A mozilla/security/coreconf
68     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A mozilla/security/nss
69     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A mozilla/security/jss
70     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSS_3_11_1_RTM mozilla/security/nss/lib/freebl/ecl/ecl-curve.h
71 }
72
73 cvs_checkout_securityjes5()
74 {
75     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSPR_4_6_BRANCH mozilla/nsprpub
76     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSS_3_11_BRANCH mozilla/dbm
77     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSS_3_11_BRANCH mozilla/security/dbm
78     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSS_3_11_BRANCH mozilla/security/coreconf
79     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSS_3_11_BRANCH mozilla/security/nss
80     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r JSS_4_2_BRANCH mozilla/security/jss
81     cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -A -r NSS_3_11_1_RTM mozilla/security/nss/lib/freebl/ecl/ecl-curve.h
82 }
83
84 cvs_checkout()
85 {
86     rm -rf "${DATE_DIR}"
87     mkdir -p "${CVS_DIR}"
88     cd "${CVS_DIR}"
89
90     ${CVS_CHECKOUT_BRANCH}
91 }
92
93 run_build()
94 {
95     cd "${CVS_DIR}/mozilla/security/nss"
96     gmake nss_build_all
97 }
98
99 run_tests()
100 {
101     cd "${CVS_DIR}/mozilla/security/nss/tests"
102     ./all.sh
103 }
104
105 process_results()
106 {
107     rm -rf "${TCOV_DIR}"
108     mkdir -p "${TCOV_DIR}"
109
110     cat "${SUN_PROFDATA_DIR}/${SUN_PROFDATA}/tcovd" | grep SRCFILE | grep "${CVS_DIR}/.*.c$" | sed "s:[^/]*\(.*\):\1:" | sort -u |
111     while read line
112     do
113         DIR=`echo "${line}" | sed "s:${CVS_DIR}/\(.*\)/.*:\1:"`
114         FILE=`echo "${line}" | sed "s:.*/\(.*\):\1:"`
115
116         mkdir -p "${TCOV_DIR}/${DIR}"
117         tcov -o "${TCOV_DIR}/${DIR}/$FILE" -x "${SUN_PROFDATA}" $line >/dev/null 2>&1
118     done
119 }
120
121 cvs_checkout
122 run_build
123 run_tests
124 process_results
125
126 cd "${SCRIPT_DIR}"
127 ./report.sh "${BRANCH}" "${DATE}" "${ARCH}"  
128
129 exit 0
130