archiver: create_cmd: do not add preexec_fn on Windows

The preexec_fn argument of Popen is not supported on Windows.
This commit is contained in:
Rayyan Ansari 2022-11-27 13:21:23 +00:00
parent 1deeb0b17d
commit 5e8452a705
2 changed files with 9 additions and 4 deletions

View file

@ -28,6 +28,7 @@ from ..helpers import sig_int, ignore_sigint
from ..helpers import iter_separated
from ..manifest import Manifest
from ..patterns import PatternMatcher
from ..platform import is_win32
from ..platform import get_flags
from ..platform import uid2user, gid2group
@ -68,7 +69,9 @@ class CreateMixIn:
if not dry_run:
try:
try:
proc = subprocess.Popen(args.paths, stdout=subprocess.PIPE, preexec_fn=ignore_sigint)
proc = subprocess.Popen(
args.paths, stdout=subprocess.PIPE, preexec_fn=None if is_win32 else ignore_sigint
)
except (FileNotFoundError, PermissionError) as e:
self.print_error("Failed to execute command: %s", e)
return self.exit_code
@ -89,7 +92,9 @@ class CreateMixIn:
paths_sep = eval_escapes(args.paths_delimiter) if args.paths_delimiter is not None else "\n"
if args.paths_from_command:
try:
proc = subprocess.Popen(args.paths, stdout=subprocess.PIPE, preexec_fn=ignore_sigint)
proc = subprocess.Popen(
args.paths, stdout=subprocess.PIPE, preexec_fn=None if is_win32 else ignore_sigint
)
except (FileNotFoundError, PermissionError) as e:
self.print_error("Failed to execute command: %s", e)
return self.exit_code

View file

@ -341,7 +341,7 @@ def create_filter_process(cmd, stream, stream_close, inbound=True):
stdin=filter_stream,
log_prefix="filter-process: ",
env=env,
preexec_fn=ignore_sigint,
preexec_fn=None if is_win32 else ignore_sigint,
)
else:
proc = popen_with_error_handling(
@ -350,7 +350,7 @@ def create_filter_process(cmd, stream, stream_close, inbound=True):
stdout=filter_stream,
log_prefix="filter-process: ",
env=env,
preexec_fn=ignore_sigint,
preexec_fn=None if is_win32 else ignore_sigint,
)
if not proc:
raise Error(f"filter {cmd}: process creation failed")