diff --git a/lisp/install+sigsegv.lisp b/lisp/install+sigsegv.lisp index 719f101..313e599 100644 --- a/lisp/install+sigsegv.lisp +++ b/lisp/install+sigsegv.lisp @@ -1,15 +1,18 @@ (roswell:include "util-install-quicklisp") (defpackage :roswell.install.sigsegv+ - (:use :cl :roswell.install :roswell.util :roswell.locations)) + (:use :cl :roswell.install :roswell.util :roswell.locations) + (:export :*sigsegv-version*)) (in-package :roswell.install.sigsegv+) -(defvar *sigsegv-version* "2.10") +(defvar *sigsegv-version* "2.11") (defun sigsegv-setup (argv) (let* ((uri (format nil "~Alibsigsegv-~A.tar.gz" (sigsegv-uri) *sigsegv-version*)) (pos (position #\/ uri :from-end t)) (path (merge-pathnames (format nil "archives/~A" (subseq uri (1+ pos))) (homedir))) - (expand-dir (merge-pathnames (format nil "src/libsigsegv-~A/" *sigsegv-version*) (homedir)))) + (expand-dir (merge-pathnames (format nil "src/libsigsegv-~A/" *sigsegv-version*) (homedir))) + (prefix (merge-pathnames (format nil "lib/~A/~A/~A/~A/" (uname-m) (uname) "sigsegv" *sigsegv-version*) (homedir))) + (logdir (ensure-directories-exist (merge-pathnames "impls/log/sigsegv/" (homedir))))) (if (or (not (probe-file path)) (opt "download.force")) (progn @@ -17,35 +20,32 @@ (force-output *error-output*) (download uri path) (format *error-output* " done.~%")) - (format *error-output* "~&Skip downloading ~A.~%Specify 'download.force=t' to download it again.~%" - uri)) + (format *error-output* "~&Skip downloading ~A.~%Specify 'download.force=t' to download it again.~%" uri)) (expand path (ensure-directories-exist (merge-pathnames "src/" (homedir)))) + (chdir expand-dir) (format t "~&configure~%") - (with-open-file (out (ensure-directories-exist - (merge-pathnames "impls/log/sigsegv/config.log" (homedir))) + (with-open-file (out (merge-pathnames "config.log" logdir) :direction :output :if-exists :append :if-does-not-exist :create) (format out "~&--~&~A~%" (date)) - (let* ((cmd (format nil "./configure '--prefix=~A'" - (ensure-directories-exist(merge-pathnames (format nil "lib/~A/~A/~A/~A/" (uname-m) (uname) "sigsegv" *sigsegv-version*) (homedir))))) + (let* ((cmd (format nil "~A ./configure '--prefix=~A'" (sh) (ensure-directories-exist prefix))) (*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) - (chdir expand-dir) - (uiop/run-program:run-program cmd :output t :ignore-error-status t))) + (uiop/run-program:run-program cmd :output t :error-output t :ignore-error-status t))) (format t "~&make~%") - (with-open-file (out (ensure-directories-exist - (merge-pathnames "impls/log/sigsegv/make.log" (homedir))) + (with-open-file (out (merge-pathnames "make.log" logdir) :direction :output :if-exists :append :if-does-not-exist :create) (format out "~&--~&~A~%" (date)) (let* ((cmd (format nil "make")) (*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) - (uiop/run-program:run-program cmd :output t :ignore-error-status t))) + (uiop/run-program:run-program cmd :output t :error-output t :ignore-error-status t))) (format t "~&install~%") - (with-open-file (out (merge-pathnames "impls/log/sigsegv/install.log" (homedir)) + (with-open-file (out (merge-pathnames "install.log" logdir) :direction :output :if-exists :append :if-does-not-exist :create) (format out "~&--~&~A~%" (date)) (let ((*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) - (uiop/run-program:run-program "make install" :output t)) + (uiop/run-program:run-program "make install" :output t :error-output t)) (format *error-output* "done.~%"))) + (setf (config "sigsegv.version") *sigsegv-version*) (cons t argv)) (defun sigsegv-help (argv) diff --git a/lisp/install-clisp.lisp b/lisp/install-clisp.lisp index 79133db..72129f1 100644 --- a/lisp/install-clisp.lisp +++ b/lisp/install-clisp.lisp @@ -1,8 +1,10 @@ (roswell:include '("util-install-quicklisp" - "install+ffcall")) + "install+ffcall" + "install+sigsegv")) (defpackage :roswell.install.clisp (:use :cl :roswell.install :roswell.util :roswell.locations - :roswell.install.ffcall+)) + :roswell.install.ffcall+ + :roswell.install.sigsegv+)) (in-package :roswell.install.clisp) (defun clisp-get-version () @@ -62,7 +64,7 @@ (download uri file) (chdir (opt "src")) (format t "~%Applying patch:~%") - (uiop/run-program:run-program (format nil "git apply ~A" file) :output t)) + (uiop/run-program:run-program (format nil "git apply ~A" file) :output t :error-output t)) (cons t argv)) (defun clisp-config (argv) @@ -75,7 +77,7 @@ (format out "~&--~&~A~%" (date)) (let* ((src (opt "src")) (cmd (format nil "./configure --with-libsigsegv-prefix=~A ~A '--prefix=~A'" - (merge-pathnames (format nil "lib/~A/~A/~A/~A" (uname-m) (uname) "sigsegv" "2.10") (homedir)) + (merge-pathnames (format nil "lib/~A/~A/~A/~A" (uname-m) (uname) "sigsegv" (or (config "sigsegv.version") *sigsegv-version*)) (homedir)) (or #+linux (format nil "--with-libffcall-prefix=~A" (merge-pathnames (format nil "lib/~A/~A/~A/~A" (uname-m) (uname) "ffcall" (or (config "ffcall.version") *ffcall-version*)) (homedir))) @@ -83,7 +85,7 @@ (opt "prefix"))) (*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) (chdir src) - (uiop/run-program:run-program cmd :output t :ignore-error-status t))) + (uiop/run-program:run-program cmd :output t :error-output t :ignore-error-status t))) (cons t argv)) (defun clisp-make (argv) @@ -98,7 +100,7 @@ (cmd (format nil "ulimit -s 16384 && make")) (*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) (chdir src) - (uiop/run-program:run-program cmd :output t :ignore-error-status t))) + (uiop/run-program:run-program cmd :output t :error-output t :ignore-error-status t))) (cons t argv)) (defun clisp-install (argv) @@ -114,7 +116,7 @@ (format out "~&--~&~A~%" (date)) (let ((*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) - (uiop/run-program:run-program "make install" :output t))) + (uiop/run-program:run-program "make install" :output t :error-output t))) (format *error-output* "done.~%")) (cons t argv)) @@ -126,7 +128,7 @@ (*standard-output* (make-broadcast-stream out #+sbcl(make-instance 'count-line-stream)))) (uiop/run-program:run-program - (list (sh) "-lc" (format nil "cd ~S;make clean" src)) :output t)) + (list (sh) "-lc" (format nil "cd ~S;make clean" src)) :output t :error-output t)) (format t "done.~%")) (cons t argv))