~ruther/guix-local

36626c556ed75219bce196ac93d148f6b9af984c — Ludovic Courtès 9 years ago 5461115
build: Require Guile >= 2.0.9.

* configure.ac: Bump requirement to 2.0.9.
* doc/guix.texi (Requirements): Adjust accordingly.
* README (Requirements): Likewise.
* build-aux/download.scm: Remove workaround for <http://bugs.gnu.org/13095>.
* guix/build/download.scm: Likewise.
(http-fetch)[post-2.0.7?]: Remove.  Remove conditional code for not
POST-2.0.7?.
* guix/http-client.scm:  Remove workaround for <http://bugs.gnu.org/13095>.
(http-fetch)[post-2.0.7?]: Remove.  Remove conditional code for not
POST-2.0.7?.
* guix/serialization.scm (read-latin1-string): Remove mention of 2.0.9.
* tests/nar.scm: Use (ice-9 control).
(let/ec): Remove.
M README => README +1 -1
@@ 20,7 20,7 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.

GNU Guix currently depends on the following packages:

  - [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.7 or later
  - [[http://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.9 or later
  - [[http://gnupg.org/][GNU libgcrypt]]
  - [[http://www.gnu.org/software/make/][GNU Make]]
  - optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command

M build-aux/download.scm => build-aux/download.scm +0 -5
@@ 36,11 36,6 @@
  ;;"http://www.fdn.fr/~lcourtes/software/guix/packages"
  )

;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
;; up to 2.0.7.
(module-define! (resolve-module '(web client))
                'shutdown (const #f))

(define (file-name->uri file)
  "Return the URI for FILE."
  (match (string-tokenize file (char-set-complement (char-set #\/)))

M configure.ac => configure.ac +1 -1
@@ 82,7 82,7 @@ if test "x$GUILD" = "x"; then
fi

if test "x$GUILE_EFFECTIVE_VERSION" = "x2.0"; then
  PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.7])
  PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.9])
fi

dnl Installation directory for .scm and .go files.

M doc/guix.texi => doc/guix.texi +1 -1
@@ 552,7 552,7 @@ in the Guix source tree for additional details.
GNU Guix depends on the following packages:

@itemize
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.7 or
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.9 or
later, including 2.2.x;
@item @url{http://gnupg.org/, GNU libgcrypt};
@item

M guix/build/download.scm => guix/build/download.scm +3 -26
@@ 512,12 512,6 @@ port if PORT is a TLS session record port."
                'set-port-encoding!
                (lambda (p e) #f))

;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
;; up to 2.0.7.
(module-define! (resolve-module '(web client))
                'shutdown (const #f))


;; XXX: Work around <http://bugs.gnu.org/23421>, fixed in Guile commit
;; 16050431f29d56f80c4a8253506fc851b8441840.  Guile's date validation
;; procedure rejects dates in which the hour is not padded with a zero but


@@ 682,12 676,6 @@ the connection could not be established in less than TIMEOUT seconds.  Return
FILE on success.  When VERIFY-CERTIFICATE? is true, verify HTTPS
certificates; otherwise simply ignore them."

  (define post-2.0.7?
    (or (> (string->number (major-version)) 2)
        (> (string->number (minor-version)) 0)
        (> (string->number (micro-version)) 7)
        (string>? (version) "2.0.7")))

  (define headers
    `(;; Some web sites, such as http://dist.schmorp.de, would block you if
      ;; there's no 'User-Agent' header, presumably on the assumption that


@@ 712,20 700,9 @@ certificates; otherwise simply ignore them."
                                          #:verify-certificate?
                                          verify-certificate?))
                ((resp bv-or-port)
                 ;; XXX: `http-get*' was introduced in 2.0.7, and replaced by
                 ;; #:streaming? in 2.0.8.  We know we're using it within the
                 ;; chroot, but `guix-download' might be using a different
                 ;; version.  So keep this compatibility hack for now.
                 (if post-2.0.7?
                     (http-get uri #:port connection #:decode-body? #f
                               #:streaming? #t
                               #:headers headers)
                     (if (module-defined? (resolve-interface '(web client))
                                          'http-get*)
                         (http-get* uri #:port connection #:decode-body? #f
                                    #:headers headers)
                         (http-get uri #:port connection #:decode-body? #f
                                   #:extra-headers headers))))
                 (http-get uri #:port connection #:decode-body? #f
                           #:streaming? #t
                           #:headers headers))
                ((code)
                 (response-code resp))
                ((size)

M guix/http-client.scm => guix/http-client.scm +3 -12
@@ 217,10 217,6 @@ or if EOF is reached."
   (when (module-variable %web-http 'read-line*)
     (module-set! %web-http 'read-line* read-header-line))))

;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
;; up to 2.0.7.
(module-define! (resolve-module '(web client))
                'shutdown (const #f))

(define* (http-fetch uri #:key port (text? #f) (buffered? #t)
                     keep-alive? (verify-certificate? #t)


@@ 252,14 248,9 @@ Raise an '&http-get-error' condition if downloading fails."
      (unless (or buffered? (not (file-port? port)))
        (setvbuf port _IONBF))
      (let*-values (((resp data)
                     ;; Try hard to use the API du jour to get an input port.
                     (if (guile-version>? "2.0.7")
                         (http-get uri #:streaming? #t #:port port
                                   #:keep-alive? #t
                                   #:headers headers)        ; 2.0.9+
                         (http-get* uri #:decode-body? text?        ; 2.0.7
                                    #:keep-alive? #t
                                    #:port port #:headers headers)))
                     (http-get uri #:streaming? #t #:port port
                               #:keep-alive? #t
                               #:headers headers))
                    ((code)
                     (response-code resp)))
        (case code

M guix/serialization.scm => guix/serialization.scm +1 -2
@@ 130,8 130,7 @@
  ;; <http://bugs.gnu.org/19621>.  See <http://bugs.gnu.org/19610> for
  ;; a discussion.
  (let ((bv (read-byte-string p)))
    ;; XXX: Rewrite using (ice-9 iconv) when the minimum requirement is
    ;; upgraded to Guile >= 2.0.9.
    ;; XXX: Rewrite using (ice-9 iconv).
    (list->string (map integer->char (bytevector->u8-list bv)))))

(define (read-maybe-utf8-string p)

M tests/nar.scm => tests/nar.scm +1 -11
@@ 35,6 35,7 @@
  #:use-module (srfi srfi-64)
  #:use-module (ice-9 ftw)
  #:use-module (ice-9 regex)
  #:use-module ((ice-9 control) #:select (let/ec))
  #:use-module (ice-9 match))

;; Test the (guix nar) module.


@@ 148,17 149,6 @@
  (string-append (dirname (search-path %load-path "pre-inst-env"))
                 "/test-nar-" (number->string (getpid))))

(define-syntax-rule (let/ec k exp...)
  ;; This one appeared in Guile 2.0.9, so provide a copy here.
  (let ((tag (make-prompt-tag)))
    (call-with-prompt tag
      (lambda ()
        (let ((k (lambda args
                   (apply abort-to-prompt tag args))))
          exp...))
      (lambda (_ . args)
        (apply values args)))))


(test-begin "nar")