diff options
Diffstat (limited to 'gnu/packages/readline.scm')
-rw-r--r-- | gnu/packages/readline.scm | 117 |
1 files changed, 63 insertions, 54 deletions
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index 44f4e74d39..4695e9fc71 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm @@ -27,68 +27,77 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) - #:use-module (guix utils)) + #: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"))) (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 (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")))) + (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") - '()) - ;; MinGW: ncurses provides the termcap api. - ,@(if (target-mingw?) - '("bash_cv_termcap_lib=ncurses") - '())) + ;; 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") + '())) - ,@(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'")) - '()) - #: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 "https://savannah.gnu.org/projects/readline/")))) + (license gpl3+) + (home-page "https://savannah.gnu.org/projects/readline/"))) (define-public readline-6.2 (package (inherit readline) |