gnu: sbcl-cl-cffi-gtk: Update to 20200417.
[jackhill/guix/guix.git] / gnu / packages / readline.scm
index 6435e98..57d550d 100644 (file)
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages perl)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (ice-9 format))
+
+(define (patch-url seqno)
+  (format #f "mirror://gnu/readline/readline-7.0-patches/readline70-~3,'0d" seqno))
+
+(define (readline-patch seqno sha256)
+  "Return the origin of Readline patch SEQNO, with expected hash SHA256"
+  (origin
+    (method url-fetch)
+    (uri (patch-url seqno))
+    (sha256 sha256)))
+
+(define-syntax-rule (patch-series (seqno hash) ...)
+  (list (readline-patch seqno (base32 hash))
+        ...))
+
+(define %patch-series-7.0
+  (patch-series
+   (1 "0xm3sxvwmss7ddyfb11n6pgcqd1aglnpy15g143vzcf75snb7hcs")
+   (2 "0n1dxmqsbjgrfxb1hgk5c6lsraw4ncbnzxlsx7m35nym6lncjiw7")
+   (3 "1027kmymniizcy0zbdlrczxfx3clxcdln5yq05q9yzlc6y9slhwy")
+   (4 "0r3bbaf12iz8m02z6p3fzww2m365fhn71xmzab2p62gj54s6h9gr")
+   (5 "0lxpa4f72y2nsgj6fgrhjk2nmmxvccys6aciwfxwchb5f21rq5fa")))
 
 (define-public readline
-  (let ((post-install-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (lib (string-append out "/lib")))
-              ;; Make libraries writable so that `strip' can work.
-              ;; Failing to do that, it bails out with "Permission
-              ;; denied".
-              (for-each (lambda (f) (chmod f #o755))
-                        (find-files lib "\\.so"))
-              (for-each (lambda (f) (chmod f #o644))
-                        (find-files lib "\\.a"))))))
-    (package
-      (name "readline")
-      (version "7.0")
-      (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/readline/readline-"
-                                   version ".tar.gz"))
-               (sha256
-                (base32
-                 "0d13sg9ksf982rrrmv5mb6a2p4ys9rvg9r71d6il0vr8hmql63bm"))
-               (patches (search-patches "readline-link-ncurses.patch"))
-               (patch-flags '("-p0"))))
-      (build-system gnu-build-system)
-      (propagated-inputs `(("ncurses" ,ncurses)))
-      (arguments `(#:configure-flags
-                   (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
-                                        (assoc-ref %build-inputs "ncurses")
-                                        "/lib")
+  (package
+    (name "readline")
+    (version "8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/readline/readline-"
+                                  (version-major+minor version) ".tar.gz"))
+              (sha256
+               (base32
+                "0qg4924hf4hg0r0wbx2chswsr08734536fh5iagkd3a7f4czafg3"))
+              (patches (search-patches "readline-link-ncurses.patch"))
+              (patch-flags '("-p0"))))
+    (build-system gnu-build-system)
+    (propagated-inputs `(("ncurses" ,ncurses)))
+    (arguments `(#:configure-flags
+                 (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
+                                      (assoc-ref %build-inputs "ncurses")
+                                      "/lib")
 
-                         ;; This test does an 'AC_TRY_RUN', which aborts when
-                         ;; cross-compiling, so provide the correct answer.
-                         ,@(if (%current-target-system)
-                               '("bash_cv_wcwidth_broken=no")
-                               '()))
+                       ;; This test does an 'AC_TRY_RUN', which aborts when
+                       ;; cross-compiling, so provide the correct answer.
+                       ,@(if (%current-target-system)
+                             '("bash_cv_wcwidth_broken=no")
+                             '())
+                       ;; MinGW: ncurses provides the termcap api.
+                       ,@(if (target-mingw?)
+                             '("bash_cv_termcap_lib=ncurses")
+                             '()))
 
-                   #:phases (alist-cons-after
-                             'install 'post-install
-                             ,post-install-phase
-                             %standard-phases)))
-      (synopsis "Edit command lines while typing, with history support")
-      (description
-       "The GNU readline library allows users to edit command lines as they
+                 ,@(if (target-mingw?)
+                       ;; MinGW: termcap in ncurses
+                       ;; some SIG_* #defined in _POSIX
+                       '(#:make-flags '("TERMCAP_LIB=-lncurses"
+                                        "CPPFLAGS=-D_POSIX -D'chown(f,o,g)=0'"))
+                       '())))
+    (synopsis "Edit command lines while typing, with history support")
+    (description
+     "The GNU readline library allows users to edit command lines as they
 are typed in.  It can maintain a searchable history of previously entered
 commands, letting you easily recall, edit and re-enter past commands.  It
 features both Emacs-like and vi-like keybindings, making its usage
 comfortable for anyone.")
-      (license gpl3+)
-      (home-page "http://savannah.gnu.org/projects/readline/"))))
+    (license gpl3+)
+    (home-page "https://savannah.gnu.org/projects/readline/")))
+
+(define-public readline-7
+  (package (inherit readline)
+    (name "readline")
+    (version (string-append "7.0."
+                            (number->string (length %patch-series-7.0))))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/readline/readline-"
+                                  (version-major+minor version) ".tar.gz"))
+              (sha256
+               (base32
+                "0d13sg9ksf982rrrmv5mb6a2p4ys9rvg9r71d6il0vr8hmql63bm"))
+              (patches (append
+                        %patch-series-7.0
+                        (search-patches "readline-link-ncurses.patch")))
+              (patch-flags '("-p0"))))))
 
 (define-public readline-6.2
   (package (inherit readline)
@@ -84,6 +122,8 @@ comfortable for anyone.")
               (method url-fetch)
               (uri (string-append "mirror://gnu/readline/readline-"
                                   version ".tar.gz"))
+              (patches (search-patches "readline-6.2-CVE-2014-2524.patch"))
+              (patch-flags '("-p0"))
               (sha256
                (base32
                 "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr"))))))
@@ -91,17 +131,19 @@ comfortable for anyone.")
 (define-public rlwrap
   (package
     (name "rlwrap")
-    (version "0.42")
+    (version "0.43")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append "http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-"
-                            version ".tar.gz"))
+        (uri (string-append "https://github.com/hanslub42/rlwrap/releases/"
+                            "download/v" version "/"
+                            name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0i3yz303wscrysyzpdq04h4nrl9ajz9dbwi80risdl5rkm3dhw2s"))))
+          "0bzb7ylk2770iv59v2d0gypb21y2xn87m299s9rqm6rdi2vx11lf"))))
     (build-system gnu-build-system)
-    (native-inputs `(("perl" ,perl)))
+    (native-inputs
+     `(("perl" ,perl)))
     (inputs
      `(("readline" ,readline)))
     (synopsis "Wrapper to allow the editing of keyboard commands")
@@ -111,5 +153,5 @@ readline library to allow the editing of keyboard input for any command.  You
 should consider rlwrap especially when you need user-defined completion (by way
 of completion word lists) and persistent history, or if you want to program
 'special effects' using the filter mechanism.")
-    (home-page "http://utopia.knoware.nl/~hlub/uck/rlwrap/")
+    (home-page "https://github.com/hanslub42/rlwrap")
     (license gpl2+)))