difftreelog
ci build current binaries with crane
in: master
5 files changed
flake.lockdiffbeforeafterboth1{1{2 "nodes": {2 "nodes": {3 "crane": {4 "inputs": {5 "nixpkgs": [6 "nixpkgs"7 ]8 },9 "locked": {10 "lastModified": 1711299236,11 "narHash": "sha256-6/JsyozOMKN8LUGqWMopKTSiK8N79T8Q+hcxu2KkTXg=",12 "owner": "ipetkov",13 "repo": "crane",14 "rev": "880573f80d09e18a11713f402b9e6172a085449f",15 "type": "github"16 },17 "original": {18 "owner": "ipetkov",19 "repo": "crane",20 "type": "github"21 }22 },3 "flake-utils": {23 "flake-utils": {4 "inputs": {24 "inputs": {5 "systems": "systems"25 "systems": "systems"35 },55 },36 "root": {56 "root": {37 "inputs": {57 "inputs": {58 "crane": "crane",38 "flake-utils": "flake-utils",59 "flake-utils": "flake-utils",39 "nixpkgs": "nixpkgs",60 "nixpkgs": "nixpkgs",40 "rust-overlay": "rust-overlay"61 "rust-overlay": "rust-overlay"flake.nixdiffbeforeafterboth--- a/flake.nix
+++ b/flake.nix
@@ -5,14 +5,21 @@
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
+ inputs = {
+ nixpkgs.follows = "nixpkgs";
+ flake-utils.follows = "flake-utils";
+ };
+ };
+ crane = {
+ url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
- inputs.flake-utils.follows = "flake-utils";
};
};
outputs = {
nixpkgs,
flake-utils,
rust-overlay,
+ crane,
...
}:
flake-utils.lib.eachDefaultSystem (
@@ -22,16 +29,8 @@
overlays = [rust-overlay.overlays.default];
config.allowUnsupportedSystem = true;
};
- lib = pkgs.lib;
- rust =
- (pkgs.rustChannelOf {
- date = "2024-01-10";
- channel = "nightly";
- })
- .default
- .override {
- extensions = ["rust-src" "miri" "rust-analyzer" "clippy"];
- };
+ rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
+ craneLib = (crane.mkLib pkgs).overrideToolchain rust;
in {
packages = rec {
default = jrsonnet;
@@ -40,19 +39,19 @@
jsonnet = pkgs.callPackage ./nix/jsonnet.nix {};
# I didn't managed to build it, and nixpkgs version is marked as broken
# haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };
+
jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {
- rustPlatform = pkgs.makeRustPlatform {
- rustc = rust;
- cargo = rust;
- };
+ inherit craneLib;
};
jrsonnet-nightly = pkgs.callPackage ./nix/jrsonnet.nix {
- rustPlatform = pkgs.makeRustPlatform {
- rustc = rust;
- cargo = rust;
- };
+ inherit craneLib;
withNightlyFeatures = true;
};
+ jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {
+ inherit craneLib;
+ withExperimentalFeatures = true;
+ };
+
jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {
rustPlatform = pkgs.makeRustPlatform {
rustc = rust;
@@ -115,20 +114,9 @@
];
};
};
- packagesCross = lib.genAttrs ["mingwW64"] (crossSystem: let
- callPackage = pkgs.pkgsCross.${crossSystem}.callPackage;
- in {
- jrsonnet = callPackage ./nix/jrsonnet.nix {
- # rustPlatform = pkgs.makeRustPlatform {
- # rustc = rust;
- # cargo = rust;
- # };
- };
- });
- devShells.default = pkgs.mkShell {
+ devShells.default = craneLib.devShell {
nativeBuildInputs = with pkgs; [
alejandra
- rust
cargo-edit
cargo-asm
cargo-outdated
nix/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"
nix/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;
- };
}
rust-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"]