dotnet: wrapper improvements (#362425)

This commit is contained in:
David McFarland
2024-12-06 15:02:13 -04:00
committed by GitHub
7 changed files with 18 additions and 20 deletions
@@ -52,8 +52,7 @@
{
name = "dotnet-fixup-hook";
substitutions = {
# this is used for DOTNET_ROOT, so we need unwrapped
dotnetRuntime = if (dotnet-runtime != null) then dotnet-runtime.unwrapped else null;
dotnetRuntime = if (dotnet-runtime != null) then dotnet-runtime else null;
wrapperPath = lib.makeBinPath [ which coreutils ];
};
}
+1 -1
View File
@@ -32,7 +32,7 @@
let
dyalogHome = "$out/lib/dyalog";
makeWrapperArgs = lib.optional dotnetSupport "--set DOTNET_ROOT ${dotnet-sdk_8.unwrapped}/share/dotnet";
makeWrapperArgs = lib.optional dotnetSupport "--set DOTNET_ROOT ${dotnet-sdk_8}/share/dotnet";
licenseUrl = "https://www.dyalog.com/uploads/documents/Developer_Software_Licence.pdf";
+1 -1
View File
@@ -36,7 +36,7 @@ let
cmakeFlags = [
"-DCORECLR_DIR=${coreclr-src}/src/coreclr"
"-DDOTNET_DIR=${dotnet-sdk.unwrapped}/share/dotnet"
"-DDOTNET_DIR=${dotnet-sdk}/share/dotnet"
"-DBUILD_MANAGED=0"
];
};
+1 -1
View File
@@ -93,7 +93,7 @@ buildPythonApplication rec {
VIRTUALENV_NO_DOWNLOAD=1 PRE_COMMIT_NO_CONCURRENCY=1 LANG=en_US.UTF-8
# Resolve `.NET location: Not found` errors for dotnet tests
export DOTNET_ROOT="${dotnet-sdk.unwrapped}/share/dotnet"
export DOTNET_ROOT="${dotnet-sdk}/share/dotnet"
export HOME=$(mktemp -d)
@@ -4,6 +4,7 @@ dotnetPackages:
makeWrapper,
lib,
symlinkJoin,
callPackage,
}:
# TODO: Rethink how we determine and/or get the CLI.
# Possible options raised in #187118:
@@ -12,15 +13,16 @@ dotnetPackages:
# 3. Something else?
let
cli = builtins.head dotnetPackages;
mkWrapper = callPackage ./wrapper.nix { };
in
assert lib.assertMsg ((builtins.length dotnetPackages) > 0) ''
You must include at least one package, e.g
`with dotnetCorePackages; combinePackages [
sdk_6_0 aspnetcore_7_0
];`'';
(buildEnv {
name = "dotnet-core-combined";
paths = map (x: x.unwrapped) dotnetPackages;
mkWrapper "sdk" (buildEnv {
name = "dotnet-combined";
paths = dotnetPackages;
pathsToLink = map (x: "/share/dotnet/${x}") [
"host"
"packs"
@@ -34,7 +36,7 @@ assert lib.assertMsg ((builtins.length dotnetPackages) > 0) ''
postBuild =
''
mkdir -p "$out"/share/dotnet
cp "${cli.unwrapped}"/share/dotnet/dotnet $out/share/dotnet
cp "${cli}"/share/dotnet/dotnet $out/share/dotnet
cp -R "${cli}"/nix-support "$out"/
mkdir "$out"/bin
ln -s "$out"/share/dotnet/dotnet "$out"/bin/dotnet
@@ -43,6 +45,8 @@ assert lib.assertMsg ((builtins.length dotnetPackages) > 0) ''
ln -s ${cli.man} $man
'';
passthru = {
pname = "dotnet";
version = "combined";
inherit (cli) icu;
versions = lib.catAttrs "version" dotnetPackages;
@@ -53,9 +57,4 @@ assert lib.assertMsg ((builtins.length dotnetPackages) > 0) ''
};
inherit (cli) meta;
}).overrideAttrs
({
outputs = [
"out"
] ++ lib.optional (cli ? man) "man";
})
})
@@ -46,8 +46,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
installPhase = ''
runHook preInstall
mkdir -p "$out"/bin "$out"/share/dotnet
mkdir -p "$out"/bin "$out"/share
ln -s "$src"/bin/* "$out"/bin
ln -s "$src"/share/dotnet "$out"/share
runHook postInstall
'';
@@ -125,8 +126,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
)
(
lib.optionalString (runtime != null) ''
# TODO: use runtime here
export DOTNET_ROOT=${runtime.unwrapped}/share/dotnet
export DOTNET_ROOT=${runtime}/share/dotnet
''
+ run
);
@@ -21,7 +21,7 @@ let
removeReferencesTo
];
postFixup = (oldAttrs.postFixup or "") + ''
remove-references-to -t ${dotnet-runtime.unwrapped} "$out/bin/Application"
remove-references-to -t ${dotnet-runtime} "$out/bin/Application"
'';
});
@@ -46,7 +46,7 @@ in
use-dotnet-root-env = testers.testEqualContents {
assertion = "buildDotnetModule uses DOTNET_ROOT from environment in wrapper";
expected = runtimeVersionFile;
actual = runCommand "use-dotnet-from-env-root-test" { env.DOTNET_ROOT = "${dotnet-runtime.unwrapped}/share/dotnet"; } ''
actual = runCommand "use-dotnet-from-env-root-test" { env.DOTNET_ROOT = "${dotnet-runtime}/share/dotnet"; } ''
${appWithoutFallback}/bin/Application >"$out"
'';
};