From c621c6bf2a003a3dab72d2ac08ec94ed7f031abf Mon Sep 17 00:00:00 2001 From: Konrad Malik Date: Fri, 24 Jan 2025 13:43:30 +0100 Subject: [PATCH] roslyn-ls: fix read-only cache dir (#376364) --- pkgs/by-name/ro/roslyn-ls/cachedirectory.patch | 13 +++++++++++++ pkgs/by-name/ro/roslyn-ls/package.nix | 11 ++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/ro/roslyn-ls/cachedirectory.patch diff --git a/pkgs/by-name/ro/roslyn-ls/cachedirectory.patch b/pkgs/by-name/ro/roslyn-ls/cachedirectory.patch new file mode 100644 index 000000000000..23aec8aa8af1 --- /dev/null +++ b/pkgs/by-name/ro/roslyn-ls/cachedirectory.patch @@ -0,0 +1,13 @@ +diff --git a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs +index 5c80f55e9dd..17373f36ebf 100644 +--- a/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs ++++ b/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs +@@ -97,7 +97,7 @@ static async Task RunAsync(ServerConfiguration serverConfiguration, Cancellation + var assemblyLoader = new CustomExportAssemblyLoader(extensionManager, loggerFactory); + var typeRefResolver = new ExtensionTypeRefResolver(assemblyLoader, loggerFactory); + +- var cacheDirectory = Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location)!, "cache"); ++ var cacheDirectory = Path.Combine(Environment.GetEnvironmentVariable("XDG_CACHE_HOME") ?? Path.Combine(Environment.GetEnvironmentVariable("HOME")!, ".cache"), "roslyn"); + + using var exportProvider = await ExportProviderBuilder.CreateExportProviderAsync(extensionManager, assemblyLoader, serverConfiguration.DevKitDependencyPath, cacheDirectory, loggerFactory); + diff --git a/pkgs/by-name/ro/roslyn-ls/package.nix b/pkgs/by-name/ro/roslyn-ls/package.nix index 52fe26f065cd..6e01757f5149 100644 --- a/pkgs/by-name/ro/roslyn-ls/package.nix +++ b/pkgs/by-name/ro/roslyn-ls/package.nix @@ -50,9 +50,14 @@ buildDotnetModule rec { nativeBuildInputs = [ jq ]; - # until upstream updates net6.0 here: - # https://github.com/dotnet/roslyn/blob/6cc106c0eaa9b0ae070dba3138a23aeab9b50c13/eng/targets/TargetFrameworks.props#L20 - patches = [ ./force-sdk_8_0.patch ]; + patches = [ + # until upstream updates net6.0 here: + # https://github.com/dotnet/roslyn/blob/6cc106c0eaa9b0ae070dba3138a23aeab9b50c13/eng/targets/TargetFrameworks.props#L20 + ./force-sdk_8_0.patch + # until made configurable/and or different location + # https://github.com/dotnet/roslyn/issues/76892 + ./cachedirectory.patch + ]; postPatch = '' # Upstream uses rollForward = latestPatch, which pins to an *exact* .NET SDK version.