nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1dotnetBuildHook() {
2 echo "Executing dotnetBuildHook"
3
4 runHook preBuild
5
6 local -r dotnetBuildType="${dotnetBuildType-Release}"
7
8 if [[ -n $__structuredAttrs ]]; then
9 local dotnetProjectFilesArray=( "${dotnetProjectFiles[@]}" )
10 local dotnetTestProjectFilesArray=( "${dotnetTestProjectFiles[@]}" )
11 local dotnetFlagsArray=( "${dotnetFlags[@]}" )
12 local dotnetBuildFlagsArray=( "${dotnetBuildFlags[@]}" )
13 local dotnetRuntimeIdsArray=( "${dotnetRuntimeIds[@]}" )
14 else
15 local dotnetProjectFilesArray=($dotnetProjectFiles)
16 local dotnetTestProjectFilesArray=($dotnetTestProjectFiles)
17 local dotnetFlagsArray=($dotnetFlags)
18 local dotnetBuildFlagsArray=($dotnetBuildFlags)
19 local dotnetRuntimeIdsArray=($dotnetRuntimeIds)
20 fi
21
22 if [[ -n "${enableParallelBuilding-}" ]]; then
23 local -r maxCpuFlag="$NIX_BUILD_CORES"
24 local -r parallelBuildFlag="true"
25 else
26 local -r maxCpuFlag="1"
27 local -r parallelBuildFlag="false"
28 fi
29
30 if [[ -v dotnetSelfContainedBuild ]]; then
31 if [[ -n $dotnetSelfContainedBuild ]]; then
32 dotnetBuildFlagsArray+=("-p:SelfContained=true")
33 else
34 dotnetBuildFlagsArray+=("-p:SelfContained=false")
35 fi
36 fi
37
38 if [[ -n ${dotnetUseAppHost-} ]]; then
39 dotnetBuildFlagsArray+=("-p:UseAppHost=true")
40 fi
41
42 local versionFlagsArray=()
43 if [[ -n ${version-} ]]; then
44 versionFlagsArray+=("-p:InformationalVersion=$version")
45 fi
46
47 if [[ -n ${versionForDotnet-} ]]; then
48 versionFlagsArray+=("-p:Version=$versionForDotnet")
49 fi
50
51 dotnetBuild() {
52 local -r projectFile="${1-}"
53
54 for runtimeId in "${dotnetRuntimeIdsArray[@]}"; do
55 local runtimeIdFlagsArray=()
56 if [[ $projectFile == *.csproj || -n ${dotnetSelfContainedBuild-} ]]; then
57 runtimeIdFlagsArray+=("--runtime" "$runtimeId")
58 fi
59
60 dotnet build ${1+"$projectFile"} \
61 -maxcpucount:"$maxCpuFlag" \
62 -p:BuildInParallel="$parallelBuildFlag" \
63 -p:ContinuousIntegrationBuild=true \
64 -p:Deterministic=true \
65 -p:OverwriteReadOnlyFiles=true \
66 --configuration "$dotnetBuildType" \
67 --no-restore \
68 "${versionFlagsArray[@]}" \
69 "${runtimeIdFlagsArray[@]}" \
70 "${dotnetBuildFlagsArray[@]}" \
71 "${dotnetFlagsArray[@]}"
72 done
73 }
74
75 if (( ${#dotnetProjectFilesArray[@]} == 0 )); then
76 dotnetBuild
77 fi
78
79 local projectFile
80 for projectFile in "${dotnetProjectFilesArray[@]}" "${dotnetTestProjectFilesArray[@]}"; do
81 dotnetBuild "$projectFile"
82 done
83
84 runHook postBuild
85
86 echo "Finished dotnetBuildHook"
87}
88
89if [[ -z ${dontDotnetBuild-} && -z ${buildPhase-} ]]; then
90 buildPhase=dotnetBuildHook
91fi