From d18abcb3f61eb6e95558f9fc73b1d06ef52e2029 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Mon, 7 Jan 2019 23:38:07 -0600 Subject: [PATCH 1/8] readline80: init https://lists.gnu.org/archive/html/info-gnu/2019-01/msg00011.html --- pkgs/development/libraries/readline/8.0.nix | 66 +++++++++++++++++++ .../readline/readline-8.0-patches.nix | 4 ++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 72 insertions(+) create mode 100644 pkgs/development/libraries/readline/8.0.nix create mode 100644 pkgs/development/libraries/readline/readline-8.0-patches.nix diff --git a/pkgs/development/libraries/readline/8.0.nix b/pkgs/development/libraries/readline/8.0.nix new file mode 100644 index 000000000000..8eb2fb8969b9 --- /dev/null +++ b/pkgs/development/libraries/readline/8.0.nix @@ -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 = [ maintainers.vanschelven ]; + + platforms = platforms.unix; + branch = "8.0"; + }; +} diff --git a/pkgs/development/libraries/readline/readline-8.0-patches.nix b/pkgs/development/libraries/readline/readline-8.0-patches.nix new file mode 100644 index 000000000000..b8019fb33502 --- /dev/null +++ b/pkgs/development/libraries/readline/readline-8.0-patches.nix @@ -0,0 +1,4 @@ +# Automatically generated by `update-patch-set.sh'; do not edit. + +patch: [ +] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7961a049a9a0..4e6c18356880 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12364,6 +12364,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 { From 86a1a3950b7cf714357d6a9c99566a2ca1b5b6b4 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Mon, 7 Jan 2019 23:54:31 -0600 Subject: [PATCH 2/8] bash5: init bash 5.0 https://lists.gnu.org/archive/html/info-gnu/2019-01/msg00010.html --- pkgs/shells/bash/5.0.nix | 135 ++++++++++++++++++++++++++ pkgs/shells/bash/bash-5.0-patches.nix | 4 + pkgs/top-level/all-packages.nix | 5 + 3 files changed, 144 insertions(+) create mode 100644 pkgs/shells/bash/5.0.nix create mode 100644 pkgs/shells/bash/bash-5.0-patches.nix diff --git a/pkgs/shells/bash/5.0.nix b/pkgs/shells/bash/5.0.nix new file mode 100644 index 000000000000..e747511be59e --- /dev/null +++ b/pkgs/shells/bash/5.0.nix @@ -0,0 +1,135 @@ +{ stdenv, buildPackages +, fetchurl, binutils ? null, bison, autoconf, 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 + ++ optional stdenv.hostPlatform.isCygwin ./cygwin-bash-4.4.11-2.src.patch + # https://lists.gnu.org/archive/html/bug-bash/2016-10/msg00006.html + ++ optional stdenv.hostPlatform.isMusl (fetchurl { + url = "https://lists.gnu.org/archive/html/bug-bash/2016-10/patchJxugOXrY2y.patch"; + sha256 = "1m4v9imidb1cc1h91f2na0b8y9kc5c5fgmpvy9apcyv2kbdcghg1"; + }); + + 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 + ++ optional (stdenv.hostPlatform.libc == "musl") autoconf; + + buildInputs = optional interactive readline80; + + # Bash randomly fails to build because of a recursive invocation to + # build `version.h'. + enableParallelBuilding = false; + + 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 = [ maintainers.peti ]; + }; + + passthru = { + shellPath = "/bin/bash"; + }; +} diff --git a/pkgs/shells/bash/bash-5.0-patches.nix b/pkgs/shells/bash/bash-5.0-patches.nix new file mode 100644 index 000000000000..b8019fb33502 --- /dev/null +++ b/pkgs/shells/bash/bash-5.0-patches.nix @@ -0,0 +1,4 @@ +# Automatically generated by `update-patch-set.sh'; do not edit. + +patch: [ +] diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4e6c18356880..4c0736572db3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6499,6 +6499,11 @@ in any-nix-shell = callPackage ../shells/any-nix-shell { }; bash = lowPrio (callPackage ../shells/bash/4.4.nix { }); + bash5 = lowPrio (callPackage ../shells/bash/5.0.nix { }); + bash5Interactive = 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 { From 844bd5374057404ecea6cfbf3b92b89507240432 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Tue, 8 Jan 2019 00:16:45 -0600 Subject: [PATCH 3/8] bash5: enable parallel building optimistically Works for me and they've had quite some time to fix it ;). --- pkgs/shells/bash/5.0.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/shells/bash/5.0.nix b/pkgs/shells/bash/5.0.nix index e747511be59e..e36259c24967 100644 --- a/pkgs/shells/bash/5.0.nix +++ b/pkgs/shells/bash/5.0.nix @@ -78,9 +78,7 @@ stdenv.mkDerivation rec { buildInputs = optional interactive readline80; - # Bash randomly fails to build because of a recursive invocation to - # build `version.h'. - enableParallelBuilding = false; + enableParallelBuilding = true; makeFlags = optional stdenv.hostPlatform.isCygwin [ "LOCAL_LDFLAGS=-Wl,--export-all,--out-implib,libbash.dll.a" From fa00f7fb705449f51e44776a1e79597caa1e799b Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Tue, 8 Jan 2019 00:18:48 -0600 Subject: [PATCH 4/8] bash5: remove patch w/musl Leave the configureFlags, esp disabling bash malloc. --- pkgs/shells/bash/5.0.nix | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/pkgs/shells/bash/5.0.nix b/pkgs/shells/bash/5.0.nix index e36259c24967..7aee7745ec78 100644 --- a/pkgs/shells/bash/5.0.nix +++ b/pkgs/shells/bash/5.0.nix @@ -1,5 +1,5 @@ { stdenv, buildPackages -, fetchurl, binutils ? null, bison, autoconf, utillinux +, fetchurl, binutils ? null, bison, utillinux # patch for cygwin requires readline support , interactive ? stdenv.isCygwin, readline80 ? null @@ -44,12 +44,7 @@ stdenv.mkDerivation rec { patchFlags = "-p0"; patches = upstreamPatches - ++ optional stdenv.hostPlatform.isCygwin ./cygwin-bash-4.4.11-2.src.patch - # https://lists.gnu.org/archive/html/bug-bash/2016-10/msg00006.html - ++ optional stdenv.hostPlatform.isMusl (fetchurl { - url = "https://lists.gnu.org/archive/html/bug-bash/2016-10/patchJxugOXrY2y.patch"; - sha256 = "1m4v9imidb1cc1h91f2na0b8y9kc5c5fgmpvy9apcyv2kbdcghg1"; - }); + ++ optional stdenv.hostPlatform.isCygwin ./cygwin-bash-4.4.11-2.src.patch; configureFlags = [ (if interactive then "--with-installed-readline" else "--disable-readline") @@ -73,8 +68,7 @@ stdenv.mkDerivation rec { depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ bison ] ++ optional withDocs texinfo - ++ optional stdenv.hostPlatform.isDarwin binutils - ++ optional (stdenv.hostPlatform.libc == "musl") autoconf; + ++ optional stdenv.hostPlatform.isDarwin binutils; buildInputs = optional interactive readline80; From c9b95f54bcb481abd100b1bf6ef3525585ba88b5 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Tue, 8 Jan 2019 17:34:05 -0600 Subject: [PATCH 5/8] bash5: add myself to maintainer list --- pkgs/shells/bash/5.0.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/shells/bash/5.0.nix b/pkgs/shells/bash/5.0.nix index 7aee7745ec78..ab997eb6985b 100644 --- a/pkgs/shells/bash/5.0.nix +++ b/pkgs/shells/bash/5.0.nix @@ -118,7 +118,7 @@ stdenv.mkDerivation rec { platforms = platforms.all; - maintainers = [ maintainers.peti ]; + maintainers = with maintainers; [ peti dtzWill ]; }; passthru = { From 4d24a84d8248138cc9403fafffeeeec1330c48f6 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Tue, 8 Jan 2019 17:34:48 -0600 Subject: [PATCH 6/8] readline80: add myself to maintainers list --- pkgs/development/libraries/readline/8.0.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/readline/8.0.nix b/pkgs/development/libraries/readline/8.0.nix index 8eb2fb8969b9..eefef9727663 100644 --- a/pkgs/development/libraries/readline/8.0.nix +++ b/pkgs/development/libraries/readline/8.0.nix @@ -58,7 +58,7 @@ stdenv.mkDerivation rec { license = licenses.gpl3Plus; - maintainers = [ maintainers.vanschelven ]; + maintainers = with maintainers; [ vanschelven dtzWill ]; platforms = platforms.unix; branch = "8.0"; From 26c7c59c0d4cb5c129623c1f7b8a5b42abf5f4a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 9 Jan 2019 08:28:29 +0000 Subject: [PATCH 7/8] bash: cygwin patch no longer applies --- pkgs/shells/bash/5.0.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/shells/bash/5.0.nix b/pkgs/shells/bash/5.0.nix index ab997eb6985b..b78282ab6e4c 100644 --- a/pkgs/shells/bash/5.0.nix +++ b/pkgs/shells/bash/5.0.nix @@ -43,8 +43,7 @@ stdenv.mkDerivation rec { patchFlags = "-p0"; - patches = upstreamPatches - ++ optional stdenv.hostPlatform.isCygwin ./cygwin-bash-4.4.11-2.src.patch; + patches = upstreamPatches; configureFlags = [ (if interactive then "--with-installed-readline" else "--disable-readline") From d74d2e8ed3ca6f5321a39d88ba508bbe5d4e4ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 9 Jan 2019 08:30:17 +0000 Subject: [PATCH 8/8] bash_5: change attribute name to fit conventions for different versions we use underscore --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4c0736572db3..6a0c90b23280 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6499,8 +6499,8 @@ in any-nix-shell = callPackage ../shells/any-nix-shell { }; bash = lowPrio (callPackage ../shells/bash/4.4.nix { }); - bash5 = lowPrio (callPackage ../shells/bash/5.0.nix { }); - bash5Interactive = lowPrio (callPackage ../shells/bash/5.0.nix { + bash_5 = lowPrio (callPackage ../shells/bash/5.0.nix { }); + bashInteractive_5 = lowPrio (callPackage ../shells/bash/5.0.nix { interactive = true; withDocs = true; });