@@ -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}
@@ -205,11 +228,18 @@ function tue-install-target
205228 # Check if valid target received as input
206229 if [ ! -d $TUE_INSTALL_TARGETS_DIR /$target ]
207230 then
208- # Check if can be resolved by rosdep
209- tue-install-rosdep $target
210- if [ $? -eq 0 ]
231+ # Targets starting with 'ros-' will never be resolved by rosdep
232+ if [[ " $target " != " ros-" * ]]
211233 then
212- return 0
234+ # Check if can be resolved by rosdep
235+ tue-install-rosdep $target
236+ if [ $? -eq 0 ]
237+ then
238+ return 0
239+ else
240+ tue-install-debug " Target '$target ' does not exist."
241+ return 1
242+ fi
213243 else
214244 tue-install-debug " Target '$target ' does not exist."
215245 return 1
@@ -221,17 +251,7 @@ function tue-install-target
221251 TUE_INSTALL_CURRENT_TARGET=$target
222252 TUE_INSTALL_CURRENT_TARGET_DIR=$TUE_INSTALL_TARGETS_DIR /$target
223253
224- # If the target has a parent target, add target as a dependency to the parent target
225- if [ -n " $parent_target " ] && [ " $parent_target " != " main-loop" ]
226- then
227- if [ " $parent_target " != " $target " ]
228- then
229- echo " $target " >> " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target "
230- echo " $parent_target " >> " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target "
231- sort " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target " -u -o " $TUE_INSTALL_DEPENDENCIES_DIR " /" $parent_target "
232- sort " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target " -u -o " $TUE_INSTALL_DEPENDENCIES_ON_DIR " /" $target "
233- fi
234- fi
254+ _set_dependencies $parent_target $target
235255
236256 local state_file state_file_now
237257 state_file=" $TUE_INSTALL_STATE_DIR " /" $target "
0 commit comments