|
3 | 3 | import inspect
|
4 | 4 | import logging
|
5 | 5 | import os
|
| 6 | +import platform |
6 | 7 | import sys
|
7 | 8 | from subprocess import Popen
|
8 | 9 |
|
|
15 | 16 | DETACHED_PROCESS = 0x00000008
|
16 | 17 |
|
17 | 18 |
|
18 |
| -def _spawn_windows(cmd, env): |
19 |
| - from subprocess import STARTUPINFO, STARTF_USESHOWWINDOW |
20 |
| - |
| 19 | +def _popen(cmd, **kwargs): |
21 | 20 | prefix = [sys.executable]
|
22 | 21 | if not is_binary():
|
23 | 22 | prefix += [sys.argv[0]]
|
24 | 23 |
|
| 24 | + return Popen(prefix + cmd, close_fds=True, shell=False, **kwargs) |
| 25 | + |
| 26 | + |
| 27 | +def _spawn_windows(cmd, env): |
| 28 | + from subprocess import STARTUPINFO, STARTF_USESHOWWINDOW |
| 29 | + |
25 | 30 | creationflags = CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS
|
26 | 31 |
|
27 | 32 | startupinfo = STARTUPINFO()
|
28 | 33 | startupinfo.dwFlags |= STARTF_USESHOWWINDOW
|
29 | 34 |
|
30 |
| - Popen( |
31 |
| - prefix + cmd, |
32 |
| - env=env, |
33 |
| - close_fds=True, |
34 |
| - shell=False, |
35 |
| - creationflags=creationflags, |
36 |
| - startupinfo=startupinfo, |
| 35 | + _popen( |
| 36 | + cmd, env=env, creationflags=creationflags, startupinfo=startupinfo, |
37 | 37 | ).communicate()
|
38 | 38 |
|
39 | 39 |
|
@@ -65,8 +65,13 @@ def _spawn_posix(cmd, env):
|
65 | 65 | sys.stdout.close()
|
66 | 66 | sys.stderr.close()
|
67 | 67 |
|
68 |
| - os.environ.update(env) |
69 |
| - main(cmd) |
| 68 | + if platform.system() == "Darwin": |
| 69 | + # workaround for MacOS bug |
| 70 | + # https://github.com/iterative/dvc/issues/4294 |
| 71 | + _popen(cmd, env=env).communicate() |
| 72 | + else: |
| 73 | + os.environ.update(env) |
| 74 | + main(cmd) |
70 | 75 |
|
71 | 76 | os._exit(0) # pylint: disable=protected-access
|
72 | 77 |
|
|
0 commit comments