···1+{ fetchurl, stdenv, lib, ncurses
2+}:
3+4+stdenv.mkDerivation rec {
5+ pname = "readline";
6+ version = "8.1p${toString (builtins.length upstreamPatches)}";
7+8+ src = fetchurl {
9+ url = "mirror://gnu/readline/readline-${meta.branch}.tar.gz";
10+ sha256 = "00ibp0n9crbwx15k9vvckq5wsipw98b1px8pd8i34chy2gpb9kpq";
11+ };
12+13+ outputs = [ "out" "dev" "man" "doc" "info" ];
14+15+ propagatedBuildInputs = [ncurses];
16+17+ patchFlags = [ "-p0" ];
18+19+ upstreamPatches =
20+ (let
21+ patch = nr: sha256:
22+ fetchurl {
23+ url = "mirror://gnu/readline/readline-${meta.branch}-patches/readline81-${nr}";
24+ inherit sha256;
25+ };
26+ in
27+ import ./readline-8.1-patches.nix patch);
28+29+ patches =
30+ [ ./link-against-ncurses.patch
31+ ./no-arch_only-6.3.patch
32+ ]
33+ ++ upstreamPatches;
34+35+ meta = with lib; {
36+ description = "Library for interactive line editing";
37+38+ longDescription = ''
39+ The GNU Readline library provides a set of functions for use by
40+ applications that allow users to edit command lines as they are
41+ typed in. Both Emacs and vi editing modes are available. The
42+ Readline library includes additional functions to maintain a
43+ list of previously-entered command lines, to recall and perhaps
44+ reedit those lines, and perform csh-like history expansion on
45+ previous commands.
46+47+ The history facilities are also placed into a separate library,
48+ the History library, as part of the build process. The History
49+ library may be used without Readline in applications which
50+ desire its capabilities.
51+ '';
52+53+ homepage = "https://savannah.gnu.org/projects/readline/";
54+55+ license = licenses.gpl3Plus;
56+57+ maintainers = with maintainers; [ dtzWill ];
58+59+ platforms = platforms.unix;
60+ branch = "8.1";
61+ };
62+}