Skip to content

Commit 1c628f7

Browse files
authored
Merge pull request #2226 from ucb-bar/minor-doc-change
Error handling in init submodules
2 parents c627b28 + 8040cca commit 1c628f7

File tree

1 file changed

+56
-28
lines changed

1 file changed

+56
-28
lines changed

scripts/init-submodules-no-riscv-tools-nolog.sh

Lines changed: 56 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@ source $RDIR/scripts/utils.sh
1111

1212
common_setup
1313

14+
# Custom error handler function
15+
error_handler() {
16+
local exit_code=$?
17+
local line_number=$1
18+
local submodule_name=$2
19+
echo "Error occurred at line $line_number with exit code $exit_code in \`init-submodules-no-riscv-tools-nolog.sh\`."
20+
if [ -n "$submodule_name" ]; then
21+
echo "Submodule $submodule_name failed to update."
22+
fi
23+
echo "Exiting script."
24+
exit $exit_code
25+
}
26+
27+
# Set the trap for catching errors - call the error_handler and pass in the line number on any non-zero exit status
28+
trap 'error_handler $LINENO "$submodule_name"' ERR
29+
1430
function usage
1531
{
1632
echo "Usage: $0"
@@ -99,57 +115,69 @@ cd "$RDIR"
99115
(
100116
set -x
101117
git_submodule_exclude _skip
102-
git submodule update --init --recursive #--jobs 8
118+
git submodule update --init --recursive || exit 1 # Force exit on error #--jobs 8
103119
)
104120
)
105121

106122
(
107123
# Non-recursive clone to exclude cva6 submods
108-
git submodule update --init generators/cva6
109-
git -C generators/cva6 submodule update --init src/main/resources/cva6/vsrc/cva6
110-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/axi
111-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/axi_riscv_atomics
112-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/common_cells
113-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/fpga-support
114-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/riscv-dbg
115-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/register_interface
116-
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init --recursive src/fpu
124+
submodule_name="generators/cva6"
125+
git submodule update --init generators/cva6 || exit 1
126+
git -C generators/cva6 submodule update --init src/main/resources/cva6/vsrc/cva6 || exit 1
127+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/axi || exit 1
128+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/axi_riscv_atomics || exit 1
129+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/common_cells || exit 1
130+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/fpga-support || exit 1
131+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/riscv-dbg || exit 1
132+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init src/register_interface || exit 1
133+
git -C generators/cva6/src/main/resources/cva6/vsrc/cva6 submodule update --init --recursive src/fpu || exit 1
134+
117135
# Non-recursive clone to exclude nvdla submods
118-
git submodule update --init generators/nvdla
119-
git -C generators/nvdla submodule update --init src/main/resources/hw
136+
submodule_name="generators/nvdla"
137+
git submodule update --init generators/nvdla || exit 1
138+
git -C generators/nvdla submodule update --init src/main/resources/hw || exit 1
120139

121140
# Non-recursive clone to exclude ara submods
122-
git submodule update --init generators/ara
123-
git -C generators/ara submodule update --init ara
141+
submodule_name="generators/ara"
142+
git submodule update --init generators/ara || exit 1
143+
git -C generators/ara submodule update --init ara || exit 1
124144

125145
# Non-recursive clone to exclude gemmini-software
126-
git submodule update --init generators/gemmini
127-
git -C generators/gemmini/ submodule update --init --recursive software/gemmini-rocc-tests
146+
submodule_name="generators/gemmini"
147+
git submodule update --init generators/gemmini || exit 1
148+
git -C generators/gemmini/ submodule update --init --recursive software/gemmini-rocc-tests || exit 1
128149

129150
# Non-recursive clone
130-
git submodule update --init generators/rocket-chip
151+
submodule_name="generators/rocket-chip"
152+
git submodule update --init generators/rocket-chip || exit 1
131153

132154
# Non-recursive clone
133-
git submodule update --init generators/compress-acc
155+
submodule_name="generators/compress-acc"
156+
git submodule update --init generators/compress-acc || exit 1
134157

135158
# Non-recursive clone
136-
git submodule update --init generators/vexiiriscv
137-
git -C generators/vexiiriscv submodule update --init VexiiRiscv
138-
git -C generators/vexiiriscv/VexiiRiscv submodule update --init ext/SpinalHDL
139-
git -C generators/vexiiriscv/VexiiRiscv submodule update --init ext/rvls
159+
submodule_name="generators/vexiiriscv"
160+
git submodule update --init generators/vexiiriscv || exit 1
161+
git -C generators/vexiiriscv submodule update --init VexiiRiscv || exit 1
162+
git -C generators/vexiiriscv/VexiiRiscv submodule update --init ext/SpinalHDL || exit 1
163+
git -C generators/vexiiriscv/VexiiRiscv submodule update --init ext/rvls || exit 1
140164

141165
# Minimal non-recursive clone to initialize sbt dependencies
142-
git submodule update --init sims/firesim
166+
submodule_name="sims/firesim"
167+
git submodule update --init sims/firesim || exit 1
143168
git config --local submodule.sims/firesim.update none
144169

145170
# Non-recursive clone
146-
git submodule update --init tools/rocket-dsp-utils
171+
submodule_name="tools/rocket-dsp-utils"
172+
git submodule update --init tools/rocket-dsp-utils || exit 1
147173

148174
# Non-recursive clone
149-
git submodule update --init tools/dsptools
175+
submodule_name="tools/dsptools"
176+
git submodule update --init tools/dsptools || exit 1
150177

151178
# Only shallow clone needed for basic SW tests
152-
git submodule update --init software/firemarshal
179+
submodule_name="software/firemarshal"
180+
git submodule update --init software/firemarshal || exit 1
153181
)
154182

155183
# Configure firemarshal to know where our firesim installation is
@@ -158,5 +186,5 @@ if [ ! -f ./software/firemarshal/marshal-config.yaml ]; then
158186
fi
159187

160188
replace_content env.sh init-submodules "# line auto-generated by init-submodules-no-riscv-tools.sh
161-
__DIR="$RDIR"
162-
PATH=\$__DIR/software/firemarshal:\$PATH"
189+
__DIR=\"$RDIR\"
190+
PATH=\$__DIR/software/firemarshal:\$PATH"

0 commit comments

Comments
 (0)