all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Julien Lepiller <julien@lepiller.eu>
To: 53882@debbugs.gnu.org
Subject: [bug#53882] [PATCH 02/24] import: opam: Factor out source import.
Date: Tue,  8 Feb 2022 21:14:28 +0100	[thread overview]
Message-ID: <81d0041fc5805bbb9a23b4c9e1bc59f5be8d5351.1644350657.git.julien@lepiller.eu> (raw)
In-Reply-To: <1dcef02fe1f5f25657c6427d09c43bfc41091050.1644350657.git.julien@lepiller.eu>

This also ensures a package can be imported even when it does not
specify a URL.

* guix/import/opam.scm (opam->guix-source): New procedure.
(opam->guix-package): Use it.
---
 guix/import/opam.scm | 81 +++++++++++++++++++++++---------------------
 1 file changed, 43 insertions(+), 38 deletions(-)

diff --git a/guix/import/opam.scm b/guix/import/opam.scm
index f51d17dea4..b4b5a6eaad 100644
--- a/guix/import/opam.scm
+++ b/guix/import/opam.scm
@@ -324,6 +324,20 @@ (define* (opam-fetch name #:optional (repositories-specs '("opam")))
             (filter-map get-opam-repository repositories-specs))
       (warning (G_ "opam: package '~a' not found~%") name)))
 
