diff options
author | mdarocha <git@mdarocha.pl> | 2022-07-15 16:53:58 +0200 |
---|---|---|
committer | mdarocha <git@mdarocha.pl> | 2022-08-10 16:26:43 +0200 |
commit | 886280e8a9b84e6ddb45726baff904c4aab676f7 (patch) | |
tree | 65778ed9be8fc871dfd8c02f73778016e63b56d7 /pkgs/build-support/dotnet | |
parent | e444b88411b378847101ae2b7fc1a10ba3240ff4 (diff) | |
download | nixpkgs-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.nix | 24 |
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 |