@@ -202,22 +202,23 @@ def _strip_prefix(cmd_line):
202202 """Strip an OS operating prefix from a command line.
203203 """
204204 if cmd_line .startswith ('cmd.exe /c ' ):
205- return cmd_line [11 :].strip ('"' )
205+ return 'cmd.exe /c ' , cmd_line [11 :].strip ('"' )
206+ # Always use full cmd name for windows
206207 if cmd_line .startswith ('cmd /c ' ):
207- return cmd_line [7 :].strip ('"' )
208+ return 'cmd.exe /c ' , cmd_line [7 :].strip ('"' )
208209 if cmd_line .startswith ('/bin/bash -c ' ):
209- return cmd_line [13 :]
210+ return '/bin/bash -c ' , cmd_line [13 :]
210211 if cmd_line .startswith ('/bin/sh -c ' ):
211- return cmd_line [11 :]
212- return cmd_line
212+ return '/bin/sh -c ' , cmd_line [11 :]
213+ return "" , cmd_line
213214
214215def _add_cmd_prefix (task , os_flavor ):
215216 """Add OS-specific command prefix to command line."""
216217 if os_flavor == pool_utils .PoolOperatingSystemFlavor .WINDOWS :
217218 # TODO: Do we need windows shell escaping?
218219 task .command_line = 'cmd /c "{}"' .format (task .command_line ) #.replace('\"','\\\\\"')
219220 elif os_flavor == pool_utils .PoolOperatingSystemFlavor .LINUX :
220- task .command_line = '/bin/bash -c \' set -e; set -o pipefail; {}; wait\' ' .format (task .command_line )
221+ task .command_line = '/bin/sh -c \' set -e; set -o pipefail; {}; wait\' ' .format (task .command_line )
221222 else :
222223 raise ValueError ("Unknown pool OS flavor: " + str (os_flavor ))
223224
@@ -1041,22 +1042,24 @@ def construct_setup_task(existing_task, command_info, os_flavor):
10411042 if os_flavor == pool_utils .PoolOperatingSystemFlavor .WINDOWS :
10421043 result ['command_line' ] = 'cmd.exe /c "{}"' .format (result ['command_line' ])
10431044 elif os_flavor == pool_utils .PoolOperatingSystemFlavor .LINUX :
1044- result ['command_line' ] = '/bin/bash -c {}' .format (result ['command_line' ])
1045+ result ['command_line' ] = '/bin/sh -c {}' .format (result ['command_line' ])
10451046 else :
10461047 raise ValueError ("Unknown pool OS flavor: " + str (os_flavor ))
10471048 return result if result else None
1049+ prefix = ""
10481050 if result .get ('command_line' ):
1049- commands .append (_strip_prefix (result ['command_line' ]))
1051+ prefix , cmd = _strip_prefix (result ['command_line' ])
1052+ commands .append (cmd )
10501053 resources .extend (result .get ('resource_files' , []))
10511054 if os_flavor == pool_utils .PoolOperatingSystemFlavor .WINDOWS :
10521055 full_win_cmd = ' & ' .join (commands )
1053- result ['command_line' ] = 'cmd.exe /c "{}"' .format (full_win_cmd )
1056+ result ['command_line' ] = '{} "{}"' .format (prefix , full_win_cmd )
10541057 result ['user_identity' ] = models .UserIdentity (
10551058 auto_user = models .AutoUserSpecification (scope = "task" , elevation_level = "admin" ))
10561059 elif os_flavor == pool_utils .PoolOperatingSystemFlavor .LINUX :
10571060 # Escape the users command line
10581061 full_linux_cmd = shell_escape (';' .join (commands ))
1059- result ['command_line' ] = '/bin/bash -c {}' .format (full_linux_cmd )
1062+ result ['command_line' ] = '{} {}' .format (prefix , full_linux_cmd )
10601063 result ['user_identity' ] = models .UserIdentity (
10611064 auto_user = models .AutoUserSpecification (scope = "pool" , elevation_level = "admin" ))
10621065 else :
0 commit comments