52 lines
1.9 KiB
Nix
52 lines
1.9 KiB
Nix
{ src, pkgs, ... } @ args:
|
|
with pkgs;
|
|
let
|
|
# https://github.com/NixOS/nixpkgs/issues/130963
|
|
llvmPackages = if stdenv.isDarwin then llvmPackages_11 else llvmPackages_15;
|
|
cc = (ccacheWrapper.override rec {
|
|
cc = llvmPackages.clang;
|
|
extraConfig = ''
|
|
export CCACHE_DIR=/nix/var/cache/ccache
|
|
export CCACHE_UMASK=007
|
|
export CCACHE_BASE_DIR=$NIX_BUILD_TOP
|
|
# https://github.com/NixOS/nixpkgs/issues/109033
|
|
args=("$@")
|
|
for ((i=0; i<"''${#args[@]}"; i++)); do
|
|
case ''${args[i]} in
|
|
-frandom-seed=*) unset args[i]; break;;
|
|
esac
|
|
done
|
|
set -- "''${args[@]}"
|
|
[ -d $CCACHE_DIR ] || exec ${cc}/bin/$(basename "$0") "$@"
|
|
'';
|
|
}).overrideAttrs (old: {
|
|
# https://github.com/NixOS/nixpkgs/issues/119779
|
|
installPhase = builtins.replaceStrings ["use_response_file_by_default=1"] ["use_response_file_by_default=0"] old.installPhase;
|
|
});
|
|
stdenv' = if stdenv.isLinux then useGoldLinker stdenv else stdenv;
|
|
lean = callPackage (import ./bootstrap.nix) (args // {
|
|
stdenv = overrideCC stdenv' cc;
|
|
inherit src buildLeanPackage llvmPackages;
|
|
});
|
|
makeOverridableLeanPackage = f:
|
|
let newF = origArgs: f origArgs // {
|
|
overrideArgs = newArgs: makeOverridableLeanPackage f (origArgs // newArgs);
|
|
};
|
|
in lib.setFunctionArgs newF (lib.getFunctionArgs f) // {
|
|
override = args: makeOverridableLeanPackage (f.override args);
|
|
};
|
|
buildLeanPackage = makeOverridableLeanPackage (callPackage (import ./buildLeanPackage.nix) (args // {
|
|
inherit (lean) stdenv;
|
|
lean = lean.stage1;
|
|
inherit (lean.stage1) leanc;
|
|
}));
|
|
in {
|
|
inherit cc buildLeanPackage llvmPackages;
|
|
nixpkgs = pkgs;
|
|
ciShell = writeShellScriptBin "ciShell" ''
|
|
set -o pipefail
|
|
export PATH=${moreutils}/bin:$PATH
|
|
# prefix lines with cumulative and individual execution time
|
|
"$@" |& ts -i "(%.S)]" | ts -s "[%M:%S"
|
|
'';
|
|
} // lean.stage1
|