[PATCH] shepherd: add keep-tty flag to skip setsid

DoneSubmitted by muradm.
Details
2 participants
  • Ludovic Courtès
  • muradm
Owner
unassigned
Severity
normal
M
M
muradm wrote on 3 Aug 03:07 +0200
(address . guix-patches@gnu.org)
87eebbwd35.fsf@muradm.net
* modules/shepherd/service.scm: add keep-tty flag to skip setsid
when using shepherd as user, programs like xorg server, potentially anyprogram which ends up interacting with user, require terminal to remain.
currently, setsid is called unconditionally from exec-command function,making it impossible to have such process.
this adds keep-tty flag to make-forkexec-constructor up to exec-commandfunction where setsid is actually called.
Toggle diff (64 lines)diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scmindex 587ff68..1ae9544 100644--- a/modules/shepherd/service.scm+++ b/modules/shepherd/service.scm@@ -786,6 +786,7 @@ daemon writing FILE is running in a separate PID namespace." (log-file #f) (directory (default-service-directory)) (file-creation-mask #f)+ (keep-tty #f) (environment-variables (default-environment-variables))) "Run COMMAND as the current process from DIRECTORY, with FILE-CREATION-MASK if it's true, and with ENVIRONMENT-VARIABLES (a list of strings like@@ -804,7 +805,7 @@ false." ((program args ...) ;; Become the leader of a new session and session group. ;; Programs such as 'mingetty' expect this.- (setsid)+ (unless keep-tty (setsid)) (chdir directory) (environ environment-variables)@@ -889,6 +890,7 @@ false." (log-file #f) (directory (default-service-directory)) (file-creation-mask #f)+ (keep-tty #f) (environment-variables (default-environment-variables))) "Spawn a process that executed COMMAND as per 'exec-command', and return@@ -920,6 +922,7 @@ its PID." #:log-file log-file #:directory directory #:file-creation-mask file-creation-mask+ #:keep-tty keep-tty #:environment-variables environment-variables)) pid)))) @@ -929,6 +932,7 @@ its PID." (group #f) (supplementary-groups '()) (directory (default-service-directory))+ (keep-tty #f) (environment-variables (default-environment-variables)) (file-creation-mask #f)@@ -949,7 +953,9 @@ When @var{pid-file} is true, it must be the name of a PID file associated with the process being launched; the return value is the PID read from that file, once that file has been created. If @var{pid-file} does not show up in less than @var{pid-file-timeout} seconds, the service is considered as failing to-start."+start.++When @var{keep-tty} is true, will not call @code{setsid} for process." (lambda args (define (clean-up file) (when file@@ -969,6 +975,7 @@ start." #:log-file log-file #:directory directory #:file-creation-mask file-creation-mask+ #:keep-tty keep-tty #:environment-variables environment-variables))) (if pid-file
L
L
Ludovic Courtès wrote on 10 Aug 14:51 +0200
(name . muradm)(address . mail@muradm.net)(address . 49839-done@debbugs.gnu.org)
87czqlsbrs.fsf@gnu.org
Hi,
muradm <mail@muradm.net> skribis:
Toggle quote (34 lines)> * modules/shepherd/service.scm: add keep-tty flag to skip setsid>> when using shepherd as user, programs like xorg server, potentially> any> program which ends up interacting with user, require terminal to> remain.>> currently, setsid is called unconditionally from exec-command> function,> making it impossible to have such process.>> this adds keep-tty flag to make-forkexec-constructor up to> exec-command> function where setsid is actually called.>> diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm> index 587ff68..1ae9544 100644> --- a/modules/shepherd/service.scm> +++ b/modules/shepherd/service.scm> @@ -786,6 +786,7 @@ daemon writing FILE is running in a separate PID namespace."> (log-file #f)> (directory (default-service-directory))> (file-creation-mask #f)> + (keep-tty #f)> (environment-variables (default-environment-variables)))> "Run COMMAND as the current process from DIRECTORY, with FILE-CREATION-MASK> if it's true, and with ENVIRONMENT-VARIABLES (a list of strings like> @@ -804,7 +805,7 @@ false."> ((program args ...)> ;; Become the leader of a new session and session group.> ;; Programs such as 'mingetty' expect this.> - (setsid)> + (unless keep-tty (setsid))
I did that slightly differently:
https://git.savannah.gnu.org/cgit/shepherd.git/commit/?id=c43f81794344dbac31bcb8b8f1c0d266f47f14fa
Let me know if it works for you.
Thanks,Ludo’.
Closed
M
M
muradm wrote on 10 Aug 23:08 +0200
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 49839-done@debbugs.gnu.org)
87k0kt9fe3.fsf@muradm.net
Hi,
Basically it is samething, should work.Any idea when to expect it in public?
Thanks in advance,muradm
Ludovic Courtès <ludo@gnu.org> writes:
Toggle quote (53 lines)> Hi,>> muradm <mail@muradm.net> skribis:>>> * modules/shepherd/service.scm: add keep-tty flag to skip >> setsid>>>> when using shepherd as user, programs like xorg server, >> potentially>> any>> program which ends up interacting with user, require terminal >> to>> remain.>>>> currently, setsid is called unconditionally from exec-command>> function,>> making it impossible to have such process.>>>> this adds keep-tty flag to make-forkexec-constructor up to>> exec-command>> function where setsid is actually called.>>>> diff --git a/modules/shepherd/service.scm >> b/modules/shepherd/service.scm>> index 587ff68..1ae9544 100644>> --- a/modules/shepherd/service.scm>> +++ b/modules/shepherd/service.scm>> @@ -786,6 +786,7 @@ daemon writing FILE is running in a >> separate PID namespace.">> (log-file #f)>> (directory (default-service-directory))>> (file-creation-mask #f)>> + (keep-tty #f)>> (environment-variables (default-environment-variables)))>> "Run COMMAND as the current process from DIRECTORY, with >> FILE-CREATION-MASK>> if it's true, and with ENVIRONMENT-VARIABLES (a list of >> strings like>> @@ -804,7 +805,7 @@ false.">> ((program args ...)>> ;; Become the leader of a new session and session group.>> ;; Programs such as 'mingetty' expect this.>> - (setsid)>> + (unless keep-tty (setsid))>> I did that slightly differently:>> https://git.savannah.gnu.org/cgit/shepherd.git/commit/?id=c43f81794344dbac31bcb8b8f1c0d266f47f14fa>> Let me know if it works for you.>> Thanks,> Ludo’.
Closed
L
L
Ludovic Courtès wrote on 11 Aug 11:57 +0200
(name . muradm)(address . mail@muradm.net)(address . 49839-done@debbugs.gnu.org)
87fsvgpalk.fsf@gnu.org
Hi,
muradm <mail@muradm.net> skribis:
Toggle quote (3 lines)> Basically it is samething, should work.> Any idea when to expect it in public?
There are no planned Shepherd releases currently, we’ll see…
Thanks,Ludo’.
Closed
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send email to 49839@debbugs.gnu.org