diff --git a/pkgs/by-name/rc/rc/package.nix b/pkgs/by-name/rc/rc/package.nix index 95d3d3050ebc..c8697d6bf930 100644 --- a/pkgs/by-name/rc/rc/package.nix +++ b/pkgs/by-name/rc/rc/package.nix @@ -4,15 +4,17 @@ fetchFromGitHub, fetchpatch2, pkgsStatic, + rc, byacc, ed, ncurses, readline, + editline, installShellFiles, historySupport ? true, readlineSupport ? true, - lineEditingLibrary ? - if (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isStatic) then "null" else "readline", + editlineSupport ? false, + lineEditingLibrary ? if stdenv.hostPlatform.isDarwin then "null" else "readline", }: assert lib.elem lineEditingLibrary [ @@ -25,10 +27,10 @@ assert lib.elem lineEditingLibrary [ assert !(lib.elem lineEditingLibrary [ "edit" - "editline" "vrl" ]); # broken assert (lineEditingLibrary == "readline") -> readlineSupport; +assert (lineEditingLibrary == "editline") -> editlineSupport; stdenv.mkDerivation (finalAttrs: { pname = "rc"; version = "unstable-2025-10-01"; @@ -61,9 +63,8 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ ncurses ] - ++ lib.optionals readlineSupport [ - readline - ]; + ++ lib.optional readlineSupport readline + ++ lib.optional editlineSupport editline; strictDeps = true; @@ -73,7 +74,9 @@ stdenv.mkDerivation (finalAttrs: { "MANPREFIX=${placeholder "man"}/share/man" "CPPFLAGS=\"-DSIGCLD=SIGCHLD\"" "EDIT=${lineEditingLibrary}" - ]; + ] + # Required to fix static build, harmless for dynamic builds. + ++ lib.optional (lineEditingLibrary == "readline") "LDLIBS=-lncurses"; buildFlags = [ "all" @@ -88,7 +91,21 @@ stdenv.mkDerivation (finalAttrs: { passthru = { shellPath = "/bin/rc"; - tests.static = pkgsStatic.rc; + tests = { + static = pkgsStatic.rc; + readline = lib.optionalDrvAttr (!stdenv.hostPlatform.isDarwin) ( + rc.override { + readlineSupport = true; + lineEditingLibrary = "readline"; + } + ); + editline = lib.optionalDrvAttr (!stdenv.hostPlatform.isDarwin) ( + rc.override { + editlineSupport = true; + lineEditingLibrary = "editline"; + } + ); + }; }; meta = {