                      ;; If no sane repository name can be generated,
                      ;; just use the package name.
                      package)))
+              ;; Resolve the local repository to an absolute path.
+              (when-let ((local-repo (plist-get plist :local-repo)))
+                (straight--put
+                 plist :local-repo (straight--repos-dir local-repo)))
               ;; This code is here to deal with complications that can
               ;; arise with manual recipe specifications when multiple
               ;; packages are versioned in the same repository.

                ;; Don't create duplicate entries in the find(1)
                ;; command for this local repository.
                (puthash local-repo t repos)))))))
    ;; The preamble to the find(1) command, which comes before the
    ;; repository-specific subparts (see above).
    (setq args (append (list "." "-name" ".git" "-prune")
                       args))
    (with-temp-buffer
      (let ((default-directory (straight--repos-dir)))
        (let ((return (apply #'call-process "find" nil '(t t) nil args)))

                         (setq mtime-or-file (straight--make-mtime mtime)))
                        (_ (error "Unexpected `straight-find-flavor': %S"
                                  straight-find-flavor)))
                      (push local-repo args-paths)
                      (setq args-primaries
                            (append (list "-o"
                                          "-path"
                                          (format "%s/*" local-repo)
                                          newer-or-newermt
                                          mtime-or-file
                                          "-print")
                                    args-primaries)))
                  ;; 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
