summary refs log tree commit diff
path: root/gnu/packages/curl.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/curl.scm')
-rw-r--r--gnu/packages/curl.scm69
1 files changed, 51 insertions, 18 deletions
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index a09210bf04..52c2be2f80 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Dale Mellor <guix-devel-0brg6b@rdmp.org>
 ;;;
@@ -198,43 +198,68 @@ not offer a replacement for libcurl.")
 (define-public guile-curl
   (package
    (name "guile-curl")
-   (version "0.6")
+   (version "0.7")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://www.lonelycactus.com/tarball/"
                                 "guile_curl-" version ".tar.gz"))
             (sha256
              (base32
-              "1pxdhnk288ky6gkpad8i60m0p6404rdvls43lr1b5d3csrklyc70"))))
+              "1zk0ijx6bj212k0j0ma84cpvpvn0x6raaxnby3wdx3w4wnhnscn7"))))
    (build-system gnu-build-system)
    (arguments
-    `(#:configure-flags (list (string-append
+    `(#:modules (((guix build guile-build-system)
+                  #:select (target-guile-effective-version))
+                 ,@%gnu-build-system-modules)
+      #:imported-modules ((guix build guile-build-system)
+                          ,@%gnu-build-system-modules)
+      #:configure-flags (list (string-append
                                "--with-guilesitedir="
                                (assoc-ref %outputs "out")
-                               "/share/guile/site/2.2")
+                               "/share/guile/site/"
+                               (target-guile-effective-version
+                                (assoc-ref %build-inputs "guile")))
                               (string-append
                                "-with-guileextensiondir="
                                (assoc-ref %outputs "out")
-                               "/lib/guile/2.2/extensions"))
+                               "/lib/guile/"
+                               (target-guile-effective-version
+                                (assoc-ref %build-inputs "guile"))
+                               "/extensions"))
       #:phases
       (modify-phases %standard-phases
+        (add-after 'unpack 'patch-undefined-references
+          (lambda* _
+            (substitute* "src/curl.scm"
+              ;; The following #defines are missing from our curl package
+              ;; and therefore result in the evaluation of undefined symbols.
+              ((",CURLOPT_HAPROXYPROTOCOL") "#f")
+              ((",CURLOPT_DISALLOW_USERNAME_IN_URL") "#f")
+              ((",CURLOPT_TIMEVALUE_LARGE") "#f")
+              ((",CURLOPT_DNS_SHUFFLE_ADDRESSES") "#f")
+              ((",CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS") "#f"))))
         (add-after 'install 'patch-extension-path
           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out      (assoc-ref outputs "out"))
-                    (curl.scm (string-append
-                               out "/share/guile/site/2.2/curl.scm"))
-                    (curl.go  (string-append
-                               out "/lib/guile/2.2/site-ccache/curl.go"))
-                    (ext      (string-append out "/lib/guile/2.2/"
-                                             "extensions/libguile-curl")))
-               (substitute* curl.scm (("libguile-curl") ext))
-               ;; The build system does not actually compile the Scheme module.
-               ;; So we can compile it and put it in the right place in one go.
-               (invoke "guild" "compile" curl.scm "-o" curl.go)))))))
+            (let* ((out      (assoc-ref outputs "out"))
+                   (curl.scm (string-append
+                              out "/share/guile/site/"
+                              (target-guile-effective-version)
+                              "/curl.scm"))
+                   (curl.go  (string-append
+                              out "/lib/guile/"
+                              (target-guile-effective-version)
+                              "/site-ccache/curl.go"))
+                   (ext      (string-append out "/lib/guile/"
+                                            (target-guile-effective-version)
+                                            "/extensions/libguile-curl")))
+              (substitute* curl.scm (("libguile-curl") ext))
+              ;; The build system does not actually compile the Scheme module.
+              ;; So we can compile it and put it in the right place in one go.
+              (invoke "guild" "compile" curl.scm "-o" curl.go)))))))
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs
     `(("curl" ,curl)
-      ("guile" ,guile-2.2)))
+      ("guile" ,guile-3.0)))
    (home-page "http://www.lonelycactus.com/guile-curl.html")
    (synopsis "Curl bindings for Guile")
    (description "@code{guile-curl} is a project that has procedures that allow
@@ -242,6 +267,14 @@ Guile to do client-side URL transfers, like requesting documents from HTTP or
 FTP servers.  It is based on the curl library.")
    (license license:gpl3+)))
 
+(define-public guile2.2-curl
+  (package
+    (inherit guile-curl)
+    (name "guile2.2-curl")
+    (inputs
+     `(("curl" ,curl)
+       ("guile" ,guile-2.2)))))
+
 (define-public curlpp
   (package
     (name "curlpp")