Skip to content

Commit c7070f9

Browse files
committed
use rosdep
1 parent 042e163 commit c7070f9

File tree

1 file changed

+79
-5
lines changed

1 file changed

+79
-5
lines changed

installer/tue-install-impl.bash

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,25 +127,96 @@ function tue-install-target-now
127127

128128
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
129129

130+
function tue-install-rosdep
131+
{
132+
tue-install-debug "tue-install-rosdep $*"
133+
134+
local target=$1
135+
local now=$2
136+
137+
local parent_target=$TUE_INSTALL_CURRENT_TARGET
138+
TUE_INSTALL_CURRENT_TARGET=$target
139+
TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR/$target
140+
141+
# If file exist, target has been resolved correctly in the past.
142+
if [ ! -f $TUE_INSTALL_STATE_DIR/$target ]
143+
then
144+
tue-install-debug "Target '$target' has not yet been resolved by rosdep, going to installation procedure"
145+
146+
# Check if target can be resolved by rosdep
147+
tue-install-debug "rosdep resolve $target"
148+
rosdep_res=($(rosdep resolve $target 2>&1))
149+
if [ $? -eq 0 ]
150+
then
151+
tue-install-debug "rosdep correctly resolved to: ${rosdep_res[@]}"
152+
# Also make sure ros is installed
153+
tue-install-target ros || tue-install-error "Failed to install target 'ROS'"
154+
155+
# If the target has a parent target, add target as a dependency to the parent target
156+
if [ -n "$parent_target" ]
157+
then
158+
if [ "$parent_target" != "$target" ]
159+
then
160+
echo "$target" >> $TUE_INSTALL_DEPENDENCIES_DIR/$parent_target
161+
echo "$parent_target" >> $TUE_INSTALL_DEPENDENCIES_ON_DIR/$target
162+
sort $TUE_INSTALL_DEPENDENCIES_DIR/$parent_target -u -o $TUE_INSTALL_DEPENDENCIES_DIR/$parent_target
163+
sort $TUE_INSTALL_DEPENDENCIES_ON_DIR/$target -u -o $TUE_INSTALL_DEPENDENCIES_ON_DIR/$target
164+
fi
165+
fi
166+
167+
case ${rosdep_res[0]} in
168+
"#apt") tue-install-system ${rosdep_res[1]}
169+
;;
170+
"#pip") tue-install-pip ${rosdep_res[1]}
171+
;;
172+
*) tue-install-debug "Unsupported rosdep output: ${rosdep_res[@]}"; TUE_INSTALL_CURRENT_TARGET=$parent_target; return 1
173+
;;
174+
esac
175+
176+
touch $TUE_INSTALL_STATE_DIR/$target
177+
178+
TUE_INSTALL_CURRENT_TARGET=$parent_target
179+
return 0
180+
else
181+
tue-install-debug "Could not be resolved by rosdep. error: ${rosdep_res[@]}"
182+
TUE_INSTALL_CURRENT_TARGET=$parent_target
183+
return 1
184+
fi
185+
else
186+
tue-install-debug "Target '$target' already resolved correctly by rosdep, skipping it this time."
187+
TUE_INSTALL_CURRENT_TARGET=$parent_target
188+
return 0
189+
fi
190+
}
191+
192+
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
193+
130194
function tue-install-target
131195
{
132196
tue-install-debug "tue-install-target $*"
133197

134198
local target=$1
135199
local now=$2
136200

137-
tue-install-debug "Installing target: $target"
201+
tue-install-debug "Installing $target"
138202

139203
# Check if valid target received as input
140-
if [ ! -d "$TUE_INSTALL_TARGETS_DIR"/"$target" ]
204+
if [ ! -d $TUE_INSTALL_TARGETS_DIR/$target ]
141205
then
142-
tue-install-debug "Target '$target' does not exist."
143-
return 1
206+
# Check if can be resolved by rosdep
207+
tue-install-rosdep $target
208+
if [ $? -eq 0 ]
209+
then
210+
return 0
211+
else
212+
tue-install-debug "Target '$target' does not exist."
213+
return 1
214+
fi
144215
fi
145216

146217
local parent_target=$TUE_INSTALL_CURRENT_TARGET
147-
TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR/$target
148218
TUE_INSTALL_CURRENT_TARGET=$target
219+
TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR/$target
149220

150221
# If the target has a parent target, add target as a dependency to the parent target
151222
if [ -n "$parent_target" ] && [ "$parent_target" != "main-loop" ]
@@ -230,6 +301,7 @@ function tue-install-target
230301
tue-install-error "Invalid install.yaml: $cmds"
231302
fi
232303
fi
304+
unset cmds # unset cmds as we are not using local, because of the error code.
233305
fi
234306

235307
if [ -f "$install_file".bash ]
@@ -258,6 +330,8 @@ function tue-install-target
258330
touch "$state_file"
259331
fi
260332

333+
else
334+
tue-install-debug "Target '$target' already installed, skipping it this time."
261335
fi
262336

263337
TUE_INSTALL_CURRENT_TARGET=$parent_target

0 commit comments

Comments
 (0)