diff options
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/kerf')
-rw-r--r-- | nixpkgs/pkgs/development/interpreters/kerf/default.nix | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/kerf/default.nix b/nixpkgs/pkgs/development/interpreters/kerf/default.nix new file mode 100644 index 000000000000..99d9bb8710e4 --- /dev/null +++ b/nixpkgs/pkgs/development/interpreters/kerf/default.nix @@ -0,0 +1,92 @@ +{ lib, stdenv, fetchFromGitHub +, libedit, zlib, ncurses, expect + +# darwin only below +, Accelerate, CoreGraphics, CoreVideo +}: + +stdenv.mkDerivation rec { + pname = "kerf"; + version = "unstable-2022-08-05"; + + src = fetchFromGitHub { + owner = "kevinlawler"; + repo = "kerf1"; + rev = "4ec5b592b310b96d33654d20d6a511e6fffc0f9d"; + hash = "sha256-0sU2zOk5I69lQyrn1g0qsae7S/IBT6eA/911qp0GNkk="; + }; + + sourceRoot = "${src.name}/src"; + buildInputs = [ libedit zlib ncurses ] + ++ lib.optionals stdenv.isDarwin ([ + Accelerate + ] ++ lib.optionals stdenv.isx86_64 /* && isDarwin */ [ + CoreGraphics CoreVideo + ]); + + nativeCheckInputs = [ expect ]; + doCheck = true; + + makeFlags = [ "kerf" "kerf_test" ]; + + # avoid a huge amount of warnings to make failures clearer + env.NIX_CFLAGS_COMPILE = toString (map (x: "-Wno-${x}") [ + "void-pointer-to-int-cast" + "format" + "implicit-function-declaration" + "gnu-variable-sized-type-not-at-end" + "unused-result" + ] ++ lib.optionals stdenv.isDarwin [ "-fcommon" ]); + + patchPhase = '' + substituteInPlace ./Makefile \ + --replace 'CPUS ?=' 'CPUS = $(NIX_BUILD_CORES) #' \ + --replace 'termcap' 'ncurses' + ''; + + # the kerf executable uses ncurses to create a fancy terminal for input and + # reads terminal keystrokes directly, so it doesn't read from stdin as + # expected, hence why we use this fancy expect script to run the test exe and + # send 'quit' to the prompt after it finishes. + checkPhase = '' + expect <<EOD + set timeout 60 + spawn ./kerf_test + expect { + "Passed" {} + "Failed" { exit 1 } + timeout { exit 1 } + } + expect { + "KeRF> " {send "quit\r"} + timeout { exit 1 } + } + expect { + "\[DEBUG\] OK: Done OK." {} + "\[DEBUG\] FAILED: Debug failure." { exit 1 } + timeout { exit 1 } + } + exit 0 + EOD + ''; + + installPhase = "install -D kerf $out/bin/kerf"; + + meta = with lib; { + description = "Columnar tick database and time-series language"; + longDescription = '' + Kerf is a columnar tick database and small programming + language that is a superset of JSON and SQL. It can be + used for local analytics, timeseries, logfile processing, + and more. + ''; + license = with licenses; [ bsd2 ]; + homepage = "https://github.com/kevinlawler/kerf1"; + platforms = platforms.unix; + maintainers = with maintainers; [ thoughtpolice ]; + + # aarch64-linux seems hopeless, with over 2,000 warnings + # generated? + broken = (stdenv.isLinux && stdenv.isAarch64); + }; +} |