writers: add writeGuile[Bin] (#364531)
[NixPkgs.git] / pkgs / by-name / ro / roslyn / package.nix
blob6ab2799f46c46c796850146cdaf4ab901f78cfce
1 { lib
2 , fetchFromGitHub
3 , mono
4 , buildDotnetModule
5 , dotnetCorePackages
6 , unzip
7 }:
9 buildDotnetModule rec {
10   pname = "roslyn";
11   version = "4.2.0";
13   src = fetchFromGitHub {
14     owner = "dotnet";
15     repo = "roslyn";
16     rev = "v${version}";
17     hash = "sha256-4iXabFp0LqJ8TXOrqeD+oTAocg6ZTIfijfX3s3fMJuI=";
18   };
20   dotnet-sdk = dotnetCorePackages.sdk_6_0;
22   projectFile = [ "src/NuGet/Microsoft.Net.Compilers.Toolset/Microsoft.Net.Compilers.Toolset.Package.csproj" ];
24   nugetDeps = ./deps.nix;
26   dontDotnetFixup = true;
28   nativeBuildInputs = [ unzip ];
30   postPatch = ''
31     sed -i 's/latestPatch/latestFeature/' global.json
32   '';
34   buildPhase = ''
35     runHook preBuild
37     dotnet msbuild -v:m -t:pack \
38       -p:Configuration=Release \
39       -p:RepositoryUrl="${meta.homepage}" \
40       -p:RepositoryCommit="v${version}" \
41       src/NuGet/Microsoft.Net.Compilers.Toolset/Microsoft.Net.Compilers.Toolset.Package.csproj
43     runHook postBuild
44   '';
46   installPhase = ''
47     pkg="$out/lib/dotnet/microsoft.net.compilers.toolset/${version}"
48     mkdir -p "$out/bin" "$pkg"
50     unzip -q artifacts/packages/Release/Shipping/Microsoft.Net.Compilers.Toolset.${version}-dev.nupkg \
51       -d "$pkg"
52     # nupkg has 0 permissions for a bunch of things
53     chmod -R +rw "$pkg"
55     makeWrapper ${mono}/bin/mono $out/bin/csc \
56       --add-flags "$pkg/tasks/net472/csc.exe"
57     makeWrapper ${mono}/bin/mono $out/bin/vbc \
58       --add-flags "$pkg/tasks/net472/vbc.exe"
59   '';
61   meta = with lib; {
62     description = ".NET C# and Visual Basic compiler";
63     homepage = "https://github.com/dotnet/roslyn";
64     mainProgram = "csc";
65     license = licenses.mit;
66     maintainers = with maintainers; [ corngood ];
67   };