* Treewide: re-run depotfmt * //third_party/nixpkgs:html5validator: build with Python 3.11, dependency openstackdocstheme doesn't support 3.12 * //users/sterni/machines/ingeborg: adapt to poorly handled fcgiwrap module API change: https://github.com/NixOS/nixpkgs/pull/318599 * //tvix/*-go: regenerate protobuf files * //third_party/nixpkgs:treefmt: Remove patch for merged pull request * //users/flokli/ipu6-softisp: rebase, drop upstreamed kernel patches Change-Id: Ie4e0df007c287e8cd6207683a9a25838aa5bd39a Reviewed-on: https://cl.tvl.fyi/c/depot/+/11971 Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: flokli <flokli@flokli.de> Reviewed-by: aspen <root@gws.fyi> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: Ilan Joselevich <personal@ilanjoselevich.com>
		
			
				
	
	
		
			110 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { stdenv
 | |
| , lib
 | |
| , pkgs
 | |
| , coreutils
 | |
| }:
 | |
| 
 | |
| { name ? "${baseAttrs.pname}-${baseAttrs.version}"
 | |
| , bazelTargets
 | |
| , bazel ? pkgs.bazel
 | |
| , depsHash
 | |
| , extraCacheInstall ? ""
 | |
| , extraBuildSetup ? ""
 | |
| , extraBuildInstall ? ""
 | |
| , ...
 | |
| }@baseAttrs:
 | |
| 
 | |
| let
 | |
|   cleanAttrs = lib.flip removeAttrs [
 | |
|     "bazelTargets"
 | |
|     "depsHash"
 | |
|     "extraCacheInstall"
 | |
|     "extraBuildSetup"
 | |
|     "extraBuildInstall"
 | |
|   ];
 | |
|   attrs = cleanAttrs baseAttrs;
 | |
| 
 | |
|   base = stdenv.mkDerivation (attrs // {
 | |
|     nativeBuildInputs = (attrs.nativeBuildInputs or [ ]) ++ [
 | |
|       bazel
 | |
|     ];
 | |
| 
 | |
|     preUnpack = ''
 | |
|       if [[ ! -d $HOME ]]; then
 | |
|         export HOME=$NIX_BUILD_TOP/home
 | |
|         mkdir -p $HOME
 | |
|       fi
 | |
|     '';
 | |
| 
 | |
|     bazelTargetNames = builtins.attrNames bazelTargets;
 | |
|   });
 | |
| 
 | |
|   cache = base.overrideAttrs (base: {
 | |
|     name = "${name}-deps";
 | |
| 
 | |
|     bazelPhase = "cache";
 | |
| 
 | |
|     buildPhase = ''
 | |
|       runHook preBuild
 | |
| 
 | |
|       bazel sync --repository_cache=repository-cache $bazelFlags "''${bazelFlagsArray[@]}"
 | |
|       bazel build --repository_cache=repository-cache --nobuild $bazelFlags "''${bazelFlagsArray[@]}" $bazelTargetNames
 | |
| 
 | |
|       runHook postBuild
 | |
|     '';
 | |
| 
 | |
|     installPhase = ''
 | |
|       runHook preInstall
 | |
| 
 | |
|       mkdir $out
 | |
|       echo "${bazel.version}" > $out/bazel_version
 | |
|       cp -R repository-cache $out/repository-cache
 | |
|       ${extraCacheInstall}
 | |
| 
 | |
|       runHook postInstall
 | |
|     '';
 | |
| 
 | |
|     outputHashMode = "recursive";
 | |
|     outputHash = depsHash;
 | |
|   });
 | |
| 
 | |
|   build = base.overrideAttrs (base: {
 | |
|     bazelPhase = "build";
 | |
| 
 | |
|     inherit cache;
 | |
| 
 | |
|     nativeBuildInputs = (base.nativeBuildInputs or [ ]) ++ [
 | |
|       coreutils
 | |
|     ];
 | |
| 
 | |
|     buildPhase = ''
 | |
|       runHook preBuild
 | |
| 
 | |
|       ${extraBuildSetup}
 | |
|       bazel build --repository_cache=$cache/repository-cache $bazelFlags "''${bazelFlagsArray[@]}" $bazelTargetNames
 | |
| 
 | |
|       runHook postBuild
 | |
|     '';
 | |
| 
 | |
|     installPhase = ''
 | |
|       runHook preInstall
 | |
| 
 | |
|       ${builtins.concatStringsSep "\n" (lib.mapAttrsToList (target: outPath: lib.optionalString (outPath != null) ''
 | |
|         TARGET_OUTPUTS="$(bazel cquery --repository_cache=$cache/repository-cache $bazelFlags "''${bazelFlagsArray[@]}" --output=files "${target}")"
 | |
|         if [[ "$(echo "$TARGET_OUTPUTS" | wc -l)" -gt 1 ]]; then
 | |
|           echo "Installing ${target}'s outputs ($TARGET_OUTPUTS) into ${outPath} as a directory"
 | |
|           mkdir -p "${outPath}"
 | |
|           cp $TARGET_OUTPUTS "${outPath}"
 | |
|         else
 | |
|           echo "Installing ${target}'s output ($TARGET_OUTPUTS) to ${outPath}"
 | |
|           mkdir -p "${dirOf outPath}"
 | |
|           cp "$TARGET_OUTPUTS" "${outPath}"
 | |
|         fi
 | |
|       '') bazelTargets)}
 | |
|       ${extraBuildInstall}
 | |
| 
 | |
|       runHook postInstall
 | |
|     '';
 | |
|   });
 | |
| in
 | |
| build
 |