From e8de41602f7c3f90cd1d8d0b6c4650628338d2e0 Mon Sep 17 00:00:00 2001 From: Hraban Luyat Date: Mon, 5 Feb 2024 01:47:30 -0500 Subject: [PATCH] sbcl: find test binaries in PATH --- pkgs/development/compilers/sbcl/default.nix | 4 +- .../sbcl/search-for-binaries-in-PATH.patch | 108 ++++++++++++++++++ 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/sbcl/search-for-binaries-in-PATH.patch diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix index 5fab77f5fb34..50f7900554d0 100644 --- a/pkgs/development/compilers/sbcl/default.nix +++ b/pkgs/development/compilers/sbcl/default.nix @@ -96,7 +96,9 @@ stdenv.mkDerivation (self: rec { ); buildInputs = lib.optionals coreCompression [ zstd ]; - patches = lib.optionals (version == "2.4.0") [ + patches = [ + ./search-for-binaries-in-PATH.patch + ] ++ lib.optionals (version == "2.4.0") [ ./fix-2.4.0-aarch64-darwin.patch ]; diff --git a/pkgs/development/compilers/sbcl/search-for-binaries-in-PATH.patch b/pkgs/development/compilers/sbcl/search-for-binaries-in-PATH.patch new file mode 100644 index 000000000000..95263ec85753 --- /dev/null +++ b/pkgs/development/compilers/sbcl/search-for-binaries-in-PATH.patch @@ -0,0 +1,108 @@ +From 35856b09e3606361b17f21225c759632be1cdf34 Mon Sep 17 00:00:00 2001 +From: Hraban Luyat +Date: Wed, 24 Jan 2024 14:58:53 -0500 +Subject: [PATCH] Search for binaries in tests in PATH, not /usr/bin +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Same as 8ed662fbfeb5dde35eb265f390b55b01f79f70c1 but for tests, and for more +than just ‘cat’. For the same reasons as that diff. +--- + tests/run-program.impure.lisp | 18 ++++++++++-------- + tests/run-program.test.sh | 9 ++++----- + 2 files changed, 14 insertions(+), 13 deletions(-) + +diff --git a/tests/run-program.impure.lisp b/tests/run-program.impure.lisp +index 0eab8884c..b07d1e4fb 100644 +--- a/tests/run-program.impure.lisp ++++ b/tests/run-program.impure.lisp +@@ -15,7 +15,7 @@ + + (defun bin-pwd-ignoring-result () + (let ((initially-open-fds (directory "/proc/self/fd/*" :resolve-symlinks nil))) +- (sb-ext:run-program "/usr/bin/pwd" nil :input :stream :output :stream :wait nil) ++ (sb-ext:run-program "pwd" nil :search t :input :stream :output :stream :wait nil) + (length initially-open-fds))) + + (with-test (:name (run-program :autoclose-streams) +@@ -49,7 +49,7 @@ + (with-test (:name (run-program :cat 2) + :skipped-on (or (not :sb-thread) :win32)) + ;; Tests that reading from a FIFO is interruptible. +- (let* ((process (run-program "/bin/cat" '() ++ (let* ((process (run-program "cat" '() :search t + :wait nil :output :stream :input :stream)) + (in (process-input process)) + (out (process-output process)) +@@ -167,7 +167,7 @@ + (defparameter *cat-out* (make-synonym-stream '*cat-out-pipe*))) + + (with-test (:name (run-program :cat 5) :fails-on :win32) +- (let ((cat (run-program "/bin/cat" nil :input *cat-in* :output *cat-out* ++ (let ((cat (run-program "cat" nil :search t :input *cat-in* :output *cat-out* + :wait nil))) + (dolist (test '("This is a test!" + "This is another test!" +@@ -310,14 +310,16 @@ + (let ((had-error-p nil)) + (flet ((barf (&optional (format :default)) + (with-output-to-string (stream) +- (run-program #-netbsd "/usr/bin/perl" #+netbsd "/usr/pkg/bin/perl" ++ (run-program #-netbsd "perl" #+netbsd "/usr/pkg/bin/perl" + '("-e" "print \"\\x20\\xfe\\xff\\x0a\"") ++ :search #-netbsd t #+netbsd nil + :output stream + :external-format format))) + (no-barf () + (with-output-to-string (stream) +- (run-program "/bin/echo" ++ (run-program "echo" + '("This is a test") ++ :search t + :output stream)))) + (handler-case + (barf :utf-8) +@@ -353,9 +355,9 @@ + ;; If the permitted inputs are :ANY then leave it be + (listp (symbol-value 'run-tests::*allowed-inputs*))) + (push (namestring file) (symbol-value 'run-tests::*allowed-inputs*))) +- (assert (null (run-program "/bin/cat" '() :input file))) +- (assert (null (run-program "/bin/cat" '() :output #.(or *compile-file-truename* +- *load-truename*) ++ (assert (null (run-program "cat" '() :search t :input file))) ++ (assert (null (run-program "cat" '() :search t :output #.(or *compile-file-truename* ++ *load-truename*) + :if-output-exists nil))))) + + +diff --git a/tests/run-program.test.sh b/tests/run-program.test.sh +index 48eaef889..c926e5a05 100755 +--- a/tests/run-program.test.sh ++++ b/tests/run-program.test.sh +@@ -39,9 +39,8 @@ run_sbcl --eval "(defvar *exit-ok* $EXIT_LISP_WIN)" <<'EOF' + (assert (not (zerop (sb-ext:process-exit-code + (sb-ext:run-program "false" () :search t :wait t))))) + (let ((string (with-output-to-string (stream) +- (our-run-program "/bin/echo" +- '("foo" "bar") +- :output stream)))) ++ (run-program "echo" '("foo" "bar") ++ :search t :output stream)))) + (assert (string= string "foo bar + "))) + (format t ";;; Smoke tests: PASS~%") +@@ -103,8 +102,8 @@ run_sbcl --eval "(defvar *exit-ok* $EXIT_LISP_WIN)" <<'EOF' + ;; make sure that a stream input argument is basically reasonable. + (let ((string (let ((i (make-string-input-stream "abcdef"))) + (with-output-to-string (stream) +- (our-run-program "/bin/cat" () +- :input i :output stream))))) ++ (run-program "cat" () ++ :search t :input i :output stream))))) + (assert (= (length string) 6)) + (assert (string= string "abcdef"))) + +-- +2.43.0 +