diff --git a/pkgs/by-name/er/ersatztv/nuget-deps.json b/pkgs/by-name/er/ersatztv/nuget-deps.json index 84491619138b..e4c862ee5b5f 100644 --- a/pkgs/by-name/er/ersatztv/nuget-deps.json +++ b/pkgs/by-name/er/ersatztv/nuget-deps.json @@ -309,11 +309,6 @@ "version": "5.0.0", "hash": "sha256-THQ8Z7DAoMDEqAS7feAmAt82NvU7H90Y+jYwC7NwL+0=" }, - { - "pname": "Microsoft.AspNetCore.App.Internal.Assets", - "version": "10.0.2", - "hash": "sha256-nh+JRXHTI01RUDFeEw4yep4iMxci5R7zKyRX2Tkd/mc=" - }, { "pname": "Microsoft.AspNetCore.Authentication.JwtBearer", "version": "10.0.1", diff --git a/pkgs/development/compilers/dotnet/default.nix b/pkgs/development/compilers/dotnet/default.nix index 9e1f248e61cd..1519f5562271 100644 --- a/pkgs/development/compilers/dotnet/default.nix +++ b/pkgs/development/compilers/dotnet/default.nix @@ -100,71 +100,77 @@ let # combine an SDK with the runtime/packages from a base SDK combineSdk = - base: overlay: - if (overlay.runtime.version != base.runtime.version) then - throw "combineSdk: unable to combine ${overlay.name} with ${base.name} because runtime versions don't match (${overlay.runtime.version} != ${base.runtime.version})" + base: fallback: + if (fallback.runtime.version != base.runtime.version) then + throw "combineSdk: unable to combine ${fallback.name} with ${base.name} because runtime versions don't match (${fallback.runtime.version} != ${base.runtime.version})" + else if base.meta.broken then + fallback else - pkgs.callPackage ./wrapper.nix { } "sdk" ( - (pkgs.combinePackages [ - base.runtime - base.aspnetcore - (overlay.overrideAttrs (old: { - passthru = old.passthru // { - inherit (base) - packages - targetPackages - ; - }; - })) - ]).unwrapped.overrideAttrs - (old: { - name = overlay.unwrapped.name; - # resolve symlinks so DOTNET_ROOT is self-contained - postBuild = '' - mv "$out"/share/dotnet{,~} - cp -Lr "$out"/share/dotnet{~,} - rm -r "$out"/share/dotnet~ - '' - + old.postBuild; - passthru = - old.passthru - // ( - let - # if only overlay has a working ILCompiler, use it - hostRid = pkgs.systemToDotnetRid base.stdenv.hostPlatform.system; - hasILCompiler = base.hasILCompiler || overlay.hasILCompiler; - packageName = "runtime.${hostRid}.Microsoft.DotNet.ILCompiler"; - packages = - if !base.hasILCompiler && overlay.hasILCompiler then - lib.filter (x: x.pname != packageName) base.packages - ++ lib.filter (x: x.pname == packageName) overlay.packages - else - base.packages; - in - { - inherit hasILCompiler packages; + let + withBaseRuntimes = + if fallback.version == base.version then + base.unwrapped + else + (pkgs.combinePackages [ + base.runtime + base.aspnetcore + fallback + ]).unwrapped.overrideAttrs + (old: { + name = fallback.unwrapped.name; + # resolve symlinks so DOTNET_ROOT is self-contained + postBuild = '' + mv "$out"/share/dotnet{,~} + cp -Lr "$out"/share/dotnet{~,} + rm -r "$out"/share/dotnet~ + '' + + old.postBuild; + passthru = old.passthru // { inherit (base) - targetPackages runtime aspnetcore ; - inherit (overlay.unwrapped) + inherit (fallback.unwrapped) pname version ; - } - ); - }) - ); + }; + }); + + withFallbackPackages = withBaseRuntimes.overrideAttrs (old: { + passthru = + old.passthru + // ( + let + hostRid = pkgs.systemToDotnetRid base.stdenv.hostPlatform.system; + hasILCompiler = base.hasILCompiler || fallback.hasILCompiler; + packageName = "runtime.${hostRid}.Microsoft.DotNet.ILCompiler"; + mergePackages = + a: b: + let + names = lib.genAttrs' a (p: lib.nameValuePair p.pname null); + in + a ++ lib.filter (p: !lib.hasAttr p.pname names) b; + packages = mergePackages base.packages fallback.packages; + targetPackages = lib.mapAttrs ( + name: value: mergePackages value fallback.targetPackages.${name} + ) base.targetPackages; + in + { + inherit hasILCompiler packages targetPackages; + } + ); + }); + in + pkgs.callPackage ./wrapper.nix { } "sdk" withFallbackPackages; in pkgs // rec { # use binary SDK here to avoid downgrading feature band - sdk_8_0_1xx = if !pkgs.dotnet_8.vmr.meta.broken then pkgs.dotnet_8.sdk else pkgs.sdk_8_0_1xx-bin; - sdk_9_0_1xx = if !pkgs.dotnet_9.vmr.meta.broken then pkgs.dotnet_9.sdk else pkgs.sdk_9_0_1xx-bin; - sdk_10_0_1xx = - if !pkgs.dotnet_10.vmr.meta.broken then pkgs.dotnet_10.sdk else pkgs.sdk_10_0_1xx-bin; + sdk_8_0_1xx = combineSdk pkgs.dotnet_8.sdk pkgs.sdk_8_0_1xx-bin; + sdk_9_0_1xx = combineSdk pkgs.dotnet_9.sdk pkgs.sdk_9_0_1xx-bin; + sdk_10_0_1xx = combineSdk pkgs.dotnet_10.sdk pkgs.sdk_10_0_1xx-bin; # source-built SDK only exists for _1xx feature band # https://github.com/dotnet/source-build/issues/3667 sdk_8_0_4xx = combineSdk sdk_8_0_1xx pkgs.sdk_8_0_4xx-bin; @@ -172,9 +178,10 @@ pkgs sdk_8_0 = sdk_8_0_4xx; sdk_9_0 = sdk_9_0_3xx; sdk_10_0 = sdk_10_0_1xx; - sdk_8_0-source = sdk_8_0_1xx; - sdk_9_0-source = sdk_9_0_1xx; - sdk_10_0-source = sdk_10_0_1xx; + sdk_8_0-source = if !pkgs.dotnet_8.vmr.meta.broken then pkgs.dotnet_8.sdk else pkgs.sdk_8_0_1xx-bin; + sdk_9_0-source = if !pkgs.dotnet_9.vmr.meta.broken then pkgs.dotnet_9.sdk else pkgs.sdk_9_0_1xx-bin; + sdk_10_0-source = + if !pkgs.dotnet_10.vmr.meta.broken then pkgs.dotnet_10.sdk else pkgs.sdk_10_0_1xx-bin; runtime_8_0 = sdk_8_0.runtime; runtime_9_0 = sdk_9_0.runtime; runtime_10_0 = sdk_10_0.runtime; diff --git a/pkgs/development/compilers/dotnet/packages.nix b/pkgs/development/compilers/dotnet/packages.nix index ea526b2212a5..6be556fe204c 100644 --- a/pkgs/development/compilers/dotnet/packages.nix +++ b/pkgs/development/compilers/dotnet/packages.nix @@ -94,8 +94,10 @@ let (mkPackage "Microsoft.DotNet.ILCompiler" runtime.version) (mkPackage "Microsoft.NET.ILLink.Tasks" runtime.version) (mkPackage "Microsoft.NETCore.App.Crossgen2.${hostRid}" runtime.version) - (mkPackage "runtime.${hostRid}.Microsoft.DotNet.ILCompiler" runtime.version) ] + ++ lib.optional vmr.hasILCompiler ( + mkPackage "runtime.${hostRid}.Microsoft.DotNet.ILCompiler" runtime.version + ) ++ lib.optionals (lib.versionOlder runtime.version "9") [ (mkPackage "Microsoft.NETCore.DotNetHost" runtime.version) (mkPackage "Microsoft.NETCore.DotNetHostPolicy" runtime.version) @@ -114,6 +116,9 @@ let (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetHost" runtime.version) (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetHostPolicy" runtime.version) (mkPackage "runtime.${targetRid}.Microsoft.NETCore.DotNetHostResolver" runtime.version) + ] + ++ lib.optionals (lib.versionAtLeast runtime.version "10") [ + (mkPackage "Microsoft.NETCore.App.Runtime.NativeAOT.${targetRid}" runtime.version) ]; }; diff --git a/pkgs/development/compilers/dotnet/update.sh b/pkgs/development/compilers/dotnet/update.sh index 132ea56874bc..2be0a8843ba9 100755 --- a/pkgs/development/compilers/dotnet/update.sh +++ b/pkgs/development/compilers/dotnet/update.sh @@ -128,6 +128,12 @@ aspnetcore_packages () { Microsoft.AspNetCore.App.Ref ) + if versionAtLeast "$version" 10; then + pkgs+=( + Microsoft.AspNetCore.App.Internal.Assets + ) + fi + generate_package_list "$version" ' ' "${pkgs[@]}" } diff --git a/pkgs/development/compilers/dotnet/versions/10.0.nix b/pkgs/development/compilers/dotnet/versions/10.0.nix index b5afc79b4c03..ab60243c61b8 100644 --- a/pkgs/development/compilers/dotnet/versions/10.0.nix +++ b/pkgs/development/compilers/dotnet/versions/10.0.nix @@ -14,6 +14,11 @@ let version = "10.0.2"; hash = "sha512-MeDkxsB9ir694B2z0nIG7ZZ6DISLmbU7aOwCusO6AadYjitxjv+e9TuY1Y0ijwuYNjxukBIj45nF/fCEg6CGHw=="; }) + (fetchNupkg { + pname = "Microsoft.AspNetCore.App.Internal.Assets"; + version = "10.0.2"; + hash = "sha512-v9Au9ZSo3ZOe77StttCPCtOZkY7xSFXSyyWMR9Y0Kx3ZKegVp4zg7TJwz4osTgQp7EKyXlbDpvjUbgly51XbmA=="; + }) (fetchNupkg { pname = "Microsoft.NETCore.DotNetAppHost"; version = "10.0.2"; diff --git a/pkgs/development/compilers/dotnet/wrapper.nix b/pkgs/development/compilers/dotnet/wrapper.nix index e4cf6e158f71..1e66c4dbd0de 100644 --- a/pkgs/development/compilers/dotnet/wrapper.nix +++ b/pkgs/development/compilers/dotnet/wrapper.nix @@ -33,6 +33,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { license maintainers platforms + broken ; };