nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 267 lines 7.1 kB view raw
1{ 2 stdenvNoCC, 3 lib, 4 callPackage, 5 vmr, 6 xmlstarlet, 7 strip-nondeterminism, 8 zip, 9 nugetPackageHook, 10 baseName ? "dotnet", 11 fallbackTargetPackages ? { }, 12}: 13 14let 15 mkWrapper = callPackage ./wrapper.nix { }; 16 mkCommon = 17 type: args: 18 mkWrapper type ( 19 stdenvNoCC.mkDerivation ( 20 args 21 // { 22 outputs = args.outputs or [ "out" ] ++ [ "man" ]; 23 postFixup = args.postFixup or "" + '' 24 ln -s ${vmr.man} $man 25 ''; 26 propagatedSandboxProfile = lib.optionalString stdenvNoCC.hostPlatform.isDarwin '' 27 (allow file-read* (subpath "/private/var/db/mds/system")) 28 (allow mach-lookup (global-name "com.apple.SecurityServer") 29 (global-name "com.apple.system.opendirectoryd.membership")) 30 ''; 31 } 32 ) 33 ); 34 inherit (vmr) targetRid releaseManifest; 35 sdkVersion = releaseManifest.sdkVersion; 36 runtimeVersion = releaseManifest.runtimeVersion; 37 aspnetcoreVersion = releaseManifest.aspNetCoreVersion or releaseManifest.runtimeVersion; 38 39 # TODO: do this properly 40 hostRid = targetRid; 41 42 mkPackage = 43 pname: version: 44 stdenvNoCC.mkDerivation { 45 inherit pname version; 46 47 src = vmr; 48 dontUnpack = true; 49 50 nativeBuildInputs = [ 51 xmlstarlet 52 nugetPackageHook 53 ]; 54 55 installPhase = '' 56 runHook preInstall 57 58 mkdir -p "$out" 59 60 pushd "$src"/lib/Private.SourceBuilt.Artifacts.*.${targetRid} 61 pushd ${pname}.${version}.nupkg 62 63 xmlstarlet \ 64 sel -t \ 65 -m /_:package/_:metadata \ 66 -v _:id -nl \ 67 -v _:version -nl \ 68 *.nuspec | ( 69 read id 70 read version 71 id=''${id,,} 72 version=''${version,,} 73 mkdir -p "$out"/share/nuget/packages/"$id" 74 cp -r . "$out"/share/nuget/packages/"$id"/"$version" 75 cd "$out"/share/nuget/packages/"$id"/"$version" 76 chmod +w . 77 for dir in tools runtimes/*/native; do 78 [[ ! -d "$dir" ]] || chmod -R +x "$dir" 79 done 80 echo {} > .nupkg.metadata 81 ) 82 83 popd 84 popd 85 86 runHook postInstall 87 ''; 88 }; 89 90 packages = [ 91 (mkPackage "Microsoft.AspNetCore.App.Ref" aspnetcore.version) 92 (mkPackage "Microsoft.NETCore.DotNetAppHost" runtime.version) 93 (mkPackage "Microsoft.NETCore.App.Ref" runtime.version) 94 (mkPackage "Microsoft.DotNet.ILCompiler" runtime.version) 95 (mkPackage "Microsoft.NET.ILLink.Tasks" runtime.version) 96 (mkPackage "Microsoft.NETCore.App.Crossgen2.${hostRid}" runtime.version) 97 ] 98 ++ lib.optional vmr.hasILCompiler ( 99 mkPackage "runtime.${hostRid}.Microsoft.DotNet.ILCompiler" runtime.version 100 ) 101 ++ lib.optionals (lib.versionOlder runtime.version "9") [ 102 (mkPackage "Microsoft.NETCore.DotNetHost" runtime.version) 103 (mkPackage "Microsoft.NETCore.DotNetHostPolicy" runtime.version) 104 (mkPackage "Microsoft.NETCore.DotNetHostResolver" runtime.version) 105 ] 106 ++ targetPackages.${targetRid}; 107 108 targetPackages = fallbackTargetPackages // { 109 ${targetRid} = [ 110 (mkPackage "Microsoft.AspNetCore.App.Runtime.${targetRid}" aspnetcore.version) 111 (mkPackage "Microsoft.NETCore.App.Host.${targetRid}" runtime.version) 112 (mkPackage "Microsoft.NETCore.App.Runtime.${targetRid}" runtime.version) 113 (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetAppHost" runtime.version) 114 ] 115 ++ lib.optionals (lib.versionOlder runtime.version "9") [ 116 (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetHost" runtime.version) 117 (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetHostPolicy" runtime.version) 118 (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetHostResolver" runtime.version) 119 ] 120 ++ lib.optionals (lib.versionAtLeast runtime.version "10") [ 121 (mkPackage "Microsoft.NETCore.App.Runtime.NativeAOT.${targetRid}" runtime.version) 122 ]; 123 }; 124 125 sdk = mkCommon "sdk" { 126 pname = "${baseName}-sdk"; 127 version = sdkVersion; 128 129 src = vmr; 130 dontUnpack = true; 131 132 nativeBuildInputs = [ 133 xmlstarlet 134 strip-nondeterminism 135 zip 136 ]; 137 138 outputs = [ 139 "out" 140 "artifacts" 141 ]; 142 143 installPhase = '' 144 runHook preInstall 145 146 mkdir -p "$out"/share 147 cp -r "$src"/lib/dotnet-sdk-${sdkVersion}-${targetRid} "$out"/share/dotnet 148 chmod +w "$out"/share/dotnet 149 mkdir "$out"/bin 150 ln -s "$out"/share/dotnet/dotnet "$out"/bin/dotnet 151 152 mkdir -p "$artifacts" 153 cp -r "$src"/lib/Private.SourceBuilt.Artifacts.*.${targetRid}/* "$artifacts"/ 154 chmod +w -R "$artifacts" 155 156 local package 157 158 for package in "$artifacts"/{,SourceBuildReferencePackages/}*.nupkg; do 159 echo packing "$package" to artifacts 160 (cd "$package" && zip -rq0 "$package.tmp" .) 161 strip-nondeterminism --type zip "$package.tmp" 162 rm -r "$package" 163 mv "$package.tmp" "$package" 164 done 165 166 runHook postInstall 167 ''; 168 169 ${ 170 if stdenvNoCC.hostPlatform.isDarwin && lib.versionAtLeast sdkVersion "10" then 171 "postInstall" 172 else 173 null 174 } = 175 '' 176 mkdir -p "$out"/nix-support 177 cp "$src"/nix-support/manual-sdk-deps "$out"/nix-support/manual-sdk-deps 178 ''; 179 180 passthru = { 181 inherit (vmr) icu targetRid hasILCompiler; 182 183 inherit 184 packages 185 targetPackages 186 runtime 187 aspnetcore 188 ; 189 }; 190 191 meta = vmr.meta // { 192 mainProgram = "dotnet"; 193 }; 194 }; 195 196 runtime = mkCommon "runtime" { 197 pname = "${baseName}-runtime"; 198 version = runtimeVersion; 199 200 src = vmr; 201 dontUnpack = true; 202 203 installPhase = '' 204 runHook preInstall 205 206 mkdir -p "$out"/share 207 cp -r "$src/lib/dotnet-runtime-${runtimeVersion}-${targetRid}" "$out"/share/dotnet 208 chmod +w "$out"/share/dotnet 209 mkdir "$out"/bin 210 ln -s "$out"/share/dotnet/dotnet "$out"/bin/dotnet 211 212 runHook postInstall 213 ''; 214 215 passthru = { 216 inherit (vmr) icu; 217 }; 218 219 meta = vmr.meta // { 220 mainProgram = "dotnet"; 221 }; 222 }; 223 224 aspnetcore = mkCommon "aspnetcore" { 225 pname = "${baseName}-aspnetcore-runtime"; 226 version = aspnetcoreVersion; 227 228 src = vmr; 229 dontUnpack = true; 230 231 installPhase = '' 232 runHook preInstall 233 234 mkdir -p "$out"/share 235 cp -r "$src/lib/dotnet-runtime-${runtime.version}-${targetRid}" "$out"/share/dotnet 236 chmod +w "$out"/share/dotnet/shared 237 mkdir "$out"/bin 238 ln -s "$out"/share/dotnet/dotnet "$out"/bin/dotnet 239 240 cp -Tr "$src/lib/aspnetcore-runtime-${aspnetcoreVersion}-${targetRid}"/shared/Microsoft.AspNetCore.App "$out"/share/dotnet/shared/Microsoft.AspNetCore.App 241 chmod +w "$out"/share/dotnet/shared 242 243 runHook postInstall 244 ''; 245 246 passthru = { 247 inherit (vmr) icu; 248 }; 249 250 meta = vmr.meta // { 251 mainProgram = "dotnet"; 252 }; 253 }; 254in 255{ 256 inherit 257 vmr 258 sdk 259 runtime 260 aspnetcore 261 ; 262 263 packages = lib.recurseIntoAttrs ( 264 # recursion can't handle . in the attribute names 265 lib.genAttrs' packages (p: lib.nameValuePair (lib.replaceString "." "-" p.pname) p) 266 ); 267}