git.delta.rocks / jrsonnet / refs/commits / 30b370ee222a

difftreelog

fix off-by-one in std.range

Yaroslav Bolyukin2022-11-20parent: #f7dfa48.patch.diff
in: master

7 files changed

modifiedcrates/jrsonnet-evaluator/src/val.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/val.rs
+++ b/crates/jrsonnet-evaluator/src/val.rs
@@ -347,7 +347,7 @@
 			}
 			Self::Range(a, b) => {
 				let mut out = Vec::with_capacity(self.len());
-				for i in *a..*b {
+				for i in *a..=*b {
 					out.push(Val::Num(f64::from(i)));
 				}
 				Cc::new(out)
modifiedflake.nixdiffbeforeafterboth
17 });17 });
18 in18 in
19 rec {19 rec {
20 packages = rec {
21 go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };
22 sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };
23 jsonnet = pkgs.callPackage ./nix/jsonnet.nix { };
24 # I didn't managed to build it, and nixpkgs version is marked as broken
25 # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };
26 jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {
27 rustPlatform = pkgs.makeRustPlatform {
28 rustc = rust;
29 cargo = rust;
30 };
31 };
32
33 benchmarks = pkgs.callPackage ./nix/benchmarks.nix {
34 inherit go-jsonnet sjsonnet jsonnet jrsonnet;
35 };
36 };
20 devShell = pkgs.mkShell {37 devShell = pkgs.mkShell {
21 nativeBuildInputs = with pkgs;[38 nativeBuildInputs = with pkgs;[
22 rust39 rust
23 cargo-edit40 cargo-edit
24 lld41 lld
25 hyperfine42 hyperfine
26 go-jsonnet
27 valgrind43 valgrind
28 ];44 ];
29 };45 };
addednix/benchmarks.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/benchmarks.nix
@@ -0,0 +1,9 @@
+{ stdenv, jrsonnet, go-jsonnet, sjsonnet, jsonnet, hyperfine }:
+
+stdenv.mkDerivation {
+  name = "benchmarks";
+  __impure = true;
+  unpackPhase = "true";
+
+  installPhase = "touch $out";
+}
addednix/go-jsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/go-jsonnet.nix
@@ -0,0 +1,24 @@
+{ lib, buildGo119Module, fetchFromGitHub }:
+
+buildGo119Module rec {
+  pname = "go-jsonnet";
+  # Latest release is broken: https://github.com/google/go-jsonnet/issues/653
+  version = "b4633b66f85e069b105b1ff076d178e4354941bc";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "go-jsonnet";
+    rev = "${version}";
+    hash = "sha256-J+bGdbYo2Ch3ORYD57yJA4jiPiS8IYASZ6kJHhyaqeU=";
+  };
+
+  vendorHash = "sha256-j1fTOUpLx34TgzW94A/BctLrg9XoTtb3cBizhVJoEEI=";
+
+  postInstall = ''
+    mv $out/bin/jsonnet $out/bin/go-jsonnet
+  '';
+
+  doCheck = false;
+
+  subPackages = [ "cmd/jsonnet" ];
+}
addednix/jrsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/jrsonnet.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+let
+  jsonnet = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "google";
+    repo = "jsonnet";
+    hash = "sha256-q1MNdbyrx4vvN5woe0o90pPqaNtsZjI5RQ7KJt7rOpU=";
+  };
+in
+
+rustPlatform.buildRustPackage rec {
+  pname = "jrsonnet";
+  version = "git";
+
+  src = ./..;
+
+  cargoTestFlags = [ "--package=jrsonnet" ];
+  cargoBuildFlags = [ "--package=jrsonnet" ];
+
+  cargoLock = {
+    lockFile = ../Cargo.lock;
+  };
+}
addednix/jsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/jsonnet.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, jekyll, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "jsonnet";
+  version = "0.19.1";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "google";
+    repo = "jsonnet";
+    hash = "sha256-q1MNdbyrx4vvN5woe0o90pPqaNtsZjI5RQ7KJt7rOpU=";
+  };
+
+  makeFlags = [
+    "jsonnet"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp jsonnet $out/bin/jsonnet
+  '';
+}
addednix/sjsonnet.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/sjsonnet.nix
@@ -0,0 +1,30 @@
+# This derivation uses released sjsonnet binary, which most users will use
+
+# However, recommended way of using sjsonnet - is using a client-server model,
+# for which there is no released binaries: https://github.com/databricks/sjsonnet/issues/51
+
+# TODO: Somehow build client-server version of sjsonnet, and use it in benchmarks
+
+{ stdenv, lib, fetchurl, jdk17, makeWrapper }:
+
+stdenv.mkDerivation {
+  pname = "sjsonnet";
+  version = "0.4.3";
+
+  src = fetchurl {
+    url =
+      "https://github.com/databricks/sjsonnet/releases/download/0.4.3/sjsonnet.jar";
+    hash = "sha256-XDJAAAlFu1DfQ2YlGEO8OpWpwxzG83tHlCQIDiqfRGY=";
+  };
+
+  unpackPhase = "true";
+  buildInputs =
+    [ jdk17 makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib
+    cp $src $out/lib/sjsonnet.jar
+    makeWrapper ${jdk17}/bin/java $out/bin/sjsonnet --add-flags "-Xss100m -XX:+UseStringDeduplication -jar $out/lib/sjsonnet.jar"
+  '';
+  separateDebugInfo = false;
+}