difftreelog
ci fallback to stable fenix if not available
in: master
It is only used for better clippy and rustfmt anyway
3 files changed
flake.nixdiffbeforeafterboth1{2 description = "Jrsonnet";3 inputs = {4 nixpkgs.url = "github:nixos/nixpkgs/release-25.11";5 fenix = {6 url = "github:CertainLach/fenix/fix/libatomic";7 inputs.nixpkgs.follows = "nixpkgs";8 };9 flake-parts = {10 url = "github:hercules-ci/flake-parts";11 inputs.nixpkgs-lib.follows = "nixpkgs";12 };13 hercules-ci-effects = {14 url = "github:hercules-ci/hercules-ci-effects";15 inputs.flake-parts.follows = "flake-parts";16 inputs.nixpkgs.follows = "nixpkgs";17 };18 treefmt-nix = {19 url = "github:numtide/treefmt-nix";20 inputs.nixpkgs.follows = "nixpkgs";21 };22 crane.url = "github:ipetkov/crane";23 shelly.url = "github:CertainLach/shelly";2425 cpp-jsonnet-for-tests = {26 url = "github:google/jsonnet";27 flake = false;28 };29 go-jsonnet-for-tests = {30 url = "github:google/go-jsonnet";31 flake = false;32 };33 };34 outputs =35 inputs:36 let37 inherit (inputs.nixpkgs.lib)38 mkIf39 mkForce40 optionals41 optionalAttrs42 ;43 in44 inputs.flake-parts.lib.mkFlake { inherit inputs; } {45 imports = [46 inputs.shelly.flakeModule47 inputs.hercules-ci-effects.flakeModule48 ];49 systems = [50 "x86_64-linux"51 "i686-linux"52 "aarch64-linux"53 "armv7l-linux"54 "aarch64-darwin"55 ];56 perSystem =57 {58 config,59 self',60 system,61 ...62 }:63 let64 pkgs = import inputs.nixpkgs {65 inherit system;66 overlays = [ inputs.fenix.overlays.default ];67 config.allowUnsupportedSystem = true;68 config.allowUnfreePredicate = pkg: pkg.name == "Xcode.app";69 };70 targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name;71 rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt;72 toolchain = pkgs.fenix.combine [73 (pkgs.fenix.complete.withComponents [74 "cargo"75 "clippy"76 "rustc"77 "rust-src"78 "rustfmt"79 "rust-analyzer"80 ])81 pkgs.fenix.targets.wasm32-unknown-unknown.latest.rust-std82 ];83 craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain;84 treefmt =85 (inputs.treefmt-nix.lib.evalModule pkgs (import ./treefmt.nix { inherit rustfmt; })).config.build;8687 # Cross-compilation toolchains88 crossToolchain = pkgs.fenix.combine [89 (pkgs.fenix.stable.withComponents [90 "cargo"91 "rustc"92 ])93 pkgs.fenix.targets."${targetArch}-unknown-linux-musl".stable.rust-std94 pkgs.fenix.targets."${targetArch}-apple-darwin".stable.rust-std95 ];96 craneLibCross = (inputs.crane.mkLib pkgs).overrideToolchain crossToolchain;9798 # Windows cross-compilation99 pkgsWindows = import inputs.nixpkgs {100 overlays = [ inputs.fenix.overlays.default ];101 localSystem = system;102 crossSystem = {103 config = "${targetArch}-w64-mingw32";104 libc = "msvcrt";105 };106 };107 windowsToolchain = pkgs.fenix.combine [108 (pkgs.fenix.stable.withComponents [109 "cargo"110 "rustc"111 ])112 pkgs.fenix.targets."${targetArch}-pc-windows-gnu".stable.rust-std113 ];114 craneLibWindows = (inputs.crane.mkLib pkgsWindows).overrideToolchain (_: windowsToolchain);115116 in117 {118 legacyPackages = {119 release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (120 {121 jrsonnet-linux-glibc = self'.packages.jrsonnet;122 jrsonnet-experimental-linux-glibc = self'.packages.jrsonnet-experimental;123 }124 // optionalAttrs pkgs.stdenv.hostPlatform.is64bit rec {125 jrsonnet-linux-musl = pkgs.callPackage ./nix/jrsonnet-cross-musl.nix {126 craneLib = craneLibCross;127 targetTriple = "${targetArch}-unknown-linux-musl";128 muslCC = pkgs.pkgsMusl.stdenv.cc;129 };130 jrsonnet-experimental-linux-musl = jrsonnet-linux-musl.override {131 withExperimentalFeatures = true;132 };133 }134 // optionalAttrs (targetArch == "aarch64") rec {135 jrsonnet-darwin = pkgs.callPackage ./nix/jrsonnet-cross-darwin.nix {136 craneLib = craneLibCross;137 targetTriple = "${targetArch}-apple-darwin";138 };139 jrsonnet-experimental-darwin = jrsonnet-darwin.override {140 withExperimentalFeatures = true;141 };142 }143 // optionalAttrs (targetArch == "x86_64") rec {144 jrsonnet-windows = pkgsWindows.callPackage ./nix/jrsonnet-cross-windows.nix {145 craneLib = craneLibWindows;146 targetTriple = "${targetArch}-pc-windows-gnu";147 };148 jrsonnet-experimental-windows = jrsonnet-windows.override {149 withExperimentalFeatures = true;150 };151 }152 );153 benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {154 default = pkgs.callPackage ./nix/benchmarks.nix {155 inherit (config.legacyPackages.jsonnetImpls)156 go-jsonnet157 sjsonnet158 cpp-jsonnet159 rsjsonnet160 ;161 jrsonnetVariants = [162 {163 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };164 name = "";165 }166 ];167 };168 quick = pkgs.callPackage ./nix/benchmarks.nix {169 inherit (config.legacyPackages.jsonnetImpls)170 go-jsonnet171 sjsonnet172 cpp-jsonnet173 rsjsonnet174 ;175 quick = true;176 jrsonnetVariants = [177 {178 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };179 name = "";180 }181 ];182 };183 against-release = pkgs.callPackage ./nix/benchmarks.nix {184 inherit (config.legacyPackages.jsonnetImpls)185 go-jsonnet186 sjsonnet187 cpp-jsonnet188 rsjsonnet189 ;190 jrsonnetVariants = [191 {192 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };193 name = "current";194 }195 {196 drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };197 name = "current-experimental";198 }199 {200 drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };201 name = "release";202 }203 ];204 };205 quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {206 inherit (config.legacyPackages.jsonnetImpls)207 go-jsonnet208 sjsonnet209 cpp-jsonnet210 rsjsonnet211 ;212 quick = true;213 jrsonnetVariants = [214 {215 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };216 name = "current";217 }218 {219 drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };220 name = "current-experimental";221 }222 {223 drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };224 name = "release";225 }226 ];227 };228 };229 jsonnetImpls = {230 go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };231 sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };232 cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };233 # I didn't managed to build it, and nixpkgs version is marked as broken234 # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };235 rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };236 # Older released version of jrsonnet itself, for benchmarking purposes237 jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {238 rustPlatform = pkgs.makeRustPlatform {239 rustc = toolchain;240 cargo = toolchain;241 };242 };243 };244 };245 packages =246 let247 jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {248 inherit craneLib;249 inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;250 };251 jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {252 inherit craneLib;253 inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;254 withExperimentalFeatures = true;255 };256 in257 {258 default = jrsonnet;259 inherit jrsonnet jrsonnet-experimental;260 };261 checks = optionalAttrs (system != "armv7l-linux") {262 formatting = treefmt.check inputs.self;263 };264 formatter = mkIf (system != "armv7l-linux") treefmt.wrapper;265 shelly.shells.default = {266 factory = craneLib.devShell;267 packages =268 with pkgs;269 [270 cargo-edit271 cargo-outdated272 cargo-watch273 cargo-insta274 cargo-hack275 cargo-show-asm276 lld277 hyperfine278 graphviz279 ]280 ++ optionals (!stdenv.isDarwin) [281 valgrind282 kdePackages.kcachegrind283 samply284 ];285 environment = {286 CPP_JSONNET_FOR_TESTS = inputs.cpp-jsonnet-for-tests;287 GO_JSONNET_FOR_TESTS = inputs.go-jsonnet-for-tests;288 };289 };290 shelly.shells.impls = {291 packages =292 (with self'.legacyPackages.jsonnetImpls; [293 cpp-jsonnet294 go-jsonnet295 rsjsonnet296 sjsonnet297 ])298 ++ (with self'.packages; [299 jrsonnet300 ]);301 };302 };303 hercules-ci.github-releases.files =304 let305 rel = system: inputs.self.legacyPackages.${system}.release;306 bin = drv: "${drv}/bin/jrsonnet";307 exe = drv: "${drv}/bin/jrsonnet.exe";308 in309 [310 {311 label = "jrsonnet-x86_64-linux-musl";312 path = bin (rel "x86_64-linux").jrsonnet-linux-musl;313 }314 {315 label = "jrsonnet-experimental-x86_64-linux-musl";316 path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;317 }318 {319 label = "jrsonnet-aarch64-darwin";320 path = bin (rel "aarch64-linux").jrsonnet-darwin;321 }322 {323 label = "jrsonnet-experimental-aarch64-darwin";324 path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;325 }326 {327 label = "jrsonnet-x86_64-windows.exe";328 path = exe (rel "x86_64-linux").jrsonnet-windows;329 }330 {331 label = "jrsonnet-experimental-x86_64-windows.exe";332 path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;333 }334335 {336 label = "jrsonnet-aarch64-linux-musl";337 path = bin (rel "aarch64-linux").jrsonnet-linux-musl;338 }339 {340 label = "jrsonnet-experimental-aarch64-linux-musl";341 path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;342 }343344 {345 label = "jrsonnet-x86_64-linux-glibc";346 path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;347 }348 {349 label = "jrsonnet-experimental-x86_64-linux-glibc";350 path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;351 }352 {353 label = "jrsonnet-aarch64-linux-glibc";354 path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;355 }356 {357 label = "jrsonnet-experimental-aarch64-linux-glibc";358 path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;359 }360 {361 label = "jrsonnet-i686-linux-glibc";362 path = bin (rel "i686-linux").jrsonnet-linux-glibc;363 }364 {365 label = "jrsonnet-experimental-i686-linux-glibc";366 path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;367 }368 {369 label = "jrsonnet-armv7l-linux-glibc";370 path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;371 }372 {373 label = "jrsonnet-experimental-armv7l-linux-glibc";374 path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;375 }376 ];377 hercules-ci.cargo-publish = {378 enable = true;379 secretName = "crates-io";380 extraPublishArgs = [ "--workspace" ];381 assertVersions = true;382 };383 hercules-ci.flake-update = {384 enable = true;385 baseMerge.enable = true;386 baseMerge.method = "fast-forward";387 when = {388 dayOfWeek = [ "Sat" ];389 };390 };391 herculesCI =392 { lib, config, ... }:393 {394 ciSystems = [395 "x86_64-linux"396 "i686-linux"397 "aarch64-linux"398 "armv7l-linux"399 # TODO: add workers for these platforms400 # "aarch64-darwin"401 ];402 onPush.default.outputs = {403 benchmarks.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;404405 # Cross: musl/mingw/darwin-zigbuild406 release.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.release;407 release.aarch64-linux = inputs.self.legacyPackages.aarch64-linux.release;408 release.armv7l-linux = inputs.self.legacyPackages.armv7l-linux.release;409 release.i686-linux = inputs.self.legacyPackages.i686-linux.release;410411 # Too much to build for CI purposes412 devShells = mkForce { };413 formatter = mkForce { };414415 # No need to run them on different arch, pretty large derivations and might try to compile GHC416 checks.i686-linux.formatting = mkForce { };417 checks.aarch64-linux.formatting = mkForce { };418 };419 };420 };421}1{2 description = "Jrsonnet";3 inputs = {4 nixpkgs.url = "github:nixos/nixpkgs/release-25.11";5 fenix = {6 url = "github:CertainLach/fenix/fix/libatomic";7 inputs.nixpkgs.follows = "nixpkgs";8 };9 flake-parts = {10 url = "github:hercules-ci/flake-parts";11 inputs.nixpkgs-lib.follows = "nixpkgs";12 };13 hercules-ci-effects = {14 url = "github:hercules-ci/hercules-ci-effects";15 inputs.flake-parts.follows = "flake-parts";16 inputs.nixpkgs.follows = "nixpkgs";17 };18 treefmt-nix = {19 url = "github:numtide/treefmt-nix";20 inputs.nixpkgs.follows = "nixpkgs";21 };22 crane.url = "github:ipetkov/crane";23 shelly.url = "github:CertainLach/shelly";2425 cpp-jsonnet-for-tests = {26 url = "github:google/jsonnet";27 flake = false;28 };29 go-jsonnet-for-tests = {30 url = "github:google/go-jsonnet";31 flake = false;32 };33 };34 outputs =35 inputs:36 let37 inherit (inputs.nixpkgs.lib)38 mkIf39 mkForce40 optionals41 optionalAttrs42 ;43 in44 inputs.flake-parts.lib.mkFlake { inherit inputs; } {45 imports = [46 inputs.shelly.flakeModule47 inputs.hercules-ci-effects.flakeModule48 ];49 systems = [50 "x86_64-linux"51 "i686-linux"52 "aarch64-linux"53 "armv7l-linux"54 "aarch64-darwin"55 ];56 perSystem =57 {58 config,59 self',60 system,61 ...62 }:63 let64 pkgs = import inputs.nixpkgs {65 inherit system;66 overlays = [ inputs.fenix.overlays.default ];67 config.allowUnsupportedSystem = true;68 config.allowUnfreePredicate = pkg: pkg.name == "Xcode.app";69 };70 targetArch = pkgs.stdenv.hostPlatform.parsed.cpu.name;71 rustfmt = (pkgs.fenix.complete or pkgs.fenix.stable).rustfmt;72 toolchain = pkgs.fenix.combine [73 ((pkgs.fenix.complete or pkgs.fenix.stable).withComponents [74 "cargo"75 "clippy"76 "rustc"77 "rust-src"78 "rustfmt"79 "rust-analyzer"80 ])81 pkgs.fenix.targets.wasm32-unknown-unknown.latest.rust-std82 ];83 craneLib = (inputs.crane.mkLib pkgs).overrideToolchain toolchain;84 treefmt =85 (inputs.treefmt-nix.lib.evalModule pkgs (import ./treefmt.nix { inherit rustfmt; })).config.build;8687 # Cross-compilation toolchains88 crossToolchain = pkgs.fenix.combine [89 (pkgs.fenix.stable.withComponents [90 "cargo"91 "rustc"92 ])93 pkgs.fenix.targets."${targetArch}-unknown-linux-musl".stable.rust-std94 pkgs.fenix.targets."${targetArch}-apple-darwin".stable.rust-std95 ];96 craneLibCross = (inputs.crane.mkLib pkgs).overrideToolchain crossToolchain;9798 # Windows cross-compilation99 pkgsWindows = import inputs.nixpkgs {100 overlays = [ inputs.fenix.overlays.default ];101 localSystem = system;102 crossSystem = {103 config = "${targetArch}-w64-mingw32";104 libc = "msvcrt";105 };106 };107 windowsToolchain = pkgs.fenix.combine [108 (pkgs.fenix.stable.withComponents [109 "cargo"110 "rustc"111 ])112 pkgs.fenix.targets."${targetArch}-pc-windows-gnu".stable.rust-std113 ];114 craneLibWindows = (inputs.crane.mkLib pkgsWindows).overrideToolchain (_: windowsToolchain);115116 in117 {118 legacyPackages = {119 release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (120 {121 jrsonnet-linux-glibc = self'.packages.jrsonnet;122 jrsonnet-experimental-linux-glibc = self'.packages.jrsonnet-experimental;123 }124 // optionalAttrs pkgs.stdenv.hostPlatform.is64bit rec {125 jrsonnet-linux-musl = pkgs.callPackage ./nix/jrsonnet-cross-musl.nix {126 craneLib = craneLibCross;127 targetTriple = "${targetArch}-unknown-linux-musl";128 muslCC = pkgs.pkgsMusl.stdenv.cc;129 };130 jrsonnet-experimental-linux-musl = jrsonnet-linux-musl.override {131 withExperimentalFeatures = true;132 };133 }134 // optionalAttrs (targetArch == "aarch64") rec {135 jrsonnet-darwin = pkgs.callPackage ./nix/jrsonnet-cross-darwin.nix {136 craneLib = craneLibCross;137 targetTriple = "${targetArch}-apple-darwin";138 };139 jrsonnet-experimental-darwin = jrsonnet-darwin.override {140 withExperimentalFeatures = true;141 };142 }143 // optionalAttrs (targetArch == "x86_64") rec {144 jrsonnet-windows = pkgsWindows.callPackage ./nix/jrsonnet-cross-windows.nix {145 craneLib = craneLibWindows;146 targetTriple = "${targetArch}-pc-windows-gnu";147 };148 jrsonnet-experimental-windows = jrsonnet-windows.override {149 withExperimentalFeatures = true;150 };151 }152 );153 benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {154 default = pkgs.callPackage ./nix/benchmarks.nix {155 inherit (config.legacyPackages.jsonnetImpls)156 go-jsonnet157 sjsonnet158 cpp-jsonnet159 rsjsonnet160 ;161 jrsonnetVariants = [162 {163 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };164 name = "";165 }166 ];167 };168 quick = pkgs.callPackage ./nix/benchmarks.nix {169 inherit (config.legacyPackages.jsonnetImpls)170 go-jsonnet171 sjsonnet172 cpp-jsonnet173 rsjsonnet174 ;175 quick = true;176 jrsonnetVariants = [177 {178 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };179 name = "";180 }181 ];182 };183 against-release = pkgs.callPackage ./nix/benchmarks.nix {184 inherit (config.legacyPackages.jsonnetImpls)185 go-jsonnet186 sjsonnet187 cpp-jsonnet188 rsjsonnet189 ;190 jrsonnetVariants = [191 {192 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };193 name = "current";194 }195 {196 drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };197 name = "current-experimental";198 }199 {200 drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };201 name = "release";202 }203 ];204 };205 quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {206 inherit (config.legacyPackages.jsonnetImpls)207 go-jsonnet208 sjsonnet209 cpp-jsonnet210 rsjsonnet211 ;212 quick = true;213 jrsonnetVariants = [214 {215 drv = self'.packages.jrsonnet.override { forBenchmarks = true; };216 name = "current";217 }218 {219 drv = self'.packages.jrsonnet-experimental.override { forBenchmarks = true; };220 name = "current-experimental";221 }222 {223 drv = self'.legacyPackages.jsonnetImpls.jrsonnet-release.override { forBenchmarks = true; };224 name = "release";225 }226 ];227 };228 };229 jsonnetImpls = {230 go-jsonnet = pkgs.callPackage ./nix/go-jsonnet.nix { };231 sjsonnet = pkgs.callPackage ./nix/sjsonnet.nix { };232 cpp-jsonnet = pkgs.callPackage ./nix/cpp-jsonnet.nix { };233 # I didn't managed to build it, and nixpkgs version is marked as broken234 # haskell-jsonnet = pkgs.callPackage ./nix/haskell-jsonnet.nix { };235 rsjsonnet = pkgs.callPackage ./nix/rsjsonnet.nix { };236 # Older released version of jrsonnet itself, for benchmarking purposes237 jrsonnet-release = pkgs.callPackage ./nix/jrsonnet-release.nix {238 rustPlatform = pkgs.makeRustPlatform {239 rustc = toolchain;240 cargo = toolchain;241 };242 };243 };244 };245 packages =246 let247 jrsonnet = pkgs.callPackage ./nix/jrsonnet.nix {248 inherit craneLib;249 inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;250 };251 jrsonnet-experimental = pkgs.callPackage ./nix/jrsonnet.nix {252 inherit craneLib;253 inherit (inputs) cpp-jsonnet-for-tests go-jsonnet-for-tests;254 withExperimentalFeatures = true;255 };256 in257 {258 default = jrsonnet;259 inherit jrsonnet jrsonnet-experimental;260 };261 checks = optionalAttrs (system != "armv7l-linux") {262 formatting = treefmt.check inputs.self;263 };264 formatter = mkIf (system != "armv7l-linux") treefmt.wrapper;265 shelly.shells.default = {266 factory = craneLib.devShell;267 packages =268 with pkgs;269 [270 cargo-edit271 cargo-outdated272 cargo-watch273 cargo-insta274 cargo-hack275 cargo-show-asm276 lld277 hyperfine278 graphviz279 ]280 ++ optionals (!stdenv.isDarwin) [281 valgrind282 kdePackages.kcachegrind283 samply284 ];285 environment = {286 CPP_JSONNET_FOR_TESTS = inputs.cpp-jsonnet-for-tests;287 GO_JSONNET_FOR_TESTS = inputs.go-jsonnet-for-tests;288 };289 };290 shelly.shells.impls = {291 packages =292 (with self'.legacyPackages.jsonnetImpls; [293 cpp-jsonnet294 go-jsonnet295 rsjsonnet296 sjsonnet297 ])298 ++ (with self'.packages; [299 jrsonnet300 ]);301 };302 };303 hercules-ci.github-releases.files =304 let305 rel = system: inputs.self.legacyPackages.${system}.release;306 bin = drv: "${drv}/bin/jrsonnet";307 exe = drv: "${drv}/bin/jrsonnet.exe";308 in309 [310 {311 label = "jrsonnet-x86_64-linux-musl";312 path = bin (rel "x86_64-linux").jrsonnet-linux-musl;313 }314 {315 label = "jrsonnet-experimental-x86_64-linux-musl";316 path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-musl;317 }318 {319 label = "jrsonnet-aarch64-darwin";320 path = bin (rel "aarch64-linux").jrsonnet-darwin;321 }322 {323 label = "jrsonnet-experimental-aarch64-darwin";324 path = bin (rel "aarch64-linux").jrsonnet-experimental-darwin;325 }326 {327 label = "jrsonnet-x86_64-windows.exe";328 path = exe (rel "x86_64-linux").jrsonnet-windows;329 }330 {331 label = "jrsonnet-experimental-x86_64-windows.exe";332 path = exe (rel "x86_64-linux").jrsonnet-experimental-windows;333 }334335 {336 label = "jrsonnet-aarch64-linux-musl";337 path = bin (rel "aarch64-linux").jrsonnet-linux-musl;338 }339 {340 label = "jrsonnet-experimental-aarch64-linux-musl";341 path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-musl;342 }343344 {345 label = "jrsonnet-x86_64-linux-glibc";346 path = bin (rel "x86_64-linux").jrsonnet-linux-glibc;347 }348 {349 label = "jrsonnet-experimental-x86_64-linux-glibc";350 path = bin (rel "x86_64-linux").jrsonnet-experimental-linux-glibc;351 }352 {353 label = "jrsonnet-aarch64-linux-glibc";354 path = bin (rel "aarch64-linux").jrsonnet-linux-glibc;355 }356 {357 label = "jrsonnet-experimental-aarch64-linux-glibc";358 path = bin (rel "aarch64-linux").jrsonnet-experimental-linux-glibc;359 }360 {361 label = "jrsonnet-i686-linux-glibc";362 path = bin (rel "i686-linux").jrsonnet-linux-glibc;363 }364 {365 label = "jrsonnet-experimental-i686-linux-glibc";366 path = bin (rel "i686-linux").jrsonnet-experimental-linux-glibc;367 }368 {369 label = "jrsonnet-armv7l-linux-glibc";370 path = bin (rel "armv7l-linux").jrsonnet-linux-glibc;371 }372 {373 label = "jrsonnet-experimental-armv7l-linux-glibc";374 path = bin (rel "armv7l-linux").jrsonnet-experimental-linux-glibc;375 }376 ];377 hercules-ci.cargo-publish = {378 enable = true;379 secretName = "crates-io";380 extraPublishArgs = [ "--workspace" ];381 assertVersions = true;382 };383 hercules-ci.flake-update = {384 enable = true;385 baseMerge.enable = true;386 baseMerge.method = "fast-forward";387 when = {388 dayOfWeek = [ "Sat" ];389 };390 };391 herculesCI =392 { lib, config, ... }:393 {394 ciSystems = [395 "x86_64-linux"396 "i686-linux"397 "aarch64-linux"398 "armv7l-linux"399 # TODO: add workers for these platforms400 # "aarch64-darwin"401 ];402 onPush.default.outputs = {403 benchmarks.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.benchmarks.default;404405 # Cross: musl/mingw/darwin-zigbuild406 release.x86_64-linux = inputs.self.legacyPackages.x86_64-linux.release;407 release.aarch64-linux = inputs.self.legacyPackages.aarch64-linux.release;408 release.armv7l-linux = inputs.self.legacyPackages.armv7l-linux.release;409 release.i686-linux = inputs.self.legacyPackages.i686-linux.release;410411 # Too much to build for CI purposes412 devShells = mkForce { };413 formatter = mkForce { };414415 # No need to run them on different arch, pretty large derivations and might try to compile GHC416 checks.i686-linux.formatting = mkForce { };417 checks.aarch64-linux.formatting = mkForce { };418 };419 };420 };421}xtask/src/bench.rsdiffbeforeafterboth--- a/xtask/src/bench.rs
+++ b/xtask/src/bench.rs
@@ -5,7 +5,7 @@
time::Instant,
};
-use anyhow::{bail, Result};
+use anyhow::{Result, bail};
use nix::{libc, sys::wait::WaitStatus, unistd::Pid};
#[derive(Debug, Clone)]
xtask/src/main.rsdiffbeforeafterboth--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -1,8 +1,8 @@
+use anyhow::Result;
#[cfg(not(target_os = "linux"))]
use anyhow::bail;
-use anyhow::Result;
use clap::Parser;
-use xshell::{cmd, Shell};
+use xshell::{Shell, cmd};
#[cfg(target_os = "linux")]
mod bench;