lol

buildDotnetModule: create nuget source seperately && use stdenvNoCC

authored by

IvarWithoutBones and committed by
Jonathan Ringer
bc193f80 31b49559

+29 -11
+29 -11
pkgs/build-support/build-dotnet-module/default.nix
··· 1 - { lib, stdenv, makeWrapper, dotnetCorePackages, dotnetPackages, cacert, linkFarmFromDrvs, fetchurl }: 1 + { lib, stdenvNoCC, linkFarmFromDrvs, makeWrapper, fetchurl, xml2, dotnetCorePackages, dotnetPackages, cacert }: 2 2 3 3 { name ? "${args.pname}-${args.version}" 4 4 , enableParallelBuilding ? true ··· 50 50 }; 51 51 }); 52 52 53 - package = stdenv.mkDerivation (args // { 53 + nuget-source = stdenvNoCC.mkDerivation rec { 54 + name = "${args.pname}-nuget-source"; 55 + meta.description = "A Nuget source with the dependencies for ${args.pname}"; 56 + 57 + nativeBuildInputs = [ dotnetPackages.Nuget xml2 ]; 58 + buildCommand = '' 59 + export HOME=$(mktemp -d) 60 + mkdir -p $out/{lib,share} 61 + 62 + nuget sources Add -Name nixos -Source "$out/lib" 63 + nuget init "${_nugetDeps}" "$out/lib" 64 + 65 + # Generates a list of all unique licenses' spdx ids. 66 + find "$out/lib" -name "*.nuspec" -exec sh -c \ 67 + "xml2 < {} | grep "license=" | cut -d'=' -f2" \; | sort -u > $out/share/licenses 68 + ''; 69 + } // { # This is done because we need data from `$out` for `meta`. We have to use overrides as to not hit infinite recursion. 70 + meta.licence = let 71 + depLicenses = lib.splitString "\n" (builtins.readFile "${nuget-source}/share/licenses"); 72 + getLicence = spdx: lib.filter (license: license.spdxId or null == spdx) (builtins.attrValues lib.licenses); 73 + in (lib.flatten (lib.forEach depLicenses (spdx: 74 + if (getLicence spdx) != [] then (getLicence spdx) else [] ++ lib.optional (spdx != "") spdx 75 + ))); 76 + }; 77 + 78 + package = stdenvNoCC.mkDerivation (args // { 54 79 inherit buildType; 55 80 56 - nativeBuildInputs = args.nativeBuildInputs or [] ++ [ dotnet-sdk dotnetPackages.Nuget cacert makeWrapper ]; 81 + nativeBuildInputs = args.nativeBuildInputs or [] ++ [ dotnet-sdk cacert makeWrapper ]; 57 82 58 83 # Stripping breaks the executable 59 84 dontStrip = true; ··· 66 91 67 92 export HOME=$(mktemp -d) 68 93 69 - nuget sources Add -Name nixos -Source "$PWD/nixos" 70 - nuget init "${_nugetDeps}" "$PWD/nixos" 71 - 72 - # This is required due to https://github.com/NuGet/Home/issues/4413. 73 - mkdir -p $HOME/.nuget/NuGet 74 - cp $HOME/.config/NuGet/NuGet.Config $HOME/.nuget/NuGet 75 - 76 94 dotnet restore "$projectFile" \ 77 95 ${lib.optionalString (!enableParallelBuilding) "--disable-parallel"} \ 78 96 -p:ContinuousIntegrationBuild=true \ 79 97 -p:Deterministic=true \ 80 - --source "$PWD/nixos" \ 98 + --source "${nuget-source}/lib" \ 81 99 "''${dotnetRestoreFlags[@]}" \ 82 100 "''${dotnetFlags[@]}" 83 101