Browse Source

distro: Add GNU Readline.

* distro/base.scm (readline): New variable.
  (guile-1.8, guile-2.0): Use it.

* distro/readline-link-ncurses.patch: New file.
* Makefile.am (nobase_dist_guilemodule_DATA): Add it.
wip-grafts
Ludovic Courtès 10 years ago
parent
commit
2282ec3a04
  1. 3
      Makefile.am
  2. 38
      distro/base.scm
  3. 18
      distro/readline-link-ncurses.patch

3
Makefile.am

@ -39,7 +39,8 @@ nobase_dist_guilemodule_DATA = \
$(MODULES) \
distro/guile-1.8-cpp-4.5.patch \
distro/m4-readlink-EINVAL.patch \
distro/m4-s_isdir.patch
distro/m4-s_isdir.patch \
distro/readline-link-ncurses.patch
nobase_nodist_guilemodule_DATA = $(GOBJECTS)

38
distro/base.scm

@ -198,6 +198,40 @@ faster algorithms.")
(license "LGPLv3+")
(home-page "http://gmplib.org/")))
(define-public readline
(package
(name "readline")
(version "6.2")
(source (origin
(method http-fetch)
(uri (string-append "http://ftp.gnu.org/gnu/readline/readline-"
version ".tar.gz"))
(sha256
(base32
"10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr"))))
(build-system gnu-build-system)
(propagated-inputs `(("ncurses" ,(nixpkgs-derivation* "ncurses"))))
(inputs `(("patch/link-ncurses"
,(search-path %load-path
"distro/readline-link-ncurses.patch"))))
(arguments `(#:patches (list (assoc-ref %build-inputs
"patch/link-ncurses"))
#:patch-flags '("-p0")))
(description "GNU Readline, a library for interactive line editing")
(long-description
"The GNU Readline library provides a set of functions for use by
applications that allow users to edit command lines as they are typed in.
Both Emacs and vi editing modes are available. The Readline library includes
additional functions to maintain a list of previously-entered command lines,
to recall and perhaps reedit those lines, and perform csh-like history
expansion on previous commands.
The history facilites are also placed into a separate library, the History
library, as part of the build process. The History library may be used
without Readline in applications which desire its capabilities.")
(license "GPLv3+")
(home-page "http://savannah.gnu.org/projects/readline/")))
(define-public libtool
(package
(name "libtool")
@ -290,7 +324,7 @@ internal in-memory representation.")
(inputs `(("patch/snarf"
,(search-path %load-path "distro/guile-1.8-cpp-4.5.patch"))
("gawk" ,gawk)
("readline" ,(nixpkgs-derivation* "readline"))))
("readline" ,readline)))
;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be
;; propagated.
@ -323,7 +357,7 @@ extensible. It supports many SRFIs.")
(native-inputs `(("xz" ,(nixpkgs-derivation* "xz"))
("pkgconfig" ,(nixpkgs-derivation* "pkgconfig"))))
(inputs `(("libffi" ,(nixpkgs-derivation* "libffi"))
("readline" ,(nixpkgs-derivation* "readline"))))
("readline" ,readline)))
(propagated-inputs
`( ;; These ones aren't normally needed here, but since `libguile-2.0.la'

18
distro/readline-link-ncurses.patch

@ -0,0 +1,18 @@
This patch is to make sure that `libncurses' is among the `NEEDED'
dependencies of `libreadline.so' and `libhistory.so'.
Failing to do that, applications linking against Readline are
forced to explicitly link against libncurses as well; in addition,
this trick doesn't work when using GNU ld's `--as-needed'.
--- shlib/Makefile.in 2009-01-06 18:03:22.000000000 +0100
+++ shlib/Makefile.in 2009-07-27 14:43:25.000000000 +0200
@@ -84,7 +84,7 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@
SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@
SHOBJ_LIBS = @SHOBJ_LIBS@
-SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@
+SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ -lncurses
SHLIB_LIBS = @SHLIB_LIBS@
SHLIB_DOT = @SHLIB_DOT@
Loading…
Cancel
Save