Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at release-18.03 123 lines 4.3 kB view raw
1#!@bash@/bin/bash 2# Part of NixPkgs package collection 3# This script can be used at your option under the same license as NixPkgs or 4# under MIT/X11 license 5 6eval "$NIX_LISP_PREHOOK" 7 8NIX_LISP_COMMAND="$1" 9shift 10 11[ -z "$NIX_LISP" ] && NIX_LISP="${NIX_LISP_COMMAND##*/}" 12 13export NIX_LISP NIX_LISP_LOAD_FILE NIX_LISP_EXEC_CODE NIX_LISP_COMMAND NIX_LISP_FINAL_PARAMETERS 14 15test -n "$NIX_LISP_LD_LIBRARY_PATH" && 16 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}$NIX_LISP_LD_LIBRARY_PATH" 17 18declare -a NIX_LISP_FINAL_PARAMETERS; 19 20case "$NIX_LISP" in 21 sbcl) 22 NIX_LISP_LOAD_FILE="--load" 23 NIX_LISP_EXEC_CODE="--eval" 24 NIX_LISP_QUIT="(quit)" 25 NIX_LISP_NODEBUG='--non-interactive' 26 NIX_LISP_FINAL_PARAMETERS= 27 NIX_LISP_FASL_TYPE="fasl" 28 ;; 29 ecl) 30 NIX_LISP_LOAD_FILE="-load" 31 NIX_LISP_EXEC_CODE="-eval" 32 NIX_LISP_QUIT="(quit)" 33 NIX_LISP_NODEBUG='--nodebug' 34 NIX_LISP_FINAL_PARAMETERS= 35 NIX_LISP_FASL_TYPE="fas" 36 ;; 37 clisp) 38 NIX_LISP_LOAD_FILE="-c -l" 39 NIX_LISP_EXEC_CODE="-x" 40 NIX_LISP_QUIT="(quit)" 41 NIX_LISP_NODEBUG='-on-error exit' 42 NIX_LISP_FINAL_PARAMETERS="-repl" 43 NIX_LISP_FASL_TYPE="fas" 44 ;; 45 lx86cl64) 46 NIX_LISP_LOAD_FILE="-l" 47 NIX_LISP_EXEC_CODE="-e" 48 NIX_LISP_QUIT="(quit)" 49 NIX_LISP_NODEBUG='-b' 50 NIX_LISP_FINAL_PARAMETERS= 51 NIX_LISP_FASL_TYPE="lx64fsl" 52 ;; 53 lx86cl) 54 NIX_LISP_LOAD_FILE="-l" 55 NIX_LISP_EXEC_CODE="-e" 56 NIX_LISP_QUIT="(quit)" 57 NIX_LISP_NODEBUG='-b' 58 NIX_LISP_FINAL_PARAMETERS= 59 NIX_LISP_FASL_TYPE="lx32fsl" 60 ;; 61 abcl) 62 NIX_LISP_LOAD_FILE="--load" 63 NIX_LISP_EXEC_CODE="--eval" 64 NIX_LISP_QUIT="(quit)" 65 NIX_LISP_NODEBUG='' 66 NIX_LISP_FINAL_PARAMETERS= 67 NIX_LISP_FASL_TYPE="abcl" 68 ;; 69esac 70 71NIX_LISP_ASDF_REGISTRY_CODE=" 72 (progn 73 (setf asdf:*source-registry-parameter* 74 '(:source-registry 75 $(for p in $NIX_LISP_ASDF_PATHS; do 76 echo "(:tree \"$p\")" 77 done) 78 :inherit-configuration)) 79 (asdf:initialize-source-registry) 80 ) 81" 82 83NIX_LISP_ASDF="${NIX_LISP_ASDF:-@out@}" 84 85nix_lisp_run_single_form(){ 86 NIX_LISP_FINAL_PARAMETERS=("$NIX_LISP_EXEC_CODE" "$1" 87 "$NIX_LISP_EXEC_CODE" "$NIX_LISP_QUIT" $NIX_LISP_NODEBUG) 88} 89 90nix_lisp_build_system(){ 91 NIX_LISP_FINAL_PARAMETERS=( 92 "$NIX_LISP_EXEC_CODE" "(progn 93 (asdf:make :$1) 94 (loop for s in (list $(for i in $3; do echo ":$i"; done)) do (asdf:make s)))" 95 "$NIX_LISP_EXEC_CODE" "(progn 96 (setf (asdf/system:component-entry-point (asdf:find-system :$1)) ${2:-nil}) 97 #+cffi(setf cffi:*foreign-library-directories* 98 (cffi::explode-path-environment-variable \"NIX_LISP_LD_LIBRARY_PATH\")) 99 #+sbcl(loop 100 with libpath := (uiop:split-string (uiop:getenv \"NIX_LISP_LD_LIBRARY_PATH\") 101 :separator \":\") 102 for l in sb-alien::*shared-objects* 103 for ns := (sb-alien::shared-object-namestring l) 104 do (and (> (length ns) 0) (not (equal (elt ns 0) \"/\")) 105 (let* 106 ((prefix (find-if (lambda (s) (probe-file (format nil \"~a/~a\" s ns))) libpath)) 107 (fullpath (and prefix (format nil \"~a/~a\" prefix ns)))) 108 (when fullpath 109 (setf 110 (sb-alien::shared-object-namestring l) fullpath 111 (sb-alien::shared-object-pathname l) (probe-file fullpath))))) 112 ) 113 (asdf:perform (quote asdf:program-op) :$1) 114 )") 115} 116 117eval "$NIX_LISP_PRELAUNCH_HOOK" 118 119[ -z "$NIX_LISP_SKIP_CODE" ] && "$NIX_LISP_COMMAND" $NIX_LISP_EARLY_OPTIONS \ 120 $NIX_LISP_EXEC_CODE "${NIX_LISP_ASDF_LOAD:-"(load \"$NIX_LISP_ASDF/lib/common-lisp/asdf/build/asdf.$NIX_LISP_FASL_TYPE\")"}" \ 121 $NIX_LISP_EXEC_CODE "$NIX_LISP_ASDF_REGISTRY_CODE" \ 122 ${NIX_LISP_FINAL_PARAMETERS[*]:+"${NIX_LISP_FINAL_PARAMETERS[@]}"} \ 123 "$@"