nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1dotnetInstallHook() {
2 echo "Executing dotnetInstallHook"
3
4 runHook preInstall
5
6 local -r dotnetInstallPath="${dotnetInstallPath-$out/lib/$pname}"
7 local -r dotnetBuildType="${dotnetBuildType-Release}"
8
9 if [[ -n $__structuredAttrs ]]; then
10 local dotnetProjectFilesArray=( "${dotnetProjectFiles[@]}" )
11 local dotnetFlagsArray=( "${dotnetFlags[@]}" )
12 local dotnetInstallFlagsArray=( "${dotnetInstallFlags[@]}" )
13 local dotnetPackFlagsArray=( "${dotnetPackFlags[@]}" )
14 local dotnetRuntimeIdsArray=( "${dotnetRuntimeIds[@]}" )
15 else
16 local dotnetProjectFilesArray=($dotnetProjectFiles)
17 local dotnetFlagsArray=($dotnetFlags)
18 local dotnetInstallFlagsArray=($dotnetInstallFlags)
19 local dotnetPackFlagsArray=($dotnetPackFlags)
20 local dotnetRuntimeIdsArray=($dotnetRuntimeIds)
21 fi
22
23 if [[ -v dotnetSelfContainedBuild ]]; then
24 if [[ -n $dotnetSelfContainedBuild ]]; then
25 dotnetInstallFlagsArray+=("--self-contained")
26 else
27 dotnetInstallFlagsArray+=("--no-self-contained")
28 # https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-self-contained
29 # Trimming is only available for self-contained build, so force disable it here
30 dotnetInstallFlagsArray+=("-p:PublishTrimmed=false")
31 fi
32 fi
33
34 if [[ -n ${dotnetUseAppHost-} ]]; then
35 dotnetInstallFlagsArray+=("-p:UseAppHost=true")
36 fi
37
38 if [[ -n ${enableParallelBuilding-} ]]; then
39 local -r maxCpuFlag="$NIX_BUILD_CORES"
40 else
41 local -r maxCpuFlag="1"
42 fi
43
44 dotnetPublish() {
45 local -r projectFile="${1-}"
46
47 for runtimeId in "${dotnetRuntimeIdsArray[@]}"; do
48 runtimeIdFlagsArray=()
49 if [[ $projectFile == *.csproj || -n ${dotnetSelfContainedBuild-} ]]; then
50 runtimeIdFlagsArray+=("--runtime" "$runtimeId")
51 fi
52
53 dotnet publish ${1+"$projectFile"} \
54 -maxcpucount:"$maxCpuFlag" \
55 -p:ContinuousIntegrationBuild=true \
56 -p:Deterministic=true \
57 -p:OverwriteReadOnlyFiles=true \
58 --output "$dotnetInstallPath" \
59 --configuration "$dotnetBuildType" \
60 --no-restore \
61 --no-build \
62 "${runtimeIdFlagsArray[@]}" \
63 "${dotnetInstallFlagsArray[@]}" \
64 "${dotnetFlagsArray[@]}"
65 done
66 }
67
68 dotnetPack() {
69 local -r projectFile="${1-}"
70
71 for runtimeId in "${dotnetRuntimeIdsArray[@]}"; do
72 dotnet pack ${1+"$projectFile"} \
73 -maxcpucount:"$maxCpuFlag" \
74 -p:ContinuousIntegrationBuild=true \
75 -p:Deterministic=true \
76 -p:OverwriteReadOnlyFiles=true \
77 --output "$out/share/nuget/source" \
78 --configuration "$dotnetBuildType" \
79 --no-restore \
80 --no-build \
81 --runtime "$runtimeId" \
82 "${dotnetPackFlagsArray[@]}" \
83 "${dotnetFlagsArray[@]}"
84 done
85 }
86
87 if (( ${#dotnetProjectFilesArray[@]} == 0 )); then
88 dotnetPublish
89 else
90 local projectFile
91 for projectFile in "${dotnetProjectFilesArray[@]}"; do
92 dotnetPublish "$projectFile"
93 done
94 fi
95
96 if [[ -n ${packNupkg-} ]]; then
97 if (( ${#dotnetProjectFilesArray[@]} == 0 )); then
98 dotnetPack
99 else
100 local projectFile
101 for projectFile in "${dotnetProjectFilesArray[@]}"; do
102 dotnetPack "$projectFile"
103 done
104 fi
105 fi
106
107 runHook postInstall
108
109 echo "Finished dotnetInstallHook"
110}
111
112if [[ -z "${dontDotnetInstall-}" && -z "${installPhase-}" ]]; then
113 installPhase=dotnetInstallHook
114fi