{ inputs.lean.url = "../.."; inputs.flake-utils.follows = "lean/flake-utils"; inputs.temci.url = "github:Kha/temci"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; inputs.disable-st.url = "https://github.com/Kha/lean4/commit/no-st.patch"; inputs.disable-st.flake = false; outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem (system: { packages = rec { leanPkgs = inputs.lean.packages.${system}; pkgs = inputs.nixpkgs.legacyPackages.${system}; ocamlPkgs = pkgs.ocaml-ng.ocamlPackages; # for binarytrees.hs ghcPackages = p: [ p.parallel ]; ghc = pkgs.haskell.packages.ghc98.ghcWithPackages ghcPackages; #.override { withLLVM = true; }; ocaml = ocamlPkgs.ocaml; # note that this will need to be compiled from source ocamlFlambda = ocaml.override { flambdaSupport = true; }; mlton = pkgs.mltonHEAD; mlkit = pkgs.mlkit; swift = pkgs.swift; temci = inputs.temci.packages.${system}.default.override { doCheck = false; }; default = pkgs.stdenv.mkDerivation rec { name = "bench"; src = ./.; # we're not usually building Lean with Nix anymore #LEAN_BIN = "${leanPkgs.lean-all}/bin"; #LEAN_GCC_BIN = "${lean { stdenv = pkgs.gcc9Stdenv; }}/bin"; GHC = "${ghc}/bin/ghc"; OCAML = "${ocaml}/bin/ocamlopt.opt"; #OCAML_FLAMBDA = "${ocamlFlambda}/bin/ocamlopt.opt"; MLTON_BIN = "${mlton}/bin"; MLKIT = "${mlkit}/bin/mlkit"; SWIFTC = "${swift}/bin/swiftc"; TEMCI = "${temci}/bin/temci"; buildInputs = with pkgs; [ ((builtins.elemAt temci.nativeBuildInputs 0).withPackages (ps: [ temci ps.numpy ps.pyyaml ])) ocaml ocamlPkgs.findlib ocamlPkgs.domainslib temci pkgs.linuxPackages.perf time unixtools.column ]; patchPhase = '' patchShebangs . ''; makeFlags = [ "report_cross.csv" ]; installPhase = '' mkdir $out cp -r report *.csv $out ''; }; lean-variants = pkgs.stdenv.mkDerivation rec { name = "lean_bench"; src = ./.; LEAN_BIN = "${leanPkgs.lean-all}/bin"; LEAN_NO_REUSE_BIN = "${(leanPkgs.override (args: { src = pkgs.runCommand "lean-no-reuse-src" {} '' cp -r ${args.src} $out substituteInPlace $out/src/Lean/Compiler/IR.lean --replace "decls.map Decl.insertResetReuse" "decls" ''; })).stage2.lean-all}/bin"; LEAN_NO_BORROW_BIN = "${(leanPkgs.override (args: { src = pkgs.runCommand "lean-no-borrow-src" {} '' cp -r ${args.src} $out substituteInPlace $out/src/Lean/Compiler/IR.lean --replace "inferBorrow" "pure" ''; })).stage2.lean-all}/bin"; LEAN_NO_ST_BIN = "${(leanPkgs.override (args: { src = pkgs.runCommand "lean-no-st-src" {} '' cp -r ${args.src} $out chmod -R u+w $out cd $out patch -p1 < ${inputs.disable-st} ''; })).lean-all}/bin"; PARSER_TEST_FILE = ../../src/Init/Prelude.lean; buildInputs = with pkgs; [ ((builtins.elemAt temci.nativeBuildInputs 0).withPackages (ps: [ temci ps.numpy ps.pyyaml ])) temci pkgs.linuxPackages.perf time unixtools.column ]; patchPhase = '' patchShebangs . ''; makeFlags = [ "report_lean.csv" ]; installPhase = '' mkdir $out cp -r report *.csv $out ''; }; };}); }