Commit 6c639e86 authored by mdarocha's avatar mdarocha
Browse files

buildDotnetModule: tweaks to support paket

Projects that use paket, and have it setup so that it's executed
transparently during "dotnet restore" as a dotnet tool should now work.
parent 2c9ecd1f
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
, nuget-to-nix
, cacert
, coreutils
, runtimeShellPackage
}:

{ name ? "${args.pname}-${args.version}"
@@ -183,7 +184,7 @@ stdenvNoCC.mkDerivation (args // {
      writeShellScript "fetch-${pname}-deps" ''
        set -euo pipefail

        export PATH="${lib.makeBinPath [ coreutils dotnet-sdk (nuget-to-nix.override { inherit dotnet-sdk; }) ]}"
        export PATH="${lib.makeBinPath [ coreutils runtimeShellPackage dotnet-sdk (nuget-to-nix.override { inherit dotnet-sdk; }) ]}"

        for arg in "$@"; do
            case "$arg" in
@@ -262,7 +263,7 @@ stdenvNoCC.mkDerivation (args // {
        echo "Restoring project..."

        ${dotnet-sdk}/bin/dotnet tool restore
        mv $HOME/.nuget/packages/* $tmp/nuget_pkgs || true
        cp -r $HOME/.nuget/packages/* $tmp/nuget_pkgs || true

        for rid in "${lib.concatStringsSep "\" \"" runtimeIds}"; do
            (( ''${#projectFiles[@]} == 0 )) && dotnetRestore "" "$rid"
@@ -271,6 +272,8 @@ stdenvNoCC.mkDerivation (args // {
                dotnetRestore "$project" "$rid"
            done
        done
        # Second copy, makes sure packages restored by ie. paket are included
        cp -r $HOME/.nuget/packages/* $tmp/nuget_pkgs || true

        echo "Succesfully restored project"

+8 −2
Original line number Diff line number Diff line
@@ -25,8 +25,6 @@ dotnetConfigureHook() {
            ${dotnetFlags[@]}
    }

    (( "${#projectFile[@]}" == 0 )) && dotnetRestore

    # Generate a NuGet.config file to make sure everything,
    # including things like <Sdk /> dependencies, is restored from the proper source
cat <<EOF > "./NuGet.config"
@@ -39,8 +37,16 @@ cat <<EOF > "./NuGet.config"
</configuration>
EOF

    # Patch paket.dependencies and paket.lock (if found) to use the proper source. This ensures
    # paket restore works correctly
    # We use + instead of / in sed to avoid problems with slashes
    find -name paket.dependencies -exec sed -i 's+source .*+source @nugetSource@/lib+g' {} \;
    find -name paket.lock -exec sed -i 's+remote:.*+remote: @nugetSource@/lib+g' {} \;

    env dotnet tool restore --add-source "@nugetSource@/lib"

    (( "${#projectFile[@]}" == 0 )) && dotnetRestore

    for project in ${projectFile[@]} ${testProjectFile[@]-}; do
        dotnetRestore "$project"
    done
+160 −0

File added.

Preview size limit exceeded, changes collapsed.