about summary refs log tree commit diff
path: root/pkgs/development/lisp-modules-new-obsolete/test/test.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/lisp-modules-new-obsolete/test/test.lisp')
-rwxr-xr-xpkgs/development/lisp-modules-new-obsolete/test/test.lisp94
1 files changed, 0 insertions, 94 deletions
diff --git a/pkgs/development/lisp-modules-new-obsolete/test/test.lisp b/pkgs/development/lisp-modules-new-obsolete/test/test.lisp
deleted file mode 100755
index c9b5dc938320a..0000000000000
--- a/pkgs/development/lisp-modules-new-obsolete/test/test.lisp
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/env -S sbcl --script
-
-(require :uiop)
-
-;; prevent glibc hell
-(setf (uiop:getenv "LD_LIBRARY_PATH") "")
-
-(defparameter packages (uiop:read-file-lines "./lispPackagesToTest.txt"))
-
-(defparameter lisp (or (cadr sb-ext:*posix-argv*) "sbcl"))
-
-(defparameter nix-build "nix-build -E 'with import ../../../../default.nix {}; lispPackages_new.~aPackages.~a'")
-
-(defparameter cpu-count
-  (length
-   (remove-if-not
-    (lambda (line)
-      (uiop:string-prefix-p "processor" line))
-    (uiop:read-file-lines "/proc/cpuinfo"))))
-
-(defparameter sem (sb-thread:make-semaphore :count cpu-count))
-
-(defparameter statuses (make-hash-table :synchronized t))
-
-(defparameter log-lock (sb-thread:make-mutex))
-
-(format *error-output* "Testing ~a on ~a cores~%" lisp cpu-count)
-
-(defun clear-line ()
-  (write-char #\Return *error-output*)
-  (write-char #\Escape *error-output*)
-  (write-char #\[ *error-output*)
-  (write-char #\K *error-output*))
-
-(declaim (type fixnum errors))
-(defglobal errors 0)
-
-(defmacro when-let (bindings &rest body)
-  (reduce
-   (lambda (expansion form)
-     (destructuring-bind (var test) form
-       (let ((testsym (gensym (symbol-name var))))
-         `(let ((,testsym ,test))
-            (when ,testsym
-              (let ((,var ,testsym))
-                ,expansion))))))
-   (reverse bindings)
-   :initial-value `(progn ,@body)))
-
-(dolist (pkg packages)
-  (sb-thread:wait-on-semaphore sem)
-  (sb-thread:make-thread
-   (lambda ()
-     (handler-case
-         (unwind-protect
-              (multiple-value-bind (out err code)
-                  (uiop:run-program
-                   (format nil nix-build lisp pkg)
-                   :error-output '(:string :stripped t)
-                   :ignore-error-status t)
-                (declare (ignorable err))
-                (setf (gethash pkg statuses) code)
-                (when-let ((pos (search "LOAD-FOREIGN-LIBRARY-ERROR" err :test #'string=))
-                           (lines (uiop:split-string (subseq err pos) :separator '(#\Newline))))
-                  (setf (gethash pkg statuses)
-                        (fourth lines)))
-                (sb-thread:with-mutex (log-lock)
-                  (clear-line)
-                  (format *error-output* "[~a/~a] ~[OK~:;ERROR~] ~a~[~:;~%~]"
-                          (hash-table-count statuses)
-                          (length packages)
-                          code
-                          pkg
-                          code)
-                  (force-output *error-output*))
-                (unless (zerop code)
-                  (sb-ext:atomic-incf errors)))
-           (sb-thread:signal-semaphore sem))
-       (error (e)
-         (format t "~a~%" e)
-         (sb-ext:quit :recklessly-p t :unix-status 1))))))
-
-(sb-thread:wait-on-semaphore sem :n cpu-count)
-
-(format t "~%Done (~a/~a)."
-        (- (length packages) errors)
-        (length packages))
-
-(when (plusp errors)
-  (format t "~%~%~a Errors: " errors)
-  (maphash (lambda (k v)
-             (unless (and (numberp v) (zerop v))
-               (format t "~%  ~a: ~a" k v)))
-           statuses))