@@ -125,6 +125,27 @@ function tue-install-target-now
125125 return $?
126126}
127127
128+ function _set_dependencies
129+ {
130+ local parent_target=$1
131+ local target=$2
132+
133+ # If the target has a parent target, add target as a dependency to the parent target
134+ if [ -n " $parent_target " ] && [ " $parent_target " != " main-loop" ]
135+ then
136+
137+ if [ " $parent_target " != " $target " ]
138+ then
139+ tue-install-debug " echo $target >> $TUE_INSTALL_DEPENDENCIES_DIR /$parent_target "
140+ tue-install-debug " echo $parent_target >> $TUE_INSTALL_DEPENDENCIES_ON_DIR /$target "
141+ echo " $target " >> " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target "
142+ echo " $parent_target " >> " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target "
143+ sort " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target " -u -o " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target "
144+ sort " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target " -u -o " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target "
145+ fi
146+ fi
147+ }
148+
128149# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
129150
130151function tue-install-rosdep
@@ -143,49 +164,51 @@ function tue-install-rosdep
143164 then
144165 tue-install-debug " Target '$target ' has not yet been resolved by rosdep, going to installation procedure"
145166
146- # Also make sure ros is installed
147- tue-install-target ros || tue-install-error " Failed to install target 'ROS'"
148-
149167 # Check if target can be resolved by rosdep
150168 tue-install-debug " rosdep resolve $target "
151169 rosdep_res=($( rosdep resolve $target 2>&1 ) )
152170 if [ $? -eq 0 ]
153171 then
154- tue-install-debug " rosdep correctly resolved to: ${rosdep_res[@]} "
155-
156- # If the target has a parent target, add target as a dependency to the parent target
157- if [ -n " $parent_target " ]
158- then
159- if [ " $parent_target " != " $target " ]
160- then
161- echo " $target " >> $TUE_INSTALL_DEPENDENCIES_DIR /$parent_target
162- echo " $parent_target " >> $TUE_INSTALL_DEPENDENCIES_ON_DIR /$target
163- sort $TUE_INSTALL_DEPENDENCIES_DIR /$parent_target -u -o $TUE_INSTALL_DEPENDENCIES_DIR /$parent_target
164- sort $TUE_INSTALL_DEPENDENCIES_ON_DIR /$target -u -o $TUE_INSTALL_DEPENDENCIES_ON_DIR /$target
165- fi
166- fi
172+ tue-install-debug " rosdep correctly resolved to: ${rosdep_res[*]} "
167173
168174 case ${rosdep_res[0]} in
169175 " #apt" ) tue-install-system ${rosdep_res[1]}
170176 ;;
171177 " #pip" ) tue-install-pip ${rosdep_res[1]}
172178 ;;
173- * ) tue-install-debug " Unsupported rosdep output: ${rosdep_res[@]} " ; TUE_INSTALL_CURRENT_TARGET=$parent_target ; return 1
179+ * ) tue-install-debug " Unsupported rosdep output: ${rosdep_res[*]} " ;
180+ TUE_INSTALL_CURRENT_TARGET=$parent_target ;
181+ TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR /$parent_target ;
182+ return 1
174183 ;;
175184 esac
176185
186+ if [[ ${rosdep[1]} == " ros-" * ]]
187+ then
188+ # Also make sure ros is installed
189+ tue-install-target ros || tue-install-error " Failed to install target 'ROS'"
190+ fi
191+
192+ _set_dependencies $parent_target $target
193+
177194 touch $TUE_INSTALL_STATE_DIR /$target
178195
179196 TUE_INSTALL_CURRENT_TARGET=$parent_target
197+ TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR /$parent_target
180198 return 0
181199 else
182- tue-install-debug " Could not be resolved by rosdep. error: ${rosdep_res[@ ]} "
200+ tue-install-debug " Could not be resolved by rosdep. error: ${rosdep_res[* ]} "
183201 TUE_INSTALL_CURRENT_TARGET=$parent_target
202+ TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR /$parent_target
184203 return 1
185204 fi
186205 else
187206 tue-install-debug " Target '$target ' already resolved correctly by rosdep, skipping it this time."
207+
208+ _set_dependencies $parent_target $target
209+
188210 TUE_INSTALL_CURRENT_TARGET=$parent_target
211+ TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR /$parent_target
189212 return 0
190213 fi
191214}
@@ -204,11 +227,18 @@ function tue-install-target
204227 # Check if valid target received as input
205228 if [ ! -d $TUE_INSTALL_TARGETS_DIR /$target ]
206229 then
207- # Check if can be resolved by rosdep
208- tue-install-rosdep $target
209- if [ $? -eq 0 ]
230+ # Targets starting with 'ros-' will never be resolved by rosdep
231+ if [[ " $target " != " ros-" * ]]
210232 then
211- return 0
233+ # Check if can be resolved by rosdep
234+ tue-install-rosdep $target
235+ if [ $? -eq 0 ]
236+ then
237+ return 0
238+ else
239+ tue-install-debug " Target '$target ' does not exist."
240+ return 1
241+ fi
212242 else
213243 tue-install-debug " Target '$target ' does not exist."
214244 return 1
@@ -219,17 +249,7 @@ function tue-install-target
219249 TUE_INSTALL_CURRENT_TARGET=$target
220250 TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR /$target
221251
222- # If the target has a parent target, add target as a dependency to the parent target
223- if [ -n " $parent_target " ] && [ " $parent_target " != " main-loop" ]
224- then
225- if [ " $parent_target " != " $target " ]
226- then
227- echo " $target " >> " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target "
228- echo " $parent_target " >> " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target "
229- sort " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target " -u -o " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target "
230- sort " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target " -u -o " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target "
231- fi
232- fi
252+ _set_dependencies $parent_target $target
233253
234254 local state_file=" $TUE_INSTALL_STATE_DIR " /" $target "
235255 local state_file_now=" ${state_file} -now"
0 commit comments