+(define (opam->guix-source url-dict)
+  (let ((source-url (and url-dict
+                         (or (metadata-ref url-dict "src")
+                             (metadata-ref url-dict "archive")))))
+    (if source-url
+        (call-with-temporary-output-file
+          (lambda (temp port)
+            (and (url-fetch source-url temp)
+                 `(origin
+                    (method url-fetch)
+                    (uri ,source-url)
+                    (sha256 (base32 ,(guix-hash-url temp)))))))
+        'no-source-information)))
+
 (define* (opam->guix-package name #:key (repo 'opam) version)
   "Import OPAM package NAME from REPOSITORY (a directory name) or, if
 REPOSITORY is #f, from the official OPAM repository.  Return a 'package' sexp
@@ -332,9 +346,7 @@ (define* (opam->guix-package name #:key (repo 'opam) version)
              (opam-file (opam-fetch name with-opam))
              (version (assoc-ref opam-file "version"))
              (opam-content (assoc-ref opam-file "metadata"))
-             (url-dict (metadata-ref opam-content "url"))
-             (source-url (or (metadata-ref url-dict "src")
-                             (metadata-ref url-dict "archive")))
+             (source (opam->guix-source (metadata-ref opam-content "url")))
              (requirements (metadata-ref opam-content "depends"))
              (names (dependency-list->names requirements))
              (dependencies (filter-dependencies names))
@@ -348,41 +360,34 @@ (define* (opam->guix-package name #:key (repo 'opam) version)
                                   (not (member name '("dune" "jbuilder"))))
                                 native-dependencies))))
         (let ((use-dune? (member "dune" names)))
-          (call-with-temporary-output-file
-            (lambda (temp port)
-              (and (url-fetch source-url temp)
-                   (values
-                    `(package
-                       (name ,(ocaml-name->guix-name name))
-                       (version ,version)
-                       (source
-                         (origin
-                           (method url-fetch)
-                           (uri ,source-url)
-                           (sha256 (base32 ,(guix-hash-url temp)))))
-                       (build-system ,(if use-dune?
-                                          'dune-build-system
-                                          'ocaml-build-system))
-                       ,@(if (null? inputs)
-                           '()
-                           `((propagated-inputs (list ,@inputs))))
-                       ,@(if (null? native-inputs)
-                           '()
-                           `((native-inputs (list ,@native-inputs))))
-                       ,@(if (equal? name (guix-name->opam-name (ocaml-name->guix-name name)))
-                           '()
-                           `((properties
-                               ,(list 'quasiquote `((upstream-name . ,name))))))
-                       (home-page ,(metadata-ref opam-content "homepage"))
-                       (synopsis ,(metadata-ref opam-content "synopsis"))
-                       (description ,(beautify-description
-                                      (metadata-ref opam-content "description")))
-                       (license ,(spdx-string->license
-                                  (metadata-ref opam-content "license"))))
-                    (filter
-                      (lambda (name)
-                        (not (member name '("dune" "jbuilder"))))
-                      dependencies))))))))
+          (values
+           `(package
+              (name ,(ocaml-name->guix-name name))
+              (version ,version)
+              (source ,source)
+              (build-system ,(if use-dune?
+                                 'dune-build-system
+                                 'ocaml-build-system))
+              ,@(if (null? inputs)
+                  '()
+                  `((propagated-inputs (list ,@inputs))))
+              ,@(if (null? native-inputs)
+                  '()
+                  `((native-inputs (list ,@native-inputs))))
+              ,@(if (equal? name (guix-name->opam-name (ocaml-name->guix-name name)))
+                  '()
+                  `((properties
+                      ,(list 'quasiquote `((upstream-name . ,name))))))
+              (home-page ,(metadata-ref opam-content "homepage"))
+              (synopsis ,(metadata-ref opam-content "synopsis"))
+              (description ,(beautify-description
+                             (metadata-ref opam-content "description")))
+              (license ,(spdx-string->license
+                         (metadata-ref opam-content "license"))))
+           (filter
+             (lambda (name)
+               (not (member name '("dune" "jbuilder"))))
+             dependencies)))))
 
 (define* (opam-recursive-import package-name #:key repo)
   (recursive-import package-name
-- 
2.34.0





  reply	other threads:[~2022-02-08 20:47 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-08 20:08 [bug#53882] [PATCH] gnu: Add ocaml-core Julien Lepiller
2022-02-08 20:14 ` [bug#53882] [PATCH 01/24] import: opam: Accept tabulations Julien Lepiller
2022-02-08 20:14   ` Julien Lepiller [this message]
2022-02-08 20:14   ` [bug#53882] [PATCH 03/24] gnu: Add ocaml-spawn Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 04/24] gnu: Add ocaml-typerep Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 05/24] gnu: Add ocaml-ppx-typerep-conv Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 06/24] gnu: Add ocaml-ppx-string Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 07/24] gnu: Add ocaml-ppx-stable Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 08/24] gnu: Add ocmal-ppx-pipebang Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 09/24] gnu: Add ocaml-ppx-module-timer Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 10/24] gnu: Add ocaml-ppx-fixed-literal Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 11/24] gnu: Add ocaml-bin-prot Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 12/24] gnu: Add ocaml-ppx-bin-prot Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 13/24] gnu: Add ocaml-ppx-bench Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 14/24] gnu: Add ocaml-ppx-sexp-value Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 15/24] gnu: Add ocaml-ppx-sexp-message Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 16/24] gnu: Add ocaml-splittable-random Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 17/24] gnu: Add ocaml-base-quickcheck Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 18/24] gnu: Add ocaml-ppx-fail Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 19/24] gnu: Add ocmal-ppx-jane Julien Lepiller
2022-02-23 16:12     ` zimoun
2022-03-15 14:14       ` [bug#53882] [PATCH] gnu: Add ocaml-core zimoun
2022-04-05 16:07         ` Ludovic Courtès
2022-04-06 19:00           ` zimoun
2022-04-07 10:04             ` pukkamustard
2022-02-08 20:14   ` [bug#53882] [PATCH 20/24] gnu: Add ocaml-base-bigstring Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 21/24] gnu: Add ocaml-core-kernel Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 22/24] gnu: Add ocaml-timezone Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 23/24] gnu: ocaml-jane-street-headers: Add variant Julien Lepiller
2022-02-08 20:14   ` [bug#53882] [PATCH 24/24] gnu: Add ocaml-core Julien Lepiller
2022-02-23 18:09   ` [bug#53882] [PATCH 01/24] import: opam: Accept tabulations Maxime Devos
2022-04-08 13:21 ` [bug#53882] [PATCH v2 00/25] Add ocaml-core zimoun
2022-04-11 10:19   ` bug#53882: [PATCH] gnu: " Ludovic Courtès
2022-04-08 13:22 ` [bug#53882] [PATCH v2 01/25] gnu: ocaml-odoc: Update to 2.2.0-alpha zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 02/25] import: opam: Accept tabulations zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 03/25] import: opam: Factor out source import zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 04/25] gnu: Add ocaml-spawn zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 05/25] gnu: Add ocaml-typerep zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 06/25] gnu: Add ocaml-ppx-typerep-conv zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 07/25] gnu: Add ocaml-ppx-string zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 08/25] gnu: Add ocaml-ppx-stable zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 09/25] gnu: Add ocaml-ppx-pipebang zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 10/25] gnu: Add ocaml-ppx-module-timer zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 11/25] gnu: Add ocaml-ppx-fixed-literal zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 12/25] gnu: Add ocaml-bin-prot zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 13/25] gnu: Add ocaml-ppx-bin-prot zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 14/25] gnu: Add ocaml-ppx-bench zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 15/25] gnu: Add ocaml-ppx-sexp-value zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 16/25] gnu: Add ocaml-ppx-sexp-message zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 17/25] gnu: Add ocaml-splittable-random zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 18/25] gnu: Add ocaml-base-quickcheck zimoun
2022-04-08 13:22   ` [bug#53882] [PATCH v2 19/25] gnu: Add ocaml-ppx-fail zimoun
2022-04-08 13:23   ` [bug#53882] [PATCH v2 20/25] gnu: Add ocaml-ppx-jane zimoun
2022-04-08 13:23   ` [bug#53882] [PATCH v2 21/25] gnu: Add ocaml-base-bigstring zimoun
2022-04-08 13:23   ` [bug#53882] [PATCH v2 22/25] gnu: Add ocaml-core-kernel zimoun
2022-04-08 13:23   ` [bug#53882] [PATCH v2 23/25] gnu: Add ocaml-timezone zimoun
2022-04-08 13:23   ` [bug#53882] [PATCH v2 24/25] gnu: ocaml-jane-street-headers: Add variant zimoun
2022-04-08 13:23   ` [bug#53882] [PATCH v2 25/25] gnu: Add ocaml-core zimoun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=81d0041fc5805bbb9a23b4c9e1bc59f5be8d5351.1644350657.git.julien@lepiller.eu \
    --to=julien@lepiller.eu \
    --cc=53882@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.