[libc++] Use 'export' instead of 'env' to run remote commands
authorLouis Dionne <ldionne@apple.com>
Tue, 31 Mar 2020 21:10:29 +0000 (17:10 -0400)
committerLouis Dionne <ldionne@apple.com>
Tue, 31 Mar 2020 21:11:28 +0000 (17:11 -0400)
This allows running commands that use shell builtins remotely too, when
'env' would complain that it can't find the program.

libcxx/utils/ssh.py

index 20acaeb..02e1e3b 100644 (file)
@@ -78,8 +78,12 @@ def main():
 
     # Execute the command through SSH in the temporary directory, with the
     # correct environment.
-    command = [exe] + remaining if exe else remaining
-    res = subprocess.call(ssh('cd {} && env -i {} {}'.format(tmp, ' '.join(args.env), ' '.join(command))))
+    commands = [
+        'cd {}'.format(tmp),
+        'export {}'.format(' '.join(args.env)),
+        ' '.join([exe] + remaining if exe else remaining)
+    ]
+    res = subprocess.call(ssh(' && '.join(commands)))
 
     # Remove the temporary directory when we're done.
     subprocess.call(ssh('rm -r {}'.format(tmp)))