summary refs log tree commit diff
path: root/gnu/packages/bootstrap.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/bootstrap.scm')
-rw-r--r--gnu/packages/bootstrap.scm29
1 files changed, 16 insertions, 13 deletions
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index ee713db0cf..363c99c7c3 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -167,19 +167,22 @@ for system '~a'")
       ("patch" ,%bootstrap-coreutils&co)))
 
   (let ((orig-method (origin-method source)))
-    (origin (inherit source)
-      (method (cond ((eq? orig-method url-fetch)
-                     (boot url-fetch))
-                    (else orig-method)))
-      (patch-guile %bootstrap-guile)
-      (patch-inputs %bootstrap-patch-inputs)
-
-      ;; Patches can be origins as well, so process them.
-      (patches (map (match-lambda
-                     ((? origin? patch)
-                      (bootstrap-origin patch))
-                     (patch patch))
-                    (origin-patches source))))))
+    (if (or (not (null? (origin-patches source)))
+            (origin-snippet source))
+        (origin (inherit source)
+                (method (if (eq? orig-method url-fetch)
+                            (boot url-fetch)
+                            orig-method))
+                (patch-guile %bootstrap-guile)
+                (patch-inputs %bootstrap-patch-inputs)
+
+                ;; Patches can be origins as well, so process them.
+                (patches (map (match-lambda
+                                ((? origin? patch)
+                                 (bootstrap-origin patch))
+                                (patch patch))
+                              (origin-patches source))))
+        source)))
 
 (define* (package-from-tarball name source program-to-test description
                                #:key snippet)