1 | #!/bin/bash |
---|
2 | |
---|
3 | |
---|
4 | ##-------------------------------------------------------------------------------- |
---|
5 | ## Defaults |
---|
6 | ##-------------------------------------------------------------------------------- |
---|
7 | |
---|
8 | ## Trusting result: 'FAILED' result for 'Unknown error' |
---|
9 | export TRUST_FLAG_RESULT='FAILED' TRUST_FLAG_ERROR='X' |
---|
10 | |
---|
11 | ## Locked options from command line (export as of now to environment) |
---|
12 | ##------------------------------------------------------------------- |
---|
13 | |
---|
14 | if [ ${TRUST_FLAG_DEBUG} == 'false' ]; then |
---|
15 | ## std mode (merge stdout & stderr to /dev/null, XIOS compilation from scratch) |
---|
16 | TRUST_IO_XIOS_MODE='--full' |
---|
17 | TRUST_MAIN_STDOUT='>& /dev/null' |
---|
18 | else |
---|
19 | ## debug mode (verbose output and skip XIOS compilation) |
---|
20 | TRUST_IO_XIOS_MODE='' |
---|
21 | TRUST_MAIN_STDOUT='1> /dev/null' |
---|
22 | fi |
---|
23 | |
---|
24 | export TRUST_IO_XIOS_MODE TRUST_MAIN_STDOUT |
---|
25 | |
---|
26 | ## If '-v' arg. has been set, modify default SVN action on working copy |
---|
27 | if [ ${TRUST_SVN_REV} ]; then |
---|
28 | |
---|
29 | if [ $( echo ${TRUST_SVN_REV} | grep "HEAD\|up\|update" ) ]; then |
---|
30 | TRUST_SVN_ACTION='svn update -r HEAD --accept mine-conflict' |
---|
31 | elif [ $( echo ${TRUST_SVN_REV} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) ]; then |
---|
32 | TRUST_SVN_ACTION='svn update -r '$( echo ${TRUST_SVN_REV} | grep -o '{[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}}' ) |
---|
33 | elif [ $( echo ${TRUST_SVN_REV} | grep -o '[0-9]*' ) ]; then |
---|
34 | TRUST_SVN_ACTION='svn update -r '$( echo ${TRUST_SVN_REV} | grep -o '[0-9]*' ) |
---|
35 | fi |
---|
36 | |
---|
37 | else |
---|
38 | ## By default, no update on SVN directories |
---|
39 | TRUST_SVN_ACTION='svn status' |
---|
40 | fi |
---|
41 | |
---|
42 | export TRUST_SVN_ACTION |
---|
43 | |
---|
44 | |
---|
45 | ## Options editable by .cfg files (no export at this time) |
---|
46 | ##-------------------------------------------------------- |
---|
47 | |
---|
48 | ## NEMO 'trunk' branch by default |
---|
49 | [ -z "${TRUST_SVN_BRANCH}" ] && TRUST_SVN_BRANCH='trunk' |
---|
50 | |
---|
51 | ## Ref. cfg. unset or empty (mandatory) |
---|
52 | if [ -z "${TRUST_CFG_REF}" ]; then |
---|
53 | |
---|
54 | ## Default cfg from trunk excepting last stable |
---|
55 | TRUST_CFG_REF='ORCA2_LIM3_PISCES' |
---|
56 | |
---|
57 | if [[ ${TRUST_SVN_BRANCH} \ |
---|
58 | && ${TRUST_SVN_BRANCH} == 'nemo_v3_6_STABLE' ]]; then |
---|
59 | TRUST_CFG_REF='ORCA2_LIM_PISCES' |
---|
60 | fi |
---|
61 | |
---|
62 | fi |
---|
63 | |
---|
64 | |
---|
65 | ##-------------------------------------------------------------------------------- |
---|
66 | ## Source user & (super)computer configurations |
---|
67 | ##-------------------------------------------------------------------------------- |
---|
68 | . ./cfg/${TRUST_MAIN_USER}.cfg |
---|
69 | . ./cfg/${TRUST_MAIN_HPCC}.cfg |
---|
70 | |
---|
71 | |
---|
72 | ##-------------------------------------------------------------------------------- |
---|
73 | ## Checking and export environment variables |
---|
74 | ##-------------------------------------------------------------------------------- |
---|
75 | |
---|
76 | ## Trusting installation |
---|
77 | ## --------------------- |
---|
78 | |
---|
79 | [ -z "${TRUST_DIR_WORK}" ] && TRUST_DIR_WORK=${TRUST_MAIN_DIR}/../CONFIG |
---|
80 | [ -z "${TRUST_DIR_SCRATCH}" ] && TRUST_DIR_SCRATCH=${TRUST_MAIN_DIR} |
---|
81 | export TRUST_DIR_WORK TRUST_DIR_SCRATCH TRUST_DIR_STORE |
---|
82 | |
---|
83 | |
---|
84 | ## Branch checkout (./install_new_branch.sh) |
---|
85 | ##------------------------------------------ |
---|
86 | |
---|
87 | export TRUST_SVN_REPO='https://forge.ipsl.jussieu.fr' |
---|
88 | export TRUST_SVN_CO=( 'ARCH CONFIG NEMO |
---|
89 | EXTERNAL/AGRIF EXTERNAL/fcm EXTERNAL/IOIPSL |
---|
90 | TOOLS/COMPILE TOOLS/maketools TOOLS/REBUILD_NEMO |
---|
91 | TRUST ' ) |
---|
92 | export TRUST_SVN_UP=( 'ARCH CONFIG NEMO |
---|
93 | EXTERNAL/AGRIF EXTERNAL/fcm EXTERNAL/IOIPSL |
---|
94 | TOOLS/COMPILE ' ) |
---|
95 | |
---|
96 | export TRUST_SVN_BRANCH |
---|
97 | export TRUST_SVN_NEMOGCM=${TRUST_DIR_WORK}/${TRUST_SVN_BRANCH}/NEMOGCM |
---|
98 | |
---|
99 | |
---|
100 | ## NEMO Configuration |
---|
101 | ##------------------- |
---|
102 | |
---|
103 | [ -z "${TRUST_CFG_NEW}" ] && TRUST_CFG_NEW=${TRUST_CFG_REF}'_trust' |
---|
104 | export TRUST_CFG_NEW TRUST_CFG_REF |
---|
105 | export TRUST_CFG_KEY_ADD TRUST_CFG_KEY_DEL |
---|
106 | |
---|
107 | |
---|
108 | ## Inputs/Outputs |
---|
109 | ## -------------- |
---|
110 | |
---|
111 | [ -z "${TRUST_IO_XIOS}" ] && get_out A |
---|
112 | export TRUST_IO_XIOS |
---|
113 | |
---|
114 | ## Forcing directory set and not empty |
---|
115 | if [ ${TRUST_IO_FORC_PATH} ]; then |
---|
116 | |
---|
117 | ## Forcing archive unset |
---|
118 | if [[ ! ${TRUST_IO_FORC_TAR} && ${TRUST_IO_FORC_TAR-_} ]]; then |
---|
119 | |
---|
120 | ## Default forcing archive from trunk |
---|
121 | TRUST_IO_FORC_TAR='ORCA2_LIM_nemo_v3.7.tar INPUTS_PISCES_v3.6st.tar' |
---|
122 | [ ${TRUST_CFG_REF} == 'AMM12' ] && TRUST_IO_FORC_TAR='AMM12_v3.7.tar' |
---|
123 | |
---|
124 | ## Update forcing archive for stable |
---|
125 | if [ ${TRUST_SVN_BRANCH} == 'nemo_v3_6_STABLE' ]; then |
---|
126 | TRUST_IO_FORC_TAR='ORCA2_LIM_nemo_v3.6.tar' |
---|
127 | |
---|
128 | if [ ${TRUST_CFG_REF} == 'ORCA1_LIM3_PISCES' ]; then |
---|
129 | TRUST_IO_FORC_TAR='INPUTS_ORCA1_LIM3_PISCES_V10.tar' |
---|
130 | elif [ ${TRUST_CFG_REF} == 'AMM12' ]; then |
---|
131 | TRUST_IO_FORC_TAR='AMM12_v3.6.tar' |
---|
132 | fi |
---|
133 | |
---|
134 | fi |
---|
135 | |
---|
136 | fi |
---|
137 | |
---|
138 | fi |
---|
139 | |
---|
140 | export TRUST_IO_FORC_PATH TRUST_IO_FORC_TAR |
---|
141 | export TRUST_IO_CDO |
---|
142 | |
---|
143 | |
---|
144 | ## Compilation |
---|
145 | ##------------ |
---|
146 | |
---|
147 | ## Assuming the sourcing of XIOS arch .env file (modules) for setting |
---|
148 | if [ -z "${TRUST_JOB_ENV}" ]; then |
---|
149 | TRUST_JOB_ENV=${TRUST_IO_XIOS}/arch/arch-${TRUST_MAIN_HPCC}.env |
---|
150 | fi |
---|
151 | |
---|
152 | export TRUST_JOB_ENV |
---|
153 | |
---|
154 | ## Default parallel compilation on 4 procs |
---|
155 | [ -z "${TRUST_COMPILE_NPROC}" ] && TRUST_COMPILE_NPROC='4' |
---|
156 | export TRUST_COMPILE_NPROC |
---|
157 | |
---|
158 | ## Not mandatory |
---|
159 | export TRUST_COMPILE_FORTRAN TRUST_COMPILE_MPI TRUST_COMPILE_NETCDF |
---|
160 | |
---|
161 | |
---|
162 | ## Running |
---|
163 | ##-------- |
---|
164 | |
---|
165 | ## Assuming the job submit script is in './batch', if not |
---|
166 | if [ -z "${TRUST_JOB_SCRIPT}" ]; then |
---|
167 | TRUST_JOB_SCRIPT=${TRUST_MAIN_DIR}/batch/${TRUST_MAIN_HPCC}.sh || get_out A |
---|
168 | fi |
---|
169 | |
---|
170 | export TRUST_JOB_SCRIPT |
---|
171 | |
---|
172 | ## Mandatory job management cmds (submit, status checking and killing job) |
---|
173 | if [[ -z "${TRUST_JOB_SUBMIT}" || -z "${TRUST_JOB_STATE}" \ |
---|
174 | || -z "${TRUST_JOB_KILL}" ]]; then |
---|
175 | get_out A |
---|
176 | fi |
---|
177 | |
---|
178 | export TRUST_JOB_SUBMIT TRUST_JOB_STATE TRUST_JOB_KILL |
---|
179 | |
---|
180 | ## Default test timeout to 3h (pending AND running time) |
---|
181 | [ -z "${TRUST_JOB_TIMEOUT}" ] && TRUST_JOB_TIMEOUT='10800' |
---|
182 | export TRUST_JOB_TIMEOUT |
---|
183 | |
---|
184 | ## Job informations not mandatory |
---|
185 | export TRUST_JOB_INFO TRUST_JOB_TIME TRUST_JOB_RAM_P TRUST_JOB_RAM_V |
---|
186 | |
---|
187 | |
---|
188 | ## Trusting test |
---|
189 | ##-------------- |
---|
190 | |
---|
191 | export TRUST_TEST_NAME=${TRUST_MAIN_USER}'_'${TRUST_MAIN_HPCC} |
---|
192 | export TRUST_TEST_DATE=$( date -u +"%Y%m%d%Z%H%M" ) |
---|
193 | |
---|
194 | export TRUST_TEST_SUMMARY=trusting_${TRUST_TEST_DATE}_${TRUST_TEST_NAME}.txt |
---|
195 | export TRUST_TEST_BACKUP=trusting_${TRUST_TEST_DATE}_${TRUST_TEST_NAME}.tgz |
---|
196 | |
---|
197 | ## TRUST_TEST_DIR unset |
---|
198 | if [[ ! ${TRUST_TEST_DIR} && ${TRUST_TEST_DIR-_} ]]; then |
---|
199 | TRUST_TEST_DIR=${TRUST_DIR_SCRATCH}/${TRUST_CFG_REF}/${TRUST_SVN_BRANCH} |
---|
200 | TRUST_TEST_DIR+=/${TRUST_TEST_DATE} |
---|
201 | export TRUST_TEST_DIR |
---|
202 | fi |
---|
203 | |
---|
204 | ## TRUST_TEST_BENCHMARK unset |
---|
205 | if [[ ! ${TRUST_TEST_BENCHMARK} && ${TRUST_TEST_BENCHMARK-_} ]]; then |
---|
206 | TRUST_TEST_BENCHMARK=${TRUST_DIR_STORE}/${TRUST_CFG_REF}/${TRUST_SVN_BRANCH} |
---|
207 | export TRUST_TEST_BENCHMARK |
---|
208 | fi |
---|
209 | |
---|
210 | export TRUST_TEST_LOG=${TRUST_DIR_BENCHMARK}/trusting_${TRUST_TEST_NAME}.txt |
---|
211 | |
---|
212 | export TRUST_TEST_MAILING |
---|