diff options
author | Ivv <41924494+IvarWithoutBones@users.noreply.github.com> | 2022-08-14 15:08:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-14 15:08:43 +0200 |
commit | 7ec728db17bc166e3c1186d27fde1345109e133c (patch) | |
tree | ff8894ab5f94c930e0ee6d67e05bbb13e9ffbd22 /pkgs/build-support | |
parent | 19f68737ffa5f3435f495d39dc9185d56afdef46 (diff) | |
parent | 08ebd9f0dfdb993ed355d75d01d9ed375ae434da (diff) |
Merge pull request #181512 from mdarocha/dotnet-6-update
dotnet-sdk: 6.0.301 -> 6.0.400, refactor to streamline dotnet updates
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/dotnet/build-dotnet-module/default.nix | 32 | ||||
-rw-r--r-- | pkgs/build-support/dotnet/nuget-to-nix/default.nix | 2 | ||||
-rwxr-xr-x | pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh | 8 |
3 files changed, 36 insertions, 6 deletions
diff --git a/pkgs/build-support/dotnet/build-dotnet-module/default.nix b/pkgs/build-support/dotnet/build-dotnet-module/default.nix index 339eac16b0b2d..1a5d499929ac0 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 @@ -116,7 +134,9 @@ in stdenvNoCC.mkDerivation (args // { passthru = { inherit nuget-source; - fetch-deps = writeScript "fetch-${pname}-deps" '' + fetch-deps = let + exclusions = dotnet-sdk.passthru.packages { fetchNuGet = attrs: attrs.pname; }; + in writeScript "fetch-${pname}-deps" '' set -euo pipefail cd "$(dirname "''${BASH_SOURCE[0]}")" @@ -146,8 +166,10 @@ in stdenvNoCC.mkDerivation (args // { ${lib.optionalString (dotnetFlags != []) (builtins.toString dotnetFlags)} done + echo "${lib.concatStringsSep "\n" exclusions}" > "$HOME/package_exclusions" + echo "Writing lockfile..." - ${nuget-to-nix}/bin/nuget-to-nix "$HOME/nuget_pkgs" > "$deps_file" + ${nuget-to-nix}/bin/nuget-to-nix "$HOME/nuget_pkgs" "$HOME/package_exclusions" > "$deps_file" echo "Succesfully wrote lockfile to: $deps_file" ''; } // args.passthru or {}; diff --git a/pkgs/build-support/dotnet/nuget-to-nix/default.nix b/pkgs/build-support/dotnet/nuget-to-nix/default.nix index 18757692e92d7..e3a3e45ac20cf 100644 --- a/pkgs/build-support/dotnet/nuget-to-nix/default.nix +++ b/pkgs/build-support/dotnet/nuget-to-nix/default.nix @@ -8,6 +8,7 @@ , gnused , jq , curl +, gnugrep }: runCommandLocal "nuget-to-nix" { @@ -22,6 +23,7 @@ runCommandLocal "nuget-to-nix" { gnused jq curl + gnugrep ]; }; diff --git a/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh b/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh index c8db14a4d918f..ad75cf6574b74 100755 --- a/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh +++ b/pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh @@ -5,11 +5,12 @@ set -euo pipefail export PATH="@binPath@" if [ $# -eq 0 ]; then - >&2 echo "Usage: $0 [packages directory] > deps.nix" + >&2 echo "Usage: $0 <packages directory> [path to file with a list of excluded packages] > deps.nix" exit 1 fi pkgs=$1 +exclusions=$2 tmpfile=$(mktemp /tmp/nuget-to-nix.XXXXXX) trap "rm -f ${tmpfile}" EXIT @@ -21,6 +22,11 @@ while read pkg_spec; do { read pkg_name; read pkg_version; } < <( # Build version part should be ignored: `3.0.0-beta2.20059.3+77df2220` -> `3.0.0-beta2.20059.3` sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkg_spec") + + if grep "$pkg_name" "$exclusions" > /dev/null; then + continue + fi + pkg_sha256="$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkg_spec")"/*.nupkg)" pkg_src="$(jq --raw-output '.source' "$(dirname "$pkg_spec")/.nupkg.metadata")" |