                   (with-temp-buffer
                     (let* ((default-directory
                              (straight--dir "repos" local-repo))
-                           (stderr-buffer
-                            (get-buffer-create " *straight-stderr*"))
                            ;; This find(1) command ignores the .git
                            ;; directory, and prints the names of any
                            ;; files or directories with a newer mtime
                            ;; than the one specified.
-                           (command `("find" "." "-name" ".git" "-prune"
-                                      "-o" "-newermt" ,last-mtime "-print"))
-                           (return (straight--make-process
-                                    :command command
-                                    :buffer (current-buffer)
-                                    :stderr stderr-buffer)))
+                           (args `("." "-name" ".git" "-prune"
+                                   "-o" "-newermt" ,last-mtime "-print"))
+                           (return (apply #'call-process "find"
+                                          nil '(t t) nil args)))
                       (unless (= 0 return)
-                        (error "Command failed: %s:\n%s"
+                        (error "Command failed: find %s:\n%s"
                                (string-join
-                                (mapcar #'shell-quote-argument command)
+                                (mapcar #'shell-quote-argument args)
                                 " ")
-                               (with-current-buffer stderr-buffer
-                                 (buffer-string))))
+                               (buffer-string)))
                       ;; If anything was printed, the package has
                       ;; (maybe) been modified.
                       (> (buffer-size) 0))))))))))

Return a string with whitespace trimmed from both ends. If the
command fails, throw an error."
  (string-trim (apply #'straight--get-call-raw command args)))

(defun straight--make-process (&rest args)
  "Like `make-process' on ARGS, but synchronous. Return the exit code.
Also set the default process sentinel to `ignore', and add a
default `:name'."
  (let ((process (apply #'make-process (append args `(:sentinel ,#'ignore
                                                      :name "straight")))))
    (while (process-live-p process)
      (accept-process-output process nil nil 'just-this-one))
    (process-exit-status process)))

;;;;; Interactive popup windows


                    ;; with busybox/find, see [1].
                    ;;
                    ;; [1]: https://github.com/raxod502/straight.el/issues/78
                    (setq args (append (list "-o"
                                             "-path"
                                             (format "./%s/*" local-repo)
                                             "-newermt"
                                             mtime
                                             "-print")
                                       args))
                  ;; If no mtime is specified, it means the package
                  ;; definitely needs to be (re)built. Probably there
                  ;; was an error and we couldn't finish building the
