Merge pull request #53628 from dtzWill/feature/bash-5-readline-8

readline8,bash5: init
This commit is contained in:
Jörg Thalheim 2019-01-17 10:57:38 +00:00 committed by GitHub
commit 682801a445
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 207 additions and 0 deletions

View File

@ -0,0 +1,66 @@
{ fetchurl, stdenv, ncurses
}:
stdenv.mkDerivation rec {
name = "readline-${version}";
version = "8.0p${toString (builtins.length upstreamPatches)}";
src = fetchurl {
url = "mirror://gnu/readline/readline-${meta.branch}.tar.gz";
sha256 = "0qg4924hf4hg0r0wbx2chswsr08734536fh5iagkd3a7f4czafg3";
};
outputs = [ "out" "dev" "man" "doc" "info" ];
propagatedBuildInputs = [ncurses];
patchFlags = "-p0";
upstreamPatches =
(let
patch = nr: sha256:
fetchurl {
url = "mirror://gnu/readline/readline-${meta.branch}-patches/readline80-${nr}";
inherit sha256;
};
in
import ./readline-8.0-patches.nix patch);
patches =
[ ./link-against-ncurses.patch
./no-arch_only-6.3.patch
]
++ upstreamPatches;
# Don't run the native `strip' when cross-compiling.
dontStrip = stdenv.hostPlatform != stdenv.buildPlatform;
bash_cv_func_sigsetjmp = if stdenv.isCygwin then "missing" else null;
meta = with stdenv.lib; {
description = "Library for interactive line editing";
longDescription = ''
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 facilities 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.
'';
homepage = https://savannah.gnu.org/projects/readline/;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ vanschelven dtzWill ];
platforms = platforms.unix;
branch = "8.0";
};
}

View File

@ -0,0 +1,4 @@
# Automatically generated by `update-patch-set.sh'; do not edit.
patch: [
]

126
pkgs/shells/bash/5.0.nix Normal file
View File

@ -0,0 +1,126 @@
{ stdenv, buildPackages
, fetchurl, binutils ? null, bison, utillinux
# patch for cygwin requires readline support
, interactive ? stdenv.isCygwin, readline80 ? null
, withDocs ? false, texinfo ? null
}:
with stdenv.lib;
assert interactive -> readline80 != null;
assert withDocs -> texinfo != null;
assert stdenv.hostPlatform.isDarwin -> binutils != null;
let
upstreamPatches = import ./bash-5.0-patches.nix (nr: sha256: fetchurl {
url = "mirror://gnu/bash/bash-5.0-patches/bash50-${nr}";
inherit sha256;
});
in
stdenv.mkDerivation rec {
name = "bash-${optionalString interactive "interactive-"}${version}-p${toString (builtins.length upstreamPatches)}";
version = "5.0";
src = fetchurl {
url = "mirror://gnu/bash/bash-${version}.tar.gz";
sha256 = "0kgvfwqdcd90waczf4gx39xnrxzijhjrzyzv7s8v4w31qqm0za5l";
};
hardeningDisable = [ "format" ];
outputs = [ "out" "dev" "man" "doc" "info" ];
NIX_CFLAGS_COMPILE = ''
-DSYS_BASHRC="/etc/bashrc"
-DSYS_BASH_LOGOUT="/etc/bash_logout"
-DDEFAULT_PATH_VALUE="/no-such-path"
-DSTANDARD_UTILS_PATH="/no-such-path"
-DNON_INTERACTIVE_LOGIN_SHELLS
-DSSH_SOURCE_BASHRC
'';
patchFlags = "-p0";
patches = upstreamPatches;
configureFlags = [
(if interactive then "--with-installed-readline" else "--disable-readline")
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"bash_cv_job_control_missing=nomissing"
"bash_cv_sys_named_pipes=nomissing"
"bash_cv_getcwd_malloc=yes"
] ++ optionals stdenv.hostPlatform.isCygwin [
"--without-libintl-prefix"
"--without-libiconv-prefix"
"--with-installed-readline"
"bash_cv_dev_stdin=present"
"bash_cv_dev_fd=standard"
"bash_cv_termcap_lib=libncurses"
] ++ optionals (stdenv.hostPlatform.libc == "musl") [
"--without-bash-malloc"
"--disable-nls"
];
# Note: Bison is needed because the patches above modify parse.y.
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [ bison ]
++ optional withDocs texinfo
++ optional stdenv.hostPlatform.isDarwin binutils;
buildInputs = optional interactive readline80;
enableParallelBuilding = true;
makeFlags = optional stdenv.hostPlatform.isCygwin [
"LOCAL_LDFLAGS=-Wl,--export-all,--out-implib,libbash.dll.a"
"SHOBJ_LIBS=-lbash"
];
checkInputs = [ utillinux ];
doCheck = false; # dependency cycle, needs to be interactive
postInstall = ''
ln -s bash "$out/bin/sh"
rm -f $out/lib/bash/Makefile.inc
'';
postFixup = if interactive
then ''
substituteInPlace "$out/bin/bashbug" \
--replace '${stdenv.shell}' "$out/bin/bash"
''
# most space is taken by locale data
else ''
rm -rf "$out/share" "$out/bin/bashbug"
'';
meta = with stdenv.lib; {
homepage = https://www.gnu.org/software/bash/;
description =
"GNU Bourne-Again Shell, the de facto standard shell on Linux" +
(if interactive then " (for interactive use)" else "");
longDescription = ''
Bash is the shell, or command language interpreter, that will
appear in the GNU operating system. Bash is an sh-compatible
shell that incorporates useful features from the Korn shell
(ksh) and C shell (csh). It is intended to conform to the IEEE
POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It offers
functional improvements over sh for both programming and
interactive use. In addition, most sh scripts can be run by
Bash without modification.
'';
license = licenses.gpl3Plus;
platforms = platforms.all;
maintainers = with maintainers; [ peti dtzWill ];
};
passthru = {
shellPath = "/bin/bash";
};
}

View File

@ -0,0 +1,4 @@
# Automatically generated by `update-patch-set.sh'; do not edit.
patch: [
]

View File

@ -6524,6 +6524,11 @@ in
any-nix-shell = callPackage ../shells/any-nix-shell { };
bash = lowPrio (callPackage ../shells/bash/4.4.nix { });
bash_5 = lowPrio (callPackage ../shells/bash/5.0.nix { });
bashInteractive_5 = lowPrio (callPackage ../shells/bash/5.0.nix {
interactive = true;
withDocs = true;
});
# WARNING: this attribute is used by nix-shell so it shouldn't be removed/renamed
bashInteractive = callPackage ../shells/bash/4.4.nix {
@ -12395,6 +12400,8 @@ in
readline70 = callPackage ../development/libraries/readline/7.0.nix { };
readline80 = callPackage ../development/libraries/readline/8.0.nix { };
readosm = callPackage ../development/libraries/readosm { };
lambdabot = callPackage ../development/tools/haskell/lambdabot {