summaryrefslogtreecommitdiffstats
path: root/pkgs/shells
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@gmail.com>2016-10-06 09:51:02 -0500
committerThomas Tuegel <ttuegel@gmail.com>2016-10-06 09:51:02 -0500
commit2e255a2edddfe5ca0e44f55d6e4bd82737cbb884 (patch)
treec785d80650dc2d074244525401246fc6ef07a468 /pkgs/shells
parente3deccc0d7a42b0ae1d5e337cd6b0b9488c2295a (diff)
parent16dafb018e09363bfae3949a8261c18ee7880781 (diff)
Merge branch 'staging'
Diffstat (limited to 'pkgs/shells')
-rw-r--r--pkgs/shells/bash/4.3.nix (renamed from pkgs/shells/bash/default.nix)0
-rw-r--r--pkgs/shells/bash/4.4.nix122
-rw-r--r--pkgs/shells/bash/bash-4.4-patches.nix4
3 files changed, 126 insertions, 0 deletions
diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/4.3.nix
index 76c24323fca9..76c24323fca9 100644
--- a/pkgs/shells/bash/default.nix
+++ b/pkgs/shells/bash/4.3.nix
diff --git a/pkgs/shells/bash/4.4.nix b/pkgs/shells/bash/4.4.nix
new file mode 100644
index 000000000000..406ca4d08fd7
--- /dev/null
+++ b/pkgs/shells/bash/4.4.nix
@@ -0,0 +1,122 @@
+{ stdenv, fetchurl, readline70 ? null, interactive ? false, texinfo ? null
+, binutils ? null, bison
+}:
+
+assert interactive -> readline70 != null;
+assert stdenv.isDarwin -> binutils != null;
+
+let
+ version = "4.4";
+ realName = "bash-${version}";
+ shortName = "bash44";
+ baseConfigureFlags = if interactive then "--with-installed-readline" else "--disable-readline";
+ sha256 = "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq";
+
+ inherit (stdenv.lib) optional optionalString;
+in
+
+stdenv.mkDerivation rec {
+ name = "${realName}-p${toString (builtins.length patches)}";
+
+ src = fetchurl {
+ url = "mirror://gnu/bash/${realName}.tar.gz";
+ inherit sha256;
+ };
+
+ hardeningDisable = [ "format" ];
+
+ outputs = [ "out" "dev" "doc" "info" ];
+
+ # the man pages are small and useful enough
+ outputMan = if interactive then "out" else null;
+
+ 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 =
+ (let
+ patch = nr: sha256:
+ fetchurl {
+ url = "mirror://gnu/bash/${realName}-patches/${shortName}-${nr}";
+ inherit sha256;
+ };
+ in
+ import ./bash-4.4-patches.nix patch)
+ ++ optional stdenv.isCygwin ./cygwin-bash-4.3.33-1.src.patch;
+
+ crossAttrs = {
+ configureFlags = baseConfigureFlags +
+ " bash_cv_job_control_missing=nomissing bash_cv_sys_named_pipes=nomissing" +
+ optionalString stdenv.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
+ '';
+ };
+
+ configureFlags = baseConfigureFlags;
+
+ # Note: Bison is needed because the patches above modify parse.y.
+ nativeBuildInputs = [bison]
+ ++ optional (texinfo != null) texinfo
+ ++ optional stdenv.isDarwin binutils;
+
+ buildInputs = optional interactive readline70;
+
+ # Bash randomly fails to build because of a recursive invocation to
+ # build `version.h'.
+ enableParallelBuilding = false;
+
+ postInstall = ''
+ ln -s bash "$out/bin/sh"
+ moveToOutput lib/bash/Makefile.inc "$dev"
+ '';
+
+ postFixup = if interactive
+ then ''
+ substituteInPlace "$out/bin/bashbug" \
+ --replace '${stdenv.shell}' "$out/bin/bash"
+ ''
+ # most space is taken by locale data
+ else ''
+ rm -r "$out/share" "$out/bin/bashbug"
+ '';
+
+ meta = with stdenv.lib; {
+ homepage = http://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 = [ maintainers.peti ];
+ };
+
+ passthru = {
+ shellPath = "/bin/bash";
+ };
+}
diff --git a/pkgs/shells/bash/bash-4.4-patches.nix b/pkgs/shells/bash/bash-4.4-patches.nix
new file mode 100644
index 000000000000..b8019fb33502
--- /dev/null
+++ b/pkgs/shells/bash/bash-4.4-patches.nix
@@ -0,0 +1,4 @@
+# Automatically generated by `update-patch-set.sh'; do not edit.
+
+patch: [
+]