git.delta.rocks / jrsonnet / refs/commits / a6dd70c0570f

difftreelog

ci build current binaries with crane

Yaroslav Bolyukin2024-03-25parent: #c2313a2.patch.diff
in: master

5 files changed

modifiedflake.lockdiffbeforeafterboth
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,25 @@
 {
   "nodes": {
+    "crane": {
+      "inputs": {
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1711299236,
+        "narHash": "sha256-6/JsyozOMKN8LUGqWMopKTSiK8N79T8Q+hcxu2KkTXg=",
+        "owner": "ipetkov",
+        "repo": "crane",
+        "rev": "880573f80d09e18a11713f402b9e6172a085449f",
+        "type": "github"
+      },
+      "original": {
+        "owner": "ipetkov",
+        "repo": "crane",
+        "type": "github"
+      }
+    },
     "flake-utils": {
       "inputs": {
         "systems": "systems"
@@ -35,6 +55,7 @@
     },
     "root": {
       "inputs": {
+        "crane": "crane",
         "flake-utils": "flake-utils",
         "nixpkgs": "nixpkgs",
         "rust-overlay": "rust-overlay"
modifiedflake.nixdiffbeforeafterboth
before · flake.nix
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs";5    flake-utils.url = "github:numtide/flake-utils";6    rust-overlay = {7      url = "github:oxalica/rust-overlay";8      inputs.nixpkgs.follows = "nixpkgs";9      inputs.flake-utils.follows = "flake-utils";10    };11  };12  outputs = {13    nixpkgs,14    flake-utils,15    rust-overlay,16    ...17  }:18    flake-utils.lib.eachDefaultSystem (19      system: let20        pkgs = import nixpkgs {21          inherit system;22          overlays = [rust-overlay.overlays.default];23          config.allowUnsupportedSystem = true;24        };25        lib = pkgs.lib;26        rust =27          (pkgs.rustChannelOf {28            date = "2024-01-10";29            channel = "nightly";30          })31          .default32          .override {33            extensions = ["rust-src" "miri" "rust-analyzer" "clippy"];34          };35      in {36        packages = rec {37          default = jrsonnet;38          go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix {};39          sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix {};40          jsonnet = pkgs.callPackage ./nix/jsonnet.nix {};41          # I didn't managed to build it, and nixpkgs version is marked as broken42          # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };43          jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {44            rustPlatform = pkgs.makeRustPlatform {45              rustc = rust;46              cargo = rust;47            };48          };49          jrsonnet-nightly = pkgs.callPackage ./nix/jrsonnet.nix {50            rustPlatform = pkgs.makeRustPlatform {51              rustc = rust;52              cargo = rust;53            };54            withNightlyFeatures = true;55          };56          jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {57            rustPlatform = pkgs.makeRustPlatform {58              rustc = rust;59              cargo = rust;60            };61          };6263          benchmarks = pkgs.callPackage ./nix/benchmarks.nix {64            inherit go-jsonnet sjsonnet jsonnet;65            jrsonnetVariants = [66              {67                drv = jrsonnet.overrideAttrs {forBenchmarks = true;};68                name = "";69              }70            ];71          };72          benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {73            inherit go-jsonnet sjsonnet jsonnet;74            quick = true;75            jrsonnetVariants = [76              {77                drv = jrsonnet.overrideAttrs {forBenchmarks = true;};78                name = "";79              }80            ];81          };82          benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {83            inherit go-jsonnet sjsonnet jsonnet;84            jrsonnetVariants = [85              {86                drv = jrsonnet.overrideAttrs {forBenchmarks = true;};87                name = "current";88              }89              {90                drv = jrsonnet-nightly.overrideAttrs {forBenchmarks = true;};91                name = "current-nightly";92              }93              {94                drv = jrsonnet-release.overrideAttrs {forBenchmarks = true;};95                name = "release";96              }97            ];98          };99          benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {100            inherit go-jsonnet sjsonnet jsonnet;101            quick = true;102            jrsonnetVariants = [103              {104                drv = jrsonnet;105                name = "current";106              }107              {108                drv = jrsonnet-nightly;109                name = "current-nightly";110              }111              {112                drv = jrsonnet-release;113                name = "release";114              }115            ];116          };117        };118        packagesCross = lib.genAttrs ["mingwW64"] (crossSystem: let119          callPackage = pkgs.pkgsCross.${crossSystem}.callPackage;120        in {121          jrsonnet = callPackage ./nix/jrsonnet.nix {122            # rustPlatform = pkgs.makeRustPlatform {123            #   rustc = rust;124            #   cargo = rust;125            # };126          };127        });128        devShells.default = pkgs.mkShell {129          nativeBuildInputs = with pkgs; [130            alejandra131            rust132            cargo-edit133            cargo-asm134            cargo-outdated135            cargo-watch136            cargo-insta137            lld138            hyperfine139            graphviz140          ];141        };142      }143    );144}
after · flake.nix
1{2  description = "Jrsonnet";3  inputs = {4    nixpkgs.url = "github:nixos/nixpkgs";5    flake-utils.url = "github:numtide/flake-utils";6    rust-overlay = {7      url = "github:oxalica/rust-overlay";8      inputs = {9        nixpkgs.follows = "nixpkgs";10        flake-utils.follows = "flake-utils";11      };12    };13    crane = {14      url = "github:ipetkov/crane";15      inputs.nixpkgs.follows = "nixpkgs";16    };17  };18  outputs = {19    nixpkgs,20    flake-utils,21    rust-overlay,22    crane,23    ...24  }:25    flake-utils.lib.eachDefaultSystem (26      system: let27        pkgs = import nixpkgs {28          inherit system;29          overlays = [rust-overlay.overlays.default];30          config.allowUnsupportedSystem = true;31        };32        rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;33        craneLib = (crane.mkLib pkgs).overrideToolchain rust;34      in {35        packages = rec {36          default = jrsonnet;37          go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix {};38          sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix {};39          jsonnet = pkgs.callPackage ./nix/jsonnet.nix {};40          # I didn't managed to build it, and nixpkgs version is marked as broken41          # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };4243          jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {44            inherit craneLib;45          };46          jrsonnet-nightly = pkgs.callPackage ./nix/jrsonnet.nix {47            inherit craneLib;48            withNightlyFeatures = true;49          };50          jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {51            inherit craneLib;52            withExperimentalFeatures = true;53          };5455          jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {56            rustPlatform = pkgs.makeRustPlatform {57              rustc = rust;58              cargo = rust;59            };60          };6162          benchmarks = pkgs.callPackage ./nix/benchmarks.nix {63            inherit go-jsonnet sjsonnet jsonnet;64            jrsonnetVariants = [65              {66                drv = jrsonnet.overrideAttrs {forBenchmarks = true;};67                name = "";68              }69            ];70          };71          benchmarks-quick = pkgs.callPackage ./nix/benchmarks.nix {72            inherit go-jsonnet sjsonnet jsonnet;73            quick = true;74            jrsonnetVariants = [75              {76                drv = jrsonnet.overrideAttrs {forBenchmarks = true;};77                name = "";78              }79            ];80          };81          benchmarks-against-release = pkgs.callPackage ./nix/benchmarks.nix {82            inherit go-jsonnet sjsonnet jsonnet;83            jrsonnetVariants = [84              {85                drv = jrsonnet.overrideAttrs {forBenchmarks = true;};86                name = "current";87              }88              {89                drv = jrsonnet-nightly.overrideAttrs {forBenchmarks = true;};90                name = "current-nightly";91              }92              {93                drv = jrsonnet-release.overrideAttrs {forBenchmarks = true;};94                name = "release";95              }96            ];97          };98          benchmarks-quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {99            inherit go-jsonnet sjsonnet jsonnet;100            quick = true;101            jrsonnetVariants = [102              {103                drv = jrsonnet;104                name = "current";105              }106              {107                drv = jrsonnet-nightly;108                name = "current-nightly";109              }110              {111                drv = jrsonnet-release;112                name = "release";113              }114            ];115          };116        };117        devShells.default = craneLib.devShell {118          nativeBuildInputs = with pkgs; [119            alejandra120            cargo-edit121            cargo-asm122            cargo-outdated123            cargo-watch124            cargo-insta125            lld126            hyperfine127            graphviz128          ];129        };130      }131    );132}
modifiednix/jrsonnet-release.nixdiffbeforeafterboth
--- a/nix/jrsonnet-release.nix
+++ b/nix/jrsonnet-release.nix
@@ -1,6 +1,8 @@
-{ lib, fetchFromGitHub, rustPlatform, runCommand, makeWrapper }:
-
-
+{
+  fetchFromGitHub,
+  rustPlatform,
+  makeWrapper,
+}:
 rustPlatform.buildRustPackage rec {
   pname = "jrsonnet";
   version = "pre9";
@@ -13,11 +15,10 @@
   };
   cargoHash = "sha256-y2YiktT1h263vpFaC+kRL8yaAWQThhEkS+NSQ6B6Ylk=";
 
-
-  cargoTestFlags = [ "--package=jrsonnet --features=mimalloc,legacy-this-file" ];
-  cargoBuildFlags = [ "--package=jrsonnet --features=mimalloc,legacy-this-file" ];
+  cargoTestFlags = ["--package=jrsonnet --features=mimalloc,legacy-this-file"];
+  cargoBuildFlags = ["--package=jrsonnet --features=mimalloc,legacy-this-file"];
 
-  buildInputs = [ makeWrapper ];
+  buildInputs = [makeWrapper];
 
   postInstall = ''
     wrapProgram $out/bin/jrsonnet --add-flags "--max-stack=200000 --os-stack=200000"
modifiednix/jrsonnet.nixdiffbeforeafterboth
--- a/nix/jrsonnet.nix
+++ b/nix/jrsonnet.nix
@@ -1,33 +1,24 @@
 {
   lib,
-  rustPlatform,
-  runCommand,
+  craneLib,
   makeWrapper,
   withNightlyFeatures ? false,
+  withExperimentalFeatures ? false,
   forBenchmarks ? false,
 }:
-with lib; let
-  filteredSrc = builtins.path {
-    name = "jrsonnet-src-filtered";
-    filter = path: type: !(builtins.baseNameOf path == "flake.nix" || builtins.baseNameOf path == "nix");
-    path = ../.;
-  };
-
-  # for some reason, filteredSrc hash still depends on nix directory contents
-  # Moving it into a CA store drops leftover references
-  src =
-    runCommand "jrsonnet-src"
-    {
-      __contentAddressed = true;
-    } "cp -r '${filteredSrc}' $out";
-in
-  rustPlatform.buildRustPackage rec {
-    inherit src;
+with lib;
+  craneLib.buildPackage rec {
+    src = lib.cleanSourceWith {
+      src = ../.;
+      filter = path: type:
+        (lib.hasSuffix "\.jsonnet" path)
+        || (craneLib.filterCargoSources path type);
+    };
     pname = "jrsonnet";
-    version = "current${optionalString withNightlyFeatures "-nightly"}";
+    version = "current${optionalString withNightlyFeatures "-nightly"}${optionalString withExperimentalFeatures "-experimental"}";
 
     cargoTestFlags = [
-      "--features=mimalloc,legacy-this-file${optionalString withNightlyFeatures ",nightly"}"
+      "--features=mimalloc,legacy-this-file${optionalString withNightlyFeatures ",nightly"}${optionalString withExperimentalFeatures ",experimental"}"
     ];
     cargoBuildFlags = cargoTestFlags;
 
@@ -37,8 +28,4 @@
     postInstall = optionalString forBenchmarks ''
       wrapProgram $out/bin/jrsonnet --add-flags "--max-stack=200000 --os-stack=200000"
     '';
-
-    cargoLock = {
-      lockFile = ../Cargo.lock;
-    };
   }
modifiedrust-toolchain.tomldiffbeforeafterboth
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "nightly-2023-10-28"
-components = ["rustfmt", "clippy"]
+channel = "nightly-2024-01-10"
+components = ["rustfmt", "clippy", "rust-analyzer", "rust-src"]