From 40a6918af379a8fa06661b5c229bff6101fb0784 Mon Sep 17 00:00:00 2001 From: Vladimír Čunát Date: Sat, 17 Sep 2016 10:30:48 +0200 Subject: bash: bring back 4.3 for the non-interactive version ... until someone looks better at the outputs. The size has grown in 4.4, and it seems like installing binary plugins, headers, etc. --- pkgs/shells/bash/4.3.nix | 118 +++++++++++++++++++++++++++++++++ pkgs/shells/bash/4.4.nix | 121 ++++++++++++++++++++++++++++++++++ pkgs/shells/bash/bash-4.3-patches.nix | 50 ++++++++++++++ pkgs/shells/bash/default.nix | 121 ---------------------------------- pkgs/top-level/all-packages.nix | 4 +- 5 files changed, 291 insertions(+), 123 deletions(-) create mode 100644 pkgs/shells/bash/4.3.nix create mode 100644 pkgs/shells/bash/4.4.nix create mode 100644 pkgs/shells/bash/bash-4.3-patches.nix delete mode 100644 pkgs/shells/bash/default.nix diff --git a/pkgs/shells/bash/4.3.nix b/pkgs/shells/bash/4.3.nix new file mode 100644 index 00000000000..c6868eedba6 --- /dev/null +++ b/pkgs/shells/bash/4.3.nix @@ -0,0 +1,118 @@ +{ stdenv, fetchurl, readline ? null, interactive ? false, texinfo ? null, binutils ? null, bison }: + +assert interactive -> readline != null; +assert stdenv.isDarwin -> binutils != null; + +let + version = "4.3"; + realName = "bash-${version}"; + shortName = "bash43"; + baseConfigureFlags = if interactive then "--with-installed-readline" else "--disable-readline"; + sha256 = "1m14s1f61mf6bijfibcjm9y6pkyvz6gibyl8p4hxq90fisi8gimg"; + + 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" "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.3-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 interactive readline + ++ optional stdenv.isDarwin binutils; + + # Bash randomly fails to build because of a recursive invocation to + # build `version.h'. + enableParallelBuilding = false; + + postInstall = '' + ln -s bash "$out/bin/sh" + ''; + + 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/4.4.nix b/pkgs/shells/bash/4.4.nix new file mode 100644 index 00000000000..a401628dabd --- /dev/null +++ b/pkgs/shells/bash/4.4.nix @@ -0,0 +1,121 @@ +{ 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" "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" + ''; + + 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.3-patches.nix b/pkgs/shells/bash/bash-4.3-patches.nix new file mode 100644 index 00000000000..83743938de3 --- /dev/null +++ b/pkgs/shells/bash/bash-4.3-patches.nix @@ -0,0 +1,50 @@ +# Automatically generated by `update-patch-set.sh'; do not edit. + +patch: [ +(patch "001" "0hip2n2s5hws8p4nfcz37379zn6cak83ljsm64z52rw6ckrdzczc") +(patch "002" "0ashj5d1g3zbyr7zf0r72s5wnk96cz1xj919y3jajadbc9qcvrzf") +(patch "003" "0z88q4daq7dmw93iqd9c5i5d1sndklih3nrh0v75746da2n6w3h0") +(patch "004" "0f0kh9j5k4ym6knshscx31przm50x5cc7ifkwqk0swh6clna982y") +(patch "005" "1ym3b8b7lgmdp3dklp8qaqhyq965wd5392namq8mz7rb0d231j0s") +(patch "006" "04q20igq49py49ynb0f83f6f52cdkyqwd9bpic6akr0m5pkqwr50") +(patch "007" "18zkz23d9myshrwfcwcdjk7qmkqp8az5n91ni9jaixlwqlhy64qi") +(patch "008" "0pprcwvh7ngdli0x95pc1cpssg4qg7layi9xrv2jq6c7965ajhcr") +(patch "009" "19a0pf0alp30d1bjj0zf3zq2f5n0s6y91w7brm9jyswl51kns8n0") +(patch "010" "1dzhr5ammyijisz48cqi5vaw26hfr5vh9smnqxq4qc9p06f7j1ff") +(patch "011" "0fvzdzzi142a8rf3v965r6gbpn0k7fv2gif1yq8a4160vcn40qvw") +(patch "012" "04lcgfcyz7p3zagb4hkia3hkpd7lii9m8ycy9qqwzyrm1c1pj4ry") +(patch "013" "0y9cqi378z6flapkd5k5lfl4lq3ivzg4njj3i3wmw7xb6r9wma5z") +(patch "014" "04xcb0k9fxxq4vashgzb98567xzdnm4655nlm4jvfvjv6si6ykas") +(patch "015" "13ay6lldy1p00xj41nfjpq8lai3vw2qwca79gx6s80z04j53wa8k") +(patch "016" "0wq7bvx3pfw90pnfb86yg5nr9jgjsvm2nq5rrkqxf6zn977hpmlj") +(patch "017" "103p7sibihv6cshqj12k546zsbz0dnd5cv5vlx1719avddfc4rqj") +(patch "018" "0n1x3812y1brb9xbabaj3fvr4cpvm2225iwckmqk2fcpkq5b9a3s") +(patch "019" "08rd1p7zpzgbpmmmnj2im8wj2pcwmbbx51psr9vdc5c049si9ad7") +(patch "020" "163c6g05qpag2plx5q795pmw3f3m904jy7z93xj2i08pgzc8cpna") +(patch "021" "1a90cl3h10dh8k9f2ddrsjmw5ywaw2d5x78xb4fd2sryi039yhs1") +(patch "022" "120s0s4qcqd0q12j1iv0hkpf9fp3w5jnqw646kv66n66jnxlfkgx") +(patch "023" "1m00sfi88p2akgiyrg4hw0gvz3s1586pkzjdr3dm73vs773m1hls") +(patch "024" "0v0gjqzjsqjfgj5x17fq7g649k94jn8zq92qsxkhc2d6l215hl1v") +(patch "025" "0lcj96i659q35f1jcmwwbnw3p7w7vvlxjxqi989vn6d6qksqcl8y") +(patch "026" "0k919ir0inwn4wai2vdzpbwqq5h54fnrlkmgccxjg91v3ch15k1f") +(patch "027" "1gnsfvq6bhb3srlbh0cannj2hackdsipcg7z0ds7zlk1hp96mdqy") +(patch "028" "17a65c4fn4c5rgsiw9gqqnzhznh3gwnd2xzzv2dppyi48znxpc78") +(patch "029" "14k27p28r5l2fz3r03kd0x72vvsq8bja8c6hjz5kxikbzsbs7i2c") +(patch "030" "0nrqb0m7s89qsrbfaffpilc5gcf82bx9yvgzld4hr79p5y54yhw5") +(patch "031" "07d62bl3z7qa8v6kgk47vzzazw563mlk9zhrsr4xsbqgvmcrylnd") +(patch "032" "0jjgapfq4qhmndfrw8c3q3lva8xjdhlbd9cc631v41b0kb95g4w8") +(patch "033" "05ma5rlxiadnfh925p4y7s0vvk917kmsdb1mfdx05gizl63pfapv") +(patch "034" "12gq9whkq3naa3iy7c7x5pfpvrg7d0kwqld8609zxphhy424ysgi") +(patch "035" "1qy1jflmbazjykq766gwabkaiswnx7pwa66whqiny0w02zjqa39p") +(patch "036" "0z6jbyy70lfdm6d3x0sbazbqdxb3xnpn9bmz7madpvrnbd284pxc") +(patch "037" "04sqr8zkl6s5fccfvb775ppn3ldij5imria9swc39aq0fkfp1w9k") +(patch "038" "0rv3g14mpgv8br267bf7rmgqlgwnc4v6g3g8y0sjba571i8amgmd") +(patch "039" "1v3l3vkc3g2b6fjycqwlakr8xhiw6bmw6q0zd6bi0m0m4bnxr55b") +(patch "040" "0sypv66vsldmc95gwvf7ylz1k7y37vnvdsjg8ajjr6b2j9mkkfw4") +(patch "041" "06ic2gdpbi1afik3wqf9d4vh95if4bz8bmhcgr555621dsb35i2f") +(patch "042" "06a90k0p6bqc4wk2dsmapna69124an76xvlnlj3xm497vci968dc") +(patch "043" "1031g97w8gamimb41jr9r2qm7mn10k5mr3sd3y12avml0p0a7a27") +(patch "044" "16bzaq9fs2kaw2n2k6vvljkjw5k5kx06isnq8hxkfrxz60384f4k") +(patch "045" "08q02mj9imp2njpgm6f5q5m61i7qzp33rbxxzarixalyisbw6vms") +(patch "046" "13v8dymwj83wcvrfayjqrs5kqar05bcj4zpiacrjkkchnsk5dd5k") +] diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix deleted file mode 100644 index a401628dabd..00000000000 --- a/pkgs/shells/bash/default.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ 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" "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" - ''; - - 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/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 02fd446256f..2832f964609 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4314,12 +4314,12 @@ in ### SHELLS - bash = lowPrio (callPackage ../shells/bash { + bash = lowPrio (callPackage ../shells/bash/4.3.nix { texinfo = null; interactive = stdenv.isCygwin; # patch for cygwin requires readline support }); - bashInteractive = appendToName "interactive" (callPackage ../shells/bash { + bashInteractive = appendToName "interactive" (callPackage ../shells/bash/4.4.nix { interactive = true; }); -- cgit 1.4.1