clwrapper: better support for ensuring noninteractive execution

This commit is contained in:
Michael Raskin 2017-03-30 13:00:43 +02:00
parent c1f922b0b5
commit 953fc6c0a0
2 changed files with 17 additions and 3 deletions

View File

@ -1,4 +1,4 @@
#! /bin/sh #!@stdenv_shell@
# Part of NixPkgs package collection # Part of NixPkgs package collection
# This script can be used at your option under the same license as NixPkgs or # This script can be used at your option under the same license as NixPkgs or
# under MIT/X11 license # under MIT/X11 license
@ -15,38 +15,51 @@ export NIX_LISP NIX_LISP_LOAD_FILE NIX_LISP_EXEC_CODE NIX_LISP_COMMAND NIX_LISP_
test -n "$NIX_LISP_LD_LIBRARY_PATH" && test -n "$NIX_LISP_LD_LIBRARY_PATH" &&
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH+:}$NIX_LISP_LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH+:}$NIX_LISP_LD_LIBRARY_PATH"
declare -a NIX_LISP_FINAL_PARAMETERS;
case "$NIX_LISP" in case "$NIX_LISP" in
sbcl) sbcl)
NIX_LISP_LOAD_FILE="--load" NIX_LISP_LOAD_FILE="--load"
NIX_LISP_EXEC_CODE="--eval" NIX_LISP_EXEC_CODE="--eval"
NIX_LISP_QUIT="(quit)" NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='--non-interactive'
NIX_LISP_FINAL_PARAMETERS= NIX_LISP_FINAL_PARAMETERS=
;; ;;
ecl) ecl)
NIX_LISP_LOAD_FILE="-load" NIX_LISP_LOAD_FILE="-load"
NIX_LISP_EXEC_CODE="-eval" NIX_LISP_EXEC_CODE="-eval"
NIX_LISP_QUIT="(quit)" NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='--nodebug'
NIX_LISP_FINAL_PARAMETERS= NIX_LISP_FINAL_PARAMETERS=
;; ;;
clisp) clisp)
NIX_LISP_LOAD_FILE="-c -l" NIX_LISP_LOAD_FILE="-c -l"
NIX_LISP_EXEC_CODE="-x" NIX_LISP_EXEC_CODE="-x"
NIX_LISP_QUIT="(quit)" NIX_LISP_QUIT="(quit)"
NIX_LISP_NODEBUG='-on-error exit'
NIX_LISP_FINAL_PARAMETERS="-repl" NIX_LISP_FINAL_PARAMETERS="-repl"
;; ;;
esac esac
NIX_LISP_ASDF_REGISTRY_CODE=" NIX_LISP_ASDF_REGISTRY_CODE="
(progn (progn
(setf asdf:*default-source-registries* '(asdf/source-registry:environment-source-registry)) #+asdf3 (setf asdf:*default-source-registries*
'(asdf/source-registry:environment-source-registry))
(asdf:initialize-source-registry) (asdf:initialize-source-registry)
) )
" "
NIX_LISP_ASDF="${NIX_LISP_ASDF:-@asdf@}" NIX_LISP_ASDF="${NIX_LISP_ASDF:-@asdf@}"
nix_lisp_run_single_form(){
NIX_LISP_FINAL_PARAMETERS=("$NIX_LISP_EXEC_CODE" "$1"
"$NIX_LISP_EXEC_CODE" "$NIX_LISP_QUIT" $NIX_LISP_NODEBUG)
}
eval "$NIX_LISP_PRELAUNCH_HOOK"
[ -z "$NIX_LISP_SKIP_CODE" ] && "$NIX_LISP_COMMAND" $NIX_LISP_EARLY_OPTIONS \ [ -z "$NIX_LISP_SKIP_CODE" ] && "$NIX_LISP_COMMAND" $NIX_LISP_EARLY_OPTIONS \
$NIX_LISP_EXEC_CODE "${NIX_LISP_ASDF_LOAD:-"(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.lisp\")"}" \ $NIX_LISP_EXEC_CODE "${NIX_LISP_ASDF_LOAD:-"(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.lisp\")"}" \
$NIX_LISP_EXEC_CODE "$NIX_LISP_ASDF_REGISTRY_CODE" \ $NIX_LISP_EXEC_CODE "$NIX_LISP_ASDF_REGISTRY_CODE" \
$NIX_LISP_FINAL_PARAMETERS \ "${NIX_LISP_FINAL_PARAMETERS[@]}" \
"$@" "$@"

View File

@ -13,6 +13,7 @@ stdenv.mkDerivation {
''; '';
inherit asdf lisp; inherit asdf lisp;
stdenv_shell = stdenv.shell;
setupHook = ./setup-hook.sh; setupHook = ./setup-hook.sh;