[Bug 273666] devel/py-invoke: Change default shell to /bin/sh, Add SUDO option
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 10 Sep 2023 01:16:10 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273666
Bug ID: 273666
Summary: devel/py-invoke: Change default shell to /bin/sh, Add
SUDO option
Product: Ports & Packages
Version: Latest
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: Individual Port(s)
Assignee: sunpoet@FreeBSD.org
Reporter: DtxdF@disroot.org
Flags: maintainer-feedback?(sunpoet@FreeBSD.org)
Assignee: sunpoet@FreeBSD.org
Attachment #244741 maintainer-approval+
Flags:
Created attachment 244741
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=244741&action=edit
py-invoke.patch
Description:
pyinvoke has some issues with the default shell [1], which is /bin/bash. Many
unix-like systems don't have that shell but have /bin/sh. FreeBSD is one of
them, so I think it is worth patching this port to use /bin/sh to avoid the
error in Exception #1.
I have added the SUDO option because it might be useful for those who use sudo
and it also solves the problem described in Exception #2.
[1] https://github.com/pyinvoke/invoke/issues?q=%2Fbin%2Fsh
Exception #1:
```
# python3.9
Python 3.9.17 (main, Aug 6 2023, 01:11:50)
[Clang 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc1238
on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> import invoke
>>> invoke.run("whoami")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.9/site-packages/invoke/__init__.py", line 50, in
run
return Context().run(command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/context.py", line 104, in
run
return self._run(runner, command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/context.py", line 113, in
_run
return runner.run(command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/runners.py", line 395, in
run
return self._run_body(command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/runners.py", line 440, in
_run_body
self.start(command, self.opts["shell"], self.env)
File "/usr/local/lib/python3.9/site-packages/invoke/runners.py", line 1337,
in start
self.process = Popen(
File "/usr/local/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/local/lib/python3.9/subprocess.py", line 1837, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/bin/bash'
```
Exception #2:
```
# python3.9
Python 3.9.18 (main, Sep 9 2023, 23:31:39)
[Clang 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc1238
on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> import invoke
>>> invoke.run("whoami")
root
<Result cmd='whoami' exited=0>
>>> invoke.sudo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sudo() missing 1 required positional argument: 'command'
>>> invoke.sudo("whoami")
/bin/sh: sudo: not found
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.9/site-packages/invoke/__init__.py", line 70, in
sudo
return Context().sudo(command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/context.py", line 185, in
sudo
return self._sudo(runner, command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/context.py", line 232, in
_sudo
return runner.run(cmd_str, watchers=watchers, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/runners.py", line 395, in
run
return self._run_body(command, **kwargs)
File "/usr/local/lib/python3.9/site-packages/invoke/runners.py", line 451, in
_run_body
return self.make_promise() if self._asynchronous else self._finish()
File "/usr/local/lib/python3.9/site-packages/invoke/runners.py", line 518, in
_finish
raise UnexpectedExit(result)
invoke.exceptions.UnexpectedExit: Encountered a bad command exit code!
Command: "sudo -S -p '[sudo] password: ' whoami"
Exit code: 127
Stdout: already printed
Stderr: already printed
```
QA:
* portlint: OK (looks fine.)
* testport: OK (poudriere: 13.2-RELEASE, amd64, SUDO tested)
--
You are receiving this mail because:
You are the assignee for the bug.