From 124793b12612a322c7c85bb21aee9ba5dbad3562 Mon Sep 17 00:00:00 2001 From: onefang Date: Tue, 10 Aug 2021 17:18:53 +1000 Subject: Less bash and PATH insanity. --- src/sledjchisl/sledjchisl.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) (limited to 'src/sledjchisl/sledjchisl.c') diff --git a/src/sledjchisl/sledjchisl.c b/src/sledjchisl/sledjchisl.c index cda4c57..8b63866 100644 --- a/src/sledjchisl/sledjchisl.c +++ b/src/sledjchisl/sledjchisl.c @@ -1519,25 +1519,24 @@ void prepSims(simData *simd, char *type, int count, int window, int panes, int p simd->pane = pane; // Make sure all tmux windows and panes are startned. - // The bash invocations are so that the PATH is properly propagated. if (0 == panes) - doTmuxCmd("split-window -hp 50 -d -t '%s:0.1' bash", Tconsole); + doTmuxCmd("split-window -hp 50 -d -t '%s:0.1'", Tconsole); else if (0 == pane) { - doTmuxCmd("new-window -dc '%s/current/bin' -n '%s' -t '%s:%d' bash", scRoot, type, Tconsole, window); + doTmuxCmd("new-window -dc '%s/current/bin' -n '%s' -t '%s:%d'", scRoot, type, Tconsole, window); if (2 <= panes) - doTmuxCmd("split-window -hp 50 -d -t '%s:%d.0' bash", Tconsole, window); + doTmuxCmd("split-window -hp 50 -d -t '%s:%d.0'", Tconsole, window); if (4 <= panes) { - doTmuxCmd("split-window -vp 50 -d -t '%s:%d.1' bash", Tconsole, window); - doTmuxCmd("split-window -vp 50 -d -t '%s:%d.0' bash", Tconsole, window); + doTmuxCmd("split-window -vp 50 -d -t '%s:%d.1'", Tconsole, window); + doTmuxCmd("split-window -vp 50 -d -t '%s:%d.0'", Tconsole, window); } if (8 <= panes) { - doTmuxCmd("split-window -hp 50 -d -t '%s:%d.3' bash", Tconsole, window); - doTmuxCmd("split-window -hp 50 -d -t '%s:%d.2' bash", Tconsole, window); - doTmuxCmd("split-window -hp 50 -d -t '%s:%d.1' bash", Tconsole, window); - doTmuxCmd("split-window -hp 50 -d -t '%s:%d.0' bash", Tconsole, window); + doTmuxCmd("split-window -hp 50 -d -t '%s:%d.3'", Tconsole, window); + doTmuxCmd("split-window -hp 50 -d -t '%s:%d.2'", Tconsole, window); + doTmuxCmd("split-window -hp 50 -d -t '%s:%d.1'", Tconsole, window); + doTmuxCmd("split-window -hp 50 -d -t '%s:%d.0'", Tconsole, window); } } @@ -7468,9 +7467,12 @@ jit library is loaded or the JIT compiler will not be activated. I("Not running inside the proper tmux server, starting it."); snprintf(toybuf, sizeof(toybuf), // Set x,y to huge values, to work around an OpenSim bug. - "export PATH='%s:$PATH'; %s %s/%s new-session -d -x 256 -y 420 -s %s -n '%s' bash -c 'export PATH=%s:$PATH; bash' \\; split-window -vp 50 -t '%s:' " - "bash -c 'export PATH=%s:$PATH; /usr/bin/valgrind --leak-check=full ./sledjchisl; cd %s/current/bin; bash'", - scBin, Tcmd, scRun, Tsocket, Tconsole, Ttab, scBin, Tconsole, scBin, scBin, scRoot); + // bash -c "bash -c '...; bash'" coz sudo, su, runuser, and start-stop-daemon insist. Pffft + // Double the export PATH='%s:$PATH coz tmux sucks at that. + "bash -c \"%s %s/%s set-option -g default-command 'export PATH=%s:$PATH; bash'\\; " + "new-session -d -x 256 -y 420 -s %s -n '%s' \\; " + "split-window -vp 50 -t '%s:' bash -c 'export PATH=%s:$PATH; /usr/bin/valgrind --leak-check=full ./sledjchisl; cd %s/current/bin; bash'\"", + Tcmd, scRun, Tsocket, scBin, Tconsole, Ttab, Tconsole, scBin, scBin, scRoot); } else { @@ -7479,9 +7481,10 @@ jit library is loaded or the JIT compiler will not be activated. // After the session is created, we rely on the scRun directory to be group sticky, so that anyone in the opensim group can attach to the tmux socket. snprintf(toybuf, sizeof(toybuf), // Set x,y to huge values, to work around an OpenSim bug. - "sudo -Hu %s %s %s/%s new-session -d -x 256 -y 420 -s %s -n '%s' bash -c 'export PATH=%s:$PATH; bash' \\; split-window -vp 50 -t '%s:' " - "bash -c 'export PATH=%s:$PATH; /usr/bin/valgrind --leak-check=full ./sledjchisl; cd %s/current/bin; bash'", - scUser, Tcmd, scRun, Tsocket, Tconsole, Ttab, scBin, Tconsole, scBin, scRoot); + "sudo -Hu %s %s %s/%s set-option -g default-command 'export PATH=%s:$PATH; bash'\\; " + "new-session -d -x 256 -y 420 -s %s -n '%s' \\; " + "split-window -vp 50 -t '%s:' bash -c 'export PATH=%s:$PATH; /usr/bin/valgrind --leak-check=full ./sledjchisl; cd %s/current/bin; bash'", + scUser, Tcmd, scRun, Tsocket, scBin, Tconsole, Ttab, Tconsole, scBin, scRoot); } i = system(toybuf); if (!WIFEXITED(i)) -- cgit v1.1