summary refs log tree commit diff
path: root/pkgs/build-support/dotnet
diff options
context:
space:
mode:
authormdarocha <git@mdarocha.pl>2022-07-15 16:53:58 +0200
committermdarocha <git@mdarocha.pl>2022-08-10 16:26:43 +0200
commit886280e8a9b84e6ddb45726baff904c4aab676f7 (patch)
tree65778ed9be8fc871dfd8c02f73778016e63b56d7 /pkgs/build-support/dotnet
parente444b88411b378847101ae2b7fc1a10ba3240ff4 (diff)
downloadnixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.tar
nixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.tar.gz
nixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.tar.bz2
nixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.tar.lz
nixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.tar.xz
nixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.tar.zst
nixpkgs-886280e8a9b84e6ddb45726baff904c4aab676f7.zip
buildDotnetModule: include sdk-specific packages in nuget source
Some packages are defined by the build proccess, and change every time
the dotnet-sdk package changes. To avoid having to regenerate every
dependant packages dependencies every dotnet update, this moves these
packages into the `dotnet-sdk` `passthru` attribute, and includes them
every time `buildDotnetModule` is used.
Diffstat (limited to 'pkgs/build-support/dotnet')
-rw-r--r--pkgs/build-support/dotnet/build-dotnet-module/default.nix24
1 files changed, 21 insertions, 3 deletions
diff --git a/pkgs/build-support/dotnet/build-dotnet-module/default.nix b/pkgs/build-support/dotnet/build-dotnet-module/default.nix
index 339eac16b0b..22b371a3d9a 100644
--- a/pkgs/build-support/dotnet/build-dotnet-module/default.nix
+++ b/pkgs/build-support/dotnet/build-dotnet-module/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenvNoCC, linkFarmFromDrvs, callPackage, nuget-to-nix, writeScript, makeWrapper, fetchurl, xml2, dotnetCorePackages, dotnetPackages, mkNugetSource, mkNugetDeps, cacert, srcOnly }:
+{ lib, stdenvNoCC, linkFarmFromDrvs, callPackage, nuget-to-nix, writeScript, makeWrapper, fetchurl, xml2, dotnetCorePackages, dotnetPackages, mkNugetSource, mkNugetDeps, cacert, srcOnly, symlinkJoin }:
 
 { name ? "${args.pname}-${args.version}"
 , pname ? name
@@ -84,12 +84,30 @@ let
     then nugetDeps
     else mkNugetDeps { inherit name; nugetDeps = import nugetDeps; };
 
-  nuget-source = mkNugetSource {
-    name = "${name}-nuget-source";
+  # contains the actual package dependencies
+  _dependenciesSource = mkNugetSource {
+    name = "${name}-dependencies-source";
     description = "A Nuget source with the dependencies for ${name}";
     deps = [ _nugetDeps ] ++ lib.optional (localDeps != null) localDeps;
   };
 
+  # this contains all the nuget packages that are implictly referenced by the dotnet
+  # build system. having them as separate deps allows us to avoid having to regenerate
+  # a packages dependencies when the dotnet-sdk version changes
+  _sdkDeps = mkNugetDeps {
+    name = "dotnet-sdk-${dotnet-sdk.version}-deps";
+    nugetDeps = dotnet-sdk.passthru.packages;
+  };
+
+  _sdkSource = mkNugetSource {
+    name = "dotnet-sdk-${dotnet-sdk.version}-source";
+    deps = [ _sdkDeps ];
+  };
+
+  nuget-source = symlinkJoin {
+    name = "${name}-nuget-source";
+    paths = [ _dependenciesSource _sdkSource ];
+  };
 in stdenvNoCC.mkDerivation (args // {
   nativeBuildInputs = args.nativeBuildInputs or [] ++ [
     dotnetConfigureHook