diff options
author | Michael Raskin <7c6f434c@mail.ru> | 2016-03-25 17:57:45 +0100 |
---|---|---|
committer | Michael Raskin <7c6f434c@mail.ru> | 2016-03-25 17:58:05 +0100 |
commit | 511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1 (patch) | |
tree | d892ca393797d774ed1b10ecef66a93b2d403c00 /pkgs/development/lisp-modules/quicklisp.sh | |
parent | 98e8696290688cff4c67e2063ecdc56d2e8c1bc8 (diff) | |
download | nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.tar nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.tar.gz nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.tar.bz2 nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.tar.lz nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.tar.xz nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.tar.zst nixpkgs-511ad5e5bfe1b29e56f0b15f15732c7c8c8e6ef1.zip |
quicklisp (lispPackages.quicklisp): init
Diffstat (limited to 'pkgs/development/lisp-modules/quicklisp.sh')
-rw-r--r-- | pkgs/development/lisp-modules/quicklisp.sh | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/development/lisp-modules/quicklisp.sh b/pkgs/development/lisp-modules/quicklisp.sh new file mode 100644 index 00000000000..30d14419461 --- /dev/null +++ b/pkgs/development/lisp-modules/quicklisp.sh @@ -0,0 +1,85 @@ +#! /usr/bin/env bash + +op= +end_param= +args=() +cmd_args=() + +while let "$#"; do + if test -n "$end_param" || test "$1" = "${1#--}"; then + if test -n "$op"; then + args[${#args[@]}]="$1"; + else + op="$1" + fi + shift + else + case "$1" in + --) + end_param=1; shift; + ;; + --quicklisp-dir) + NIX_QUICKLISP_DIR="$2"; + shift; shift; + ;; + --help) + echo "Operation: init, run, update, install {system-name}" + exit 0; + ;; + *) + echo "Unknown parameter [$1]" >&2 + exit 2; + ;; + esac + fi +done + +NIX_QUICKLISP_DIR="${NIX_QUICKLISP_DIR:-${HOME}/quicklisp}" + +case "$op" in + '') echo "Specify an operation: init, install, run, update" + ;; + install) + NIX_LISP_SKIP_CODE=1 source "@clwrapper@/bin/common-lisp.sh"; + + cmd_args[${#cmd_args[@]}]="$NIX_LISP_EXEC_CODE" + cmd_args[${#cmd_args[@]}]="(load \"$NIX_QUICKLISP_DIR/setup.lisp\")" + for i in "${args[@]}"; do + cmd_args[${#cmd_args[@]}]="$NIX_LISP_EXEC_CODE" + cmd_args[${#cmd_args[@]}]="(ql:quickload :$i)" + done + cmd_args[${#cmd_args[@]}]="$NIX_LISP_EXEC_CODE" + cmd_args[${#cmd_args[@]}]="$NIX_LISP_QUIT" + + "@clwrapper@/bin/common-lisp.sh" "${cmd_args[@]}" + ;; + update) + NIX_LISP_SKIP_CODE=1 source "@clwrapper@/bin/common-lisp.sh" + + ln -sfT "@out@/lib/common-lisp/quicklisp/asdf.lisp" "$NIX_QUICKLISP_DIR/asdf.lisp" + cp -f "@out@/lib/common-lisp/quicklisp/setup.lisp" "$NIX_QUICKLISP_DIR/setup.lisp" + + if test -d "$NIX_QUICKLISP_DIR/quicklisp"; then + mv "$NIX_QUICKLISP_DIR/quicklisp"{,-old-$(date +%Y%m%d-%H%M%S)} + fi + + ln -sfT "@out@/lib/common-lisp/quicklisp/quicklisp" "$NIX_QUICKLISP_DIR/quicklisp" + + "@clwrapper@/bin/common-lisp.sh" "$NIX_LISP_EXEC_CODE" \ + "(load \"$NIX_QUICKLISP_DIR/setup.lisp\")" "$NIX_LISP_EXEC_CODE" \ + "(ql:update-all-dists)" "$NIX_LISP_EXEC_CODE" "$NIX_LISP_QUIT" + ;; + init) + mkdir -p "$NIX_QUICKLISP_DIR"/{dists/quicklisp,tmp,local-projects} + echo 1 > "$NIX_QUICKLISP_DIR/dists/quicklisp/enabled.txt" + cp -f "@out@/lib/common-lisp/quicklisp/quicklisp-distinfo.txt" \ + "$NIX_QUICKLISP_DIR/dists/quicklisp/distinfo.txt" + + NIX_QUICKLISP_DIR="$NIX_QUICKLISP_DIR" "$0" update + ;; + run) + NIX_LISP_SKIP_CODE=1 source "@clwrapper@/bin/common-lisp.sh" + "@clwrapper@/bin/common-lisp.sh" "$NIX_LISP_EXEC_CODE" \ + "(load \"$NIX_QUICKLISP_DIR/setup.lisp\")" "${args[@]}" + ;; +esac |