AppLauncher
AppLauncher copied to clipboard
`--ignore-rest` does not work correctly
As far as I understand, it should allow to pass further arguments only to the launched binary, but:
Options --launcher-help Display help --launcher-version Show launcher version information --launcher-verbose Verbose mode --launch Specify the application to launch --launcher-detach Launcher will NOT wait for the application to finish --launcher-no-splash Hide launcher splash --launcher-timeout Specify the time in second before the launcher kills the application. -1 means no timeout (default: -1) --launcher-load-environment Specify the saved environment to load. --launcher-dump-environment Launcher will print environment variables to be set, then exit --launcher-show-set-environment-commands Launcher will print commands suitable for setting the parent environment (i.e. using 'eval' in a POSIX shell), then exit --launcher-additional-settings Additional settings file to consider --launcher-additional-settings-exclude-groups Comma separated list of settings groups that should NOT be overwritten by values in User and Additional settings. For example: General,Application,ExtraApplicationToLaunch --launcher-ignore-user-additional-settings Ignore additional user settings --launcher-generate-exec-wrapper-script Generate executable wrapper script allowing to set the environment --launcher-generate-template Generate an example of setting file Unknown option: -- usage: ./bin/python-real [option] ... [-c cmd | -m mod | file | -] [arg] ... Try `python -h' for more information. sliceruser@8192a65779e5:~/Slicer-4.9.0-2018-10-14-linux-amd64$ ./Slicer --launch ./bin/python-real -- -h Usage Slicer [options]
Options --launcher-help Display help --launcher-version Show launcher version information --launcher-verbose Verbose mode --launch Specify the application to launch --launcher-detach Launcher will NOT wait for the application to finish --launcher-no-splash Hide launcher splash --launcher-timeout Specify the time in second before the launcher kills the application. -1 means no timeout (default: -1) --launcher-load-environment Specify the saved environment to load. --launcher-dump-environment Launcher will print environment variables to be set, then exit --launcher-show-set-environment-commands Launcher will print commands suitable for setting the parent environment (i.e. using 'eval' in a POSIX shell), then exit --launcher-additional-settings Additional settings file to consider --launcher-additional-settings-exclude-groups Comma separated list of settings groups that should NOT be overwritten by values in User and Additional settings. For example: General,Application,ExtraApplicationToLaunch --launcher-ignore-user-additional-settings Ignore additional user settings --launcher-generate-exec-wrapper-script Generate executable wrapper script allowing to set the environment --launcher-generate-template Generate an example of setting file ./bin/python-real: can't open file '-h': [Errno 2] No such file or directory sliceruser@8192a65779e5:~/Slicer-4.9.0-2018-10-14-linux-amd64$ ./Slicer --launch ./bin/python-real -h Usage Slicer [options]
Options --launcher-help Display help --launcher-version Show launcher version information --launcher-verbose Verbose mode --launch Specify the application to launch --launcher-detach Launcher will NOT wait for the application to finish --launcher-no-splash Hide launcher splash --launcher-timeout Specify the time in second before the launcher kills the application. -1 means no timeout (default: -1) --launcher-load-environment Specify the saved environment to load. --launcher-dump-environment Launcher will print environment variables to be set, then exit --launcher-show-set-environment-commands Launcher will print commands suitable for setting the parent environment (i.e. using 'eval' in a POSIX shell), then exit --launcher-additional-settings Additional settings file to consider --launcher-additional-settings-exclude-groups Comma separated list of settings groups that should NOT be overwritten by values in User and Additional settings. For example: General,Application,ExtraApplicationToLaunch --launcher-ignore-user-additional-settings Ignore additional user settings --launcher-generate-exec-wrapper-script Generate executable wrapper script allowing to set the environment --launcher-generate-template Generate an example of setting file usage: ./bin/python-real [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x -c cmd : program passed in as string (terminates option list) -d : debug output from parser; also PYTHONDEBUG=x -E : ignore PYTHON* environment variables (such as PYTHONPATH) -h : print this help message and exit (also --help) -i : inspect interactively after running script; forces a prompt even if stdin does not appear to be a terminal; also PYTHONINSPECT=x -m mod : run library module as a script (terminates option list) -O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x -OO : remove doc-strings in addition to the -O optimizations -R : use a pseudo-random salt to make hash() values of various types be unpredictable between separate invocations of the interpreter, as a defense against denial-of-service attacks -Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew -s : don't add user site directory to sys.path; also PYTHONNOUSERSITE -S : don't imply 'import site' on initialization -t : issue warnings about inconsistent tab usage (-tt: issue errors) -u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x see man page for details on internal buffering relating to '-u' -v : verbose (trace import statements); also PYTHONVERBOSE=x can be supplied multiple times to increase verbosity -V : print the Python version number and exit (also --version) -W arg : warning control; arg is action:message:category:module:lineno also PYTHONWARNINGS=arg -x : skip first line of source, allowing use of non-Unix forms of #!cmd -3 : warn about Python 3.x incompatibilities that 2to3 cannot trivially fix file : program read from script file
-
: program read from stdin (default; interactive mode if a tty)
arg ...: arguments passed to program in sys.argv[1:]
Other environment variables:
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH : ':'-separated list of directories prefixed to the
default module search path. The result is sys.path.
PYTHONHOME : alternate
</details>
Related to #52.
It would be nice to have an implicit mode like --launch prog <all these arguments are passed to prog>
. I guess this would be a breaking change, so we would need to use something other than --launch
.
-h
is a "special case", looking at the SlicerLauncherSettings.ini
file we have:
[General]
[...]
additionalLauncherHelpShortArgument=-h
additionalLauncherHelpLongArgument=--help
[...]
This means we should probably be ignore the additionalLauncherHelpShortArgument
and additionalLauncherHelpLongArgument
value when --launch
is passed ?
Also, most of the argument to the launcher are namespaced (starts with --launcher-*
), I think issue is specific to -h
and --help
.
The following calls work:
$ ./Slicer --launch ../python-install/bin/python --version
2.7.13
$ ./Slicer --launch python --version
2.7.13
$ ./Slicer --launch ../python-install/bin/python -c "import os; print(os.__file__)"
/home/jcfr/Projects/Slicer-Qt5-VTK9-RelWithDebInfo/python-install/lib/python2.7/os.pyc
$ ./Slicer --launch python -c "import os; print(os.__file__)"
/home/jcfr/Projects/Slicer-Qt5-VTK9-RelWithDebInfo/python-install/lib/python2.7/os.pyc