nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 114 lines 3.9 kB view raw
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