                   ;; Ensure packages with outdated files/bytecode are rebuilt
                   (let ((build-dir (straight--build-dir package))
                         (repo-dir  (straight--repos-dir local-repo)))
-                    (and (or (file-newer-than-file-p repo-dir build-dir)
+                    (and (not (plist-get recipe :no-build))
+                         (or (file-newer-than-file-p repo-dir build-dir)
                              (file-exists-p (straight--modified-dir (or local-repo package)))
-                             ;; Doesn't make sense to compare el and elc files
-                             ;; when the former isn't a symlink to their source.
-                             (when straight-use-symlinks
-                               (cl-loop for file in (doom-files-in build-dir :match "\\.el$" :full t)
-                                        with want-byte = (straight--byte-compile-package-p recipe)
-                                        with want-native = (straight--native-compile-package-p recipe)
-                                        with outdated = nil
-                                        if (and (file-symlink-p file)
-                                                (or (and want-byte (doom--elc-file-outdated-p file))
-                                                    (and want-native (doom--eln-file-outdated-p file))))
-                                        do (setq outdated t)
-                                        finally return outdated)))
-                         (not (plist-get recipe :no-build))
+                             (cl-loop with want-byte   = (straight--byte-compile-package-p recipe)
+                                      with want-native = (if (require 'comp nil t) (straight--native-compile-package-p recipe))
+                                      for file in (doom-files-in build-dir :match "\\.el$" :full t)
+                                      if (or (if want-byte   (doom--elc-file-outdated-p file))
+                                             (if want-native (doom--eln-file-outdated-p file)))
+                                      return t))
                          (puthash package t straight--packages-to-rebuild))))
                 (straight-use-package (intern package))))
          (progn

           (print! (success "Rebuilt %d package(s)") (length built)))
       (print! (success "No packages need rebuilding"))
       nil))))


(defun doom-cli-packages-update ()

      t)))

(defun doom--eln-file-outdated-p (file)
  (when-let* ((eln-file (comp-output-filename file))
              (error-file (concat eln-file ".error")))
    (push eln-file doom--expected-eln-files)
    (cond ((file-exists-p eln-file)
