Commit cd60f498 authored by Eric Timmons's avatar Eric Timmons
Browse files

Only sync the necessary releases of a quicklisp dist

parent 795a7979
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@
                 (declare (ignore c))
                 (when (find-restart 'sync-and-retry)
                   (log:info "Syncing source and retrying")
                   (invoke-restart 'sync-and-retry)))))
                   (invoke-restart 'sync-and-retry c)))))
          (setf lockfile (read-lockfile lockfile-pathname)))
        (progn
          ;; The lock file doesn't exist. Create it!
+13 −3
Original line number Diff line number Diff line
@@ -48,6 +48,13 @@
;;;
;;; The data for Quicklisp distributions is stored in a sqlite database.


;;; * Quicklisp conditions

(define-condition quicklisp-version-missing (source-no-such-object)
  ((missing-version
    :initarg :missing-version)))


;;; * Quicklisp backed source

@@ -137,15 +144,18 @@
                  :project-name project-name
                  :dist-version-id version-string)
        (when error
          (error 'source-no-such-object)))))
          (error 'quicklisp-version-missing
                 :missing-version version-string)))))

(defmethod source/project-release ((source quicklisp-source) project-name version-string
                                   &optional (error t))
    (restart-case
        (%source/project-release source project-name version-string error)
      (sync-and-retry ()
      (sync-and-retry (c)
        :report "Sync source and try again."
        (sync-source source)
        (sync-version-list! source)
        (with-source-connection (source)
          (sync-version! (find-dao 'ql-dist-version :id (slot-value c 'missing-version))))
        (%source/project-release source project-name version-string error))))

(defmethod source/project ((source quicklisp-source) project-name)