Skip to content

Commit 2c584d8

Browse files
authored
Merge pull request #10235 from hvitved/csharp/remove-legacy-tracer
C#: Remove legacy tracer support
2 parents 6cee635 + 18b5ab0 commit 2c584d8

File tree

9 files changed

+46
-107
lines changed

9 files changed

+46
-107
lines changed

csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ public void TestDefaultCSharpAutoBuilder()
413413
actions.RunProcess["cmd.exe /C dotnet --info"] = 0;
414414
actions.RunProcess[@"cmd.exe /C dotnet clean C:\Project\test.csproj"] = 0;
415415
actions.RunProcess[@"cmd.exe /C dotnet restore C:\Project\test.csproj"] = 0;
416-
actions.RunProcess[@"cmd.exe /C dotnet build --no-incremental /p:UseSharedCompilation=false C:\Project\test.csproj"] = 0;
416+
actions.RunProcess[@"cmd.exe /C dotnet build --no-incremental C:\Project\test.csproj"] = 0;
417417
actions.FileExists["csharp.log"] = true;
418418
actions.FileExists[@"C:\Project\test.csproj"] = true;
419419
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
@@ -440,7 +440,7 @@ public void TestLinuxCSharpAutoBuilder()
440440
actions.RunProcess["dotnet --info"] = 0;
441441
actions.RunProcess[@"dotnet clean C:\Project/test.csproj"] = 0;
442442
actions.RunProcess[@"dotnet restore C:\Project/test.csproj"] = 0;
443-
actions.RunProcess[@"dotnet build --no-incremental /p:UseSharedCompilation=false C:\Project/test.csproj"] = 0;
443+
actions.RunProcess[@"dotnet build --no-incremental C:\Project/test.csproj"] = 0;
444444
actions.FileExists["csharp.log"] = true;
445445
actions.FileExists[@"C:\Project/test.csproj"] = true;
446446
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
@@ -715,9 +715,9 @@ public void TestWindowsCmdIgnoreErrors()
715715
public void TestWindowCSharpMsBuild()
716716
{
717717
actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\test1.sln -DisableParallelProcessing"] = 0;
718-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
718+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
719719
actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\test2.sln -DisableParallelProcessing"] = 0;
720-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
720+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
721721
actions.FileExists["csharp.log"] = true;
722722
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
723723
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
@@ -746,9 +746,9 @@ public void TestWindowCSharpMsBuild()
746746
public void TestWindowCSharpMsBuildMultipleSolutions()
747747
{
748748
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test1.csproj -DisableParallelProcessing"] = 0;
749-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.csproj /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
749+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.csproj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
750750
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test2.csproj -DisableParallelProcessing"] = 0;
751-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.csproj /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
751+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.csproj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
752752
actions.FileExists["csharp.log"] = true;
753753
actions.FileExists[@"C:\Project\test1.csproj"] = true;
754754
actions.FileExists[@"C:\Project\test2.csproj"] = true;
@@ -791,7 +791,7 @@ public void TestWindowCSharpMsBuildMultipleSolutions()
791791
public void TestWindowCSharpMsBuildFailed()
792792
{
793793
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\test1.sln -DisableParallelProcessing"] = 0;
794-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 1;
794+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 1;
795795
actions.FileExists["csharp.log"] = true;
796796
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
797797
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
@@ -817,8 +817,8 @@ public void TestWindowCSharpMsBuildFailed()
817817
[Fact]
818818
public void TestSkipNugetMsBuild()
819819
{
820-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
821-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
820+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test1.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
821+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\test2.sln /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
822822
actions.FileExists["csharp.log"] = true;
823823
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
824824
actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
@@ -862,7 +862,7 @@ public void TestSkipNugetDotnet()
862862
actions.RunProcess["dotnet --info"] = 0;
863863
actions.RunProcess[@"dotnet clean C:\Project/test.csproj"] = 0;
864864
actions.RunProcess[@"dotnet restore C:\Project/test.csproj"] = 0;
865-
actions.RunProcess[@"dotnet build --no-incremental /p:UseSharedCompilation=false --no-restore C:\Project/test.csproj"] = 0;
865+
actions.RunProcess[@"dotnet build --no-incremental --no-restore C:\Project/test.csproj"] = 0;
866866
actions.FileExists["csharp.log"] = true;
867867
actions.FileExists[@"C:\Project/test.csproj"] = true;
868868
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
@@ -894,7 +894,7 @@ public void TestDotnetVersionNotInstalled()
894894
actions.RunProcess[@"C:\Project/.dotnet/dotnet --info"] = 0;
895895
actions.RunProcess[@"C:\Project/.dotnet/dotnet clean C:\Project/test.csproj"] = 0;
896896
actions.RunProcess[@"C:\Project/.dotnet/dotnet restore C:\Project/test.csproj"] = 0;
897-
actions.RunProcess[@"C:\Project/.dotnet/dotnet build --no-incremental /p:UseSharedCompilation=false C:\Project/test.csproj"] = 0;
897+
actions.RunProcess[@"C:\Project/.dotnet/dotnet build --no-incremental C:\Project/test.csproj"] = 0;
898898
actions.FileExists["csharp.log"] = true;
899899
actions.FileExists["test.csproj"] = true;
900900
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
@@ -929,7 +929,7 @@ public void TestDotnetVersionAlreadyInstalled()
929929
actions.RunProcess[@"C:\Project/.dotnet/dotnet --info"] = 0;
930930
actions.RunProcess[@"C:\Project/.dotnet/dotnet clean C:\Project/test.csproj"] = 0;
931931
actions.RunProcess[@"C:\Project/.dotnet/dotnet restore C:\Project/test.csproj"] = 0;
932-
actions.RunProcess[@"C:\Project/.dotnet/dotnet build --no-incremental /p:UseSharedCompilation=false C:\Project/test.csproj"] = 0;
932+
actions.RunProcess[@"C:\Project/.dotnet/dotnet build --no-incremental C:\Project/test.csproj"] = 0;
933933
actions.FileExists["csharp.log"] = true;
934934
actions.FileExists["test.csproj"] = true;
935935
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
@@ -960,7 +960,7 @@ private void TestDotnetVersionWindows(Action action, int commandsRun)
960960
actions.RunProcess[@"cmd.exe /C C:\Project\.dotnet\dotnet --info"] = 0;
961961
actions.RunProcess[@"cmd.exe /C C:\Project\.dotnet\dotnet clean C:\Project\test.csproj"] = 0;
962962
actions.RunProcess[@"cmd.exe /C C:\Project\.dotnet\dotnet restore C:\Project\test.csproj"] = 0;
963-
actions.RunProcess[@"cmd.exe /C C:\Project\.dotnet\dotnet build --no-incremental /p:UseSharedCompilation=false C:\Project\test.csproj"] = 0;
963+
actions.RunProcess[@"cmd.exe /C C:\Project\.dotnet\dotnet build --no-incremental C:\Project\test.csproj"] = 0;
964964
actions.FileExists["csharp.log"] = true;
965965
actions.FileExists[@"C:\Project\test.csproj"] = true;
966966
actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
@@ -1008,7 +1008,7 @@ public void TestDirsProjWindows()
10081008
{
10091009
actions.RunProcess[@"cmd.exe /C nuget restore C:\Project\dirs.proj -DisableParallelProcessing"] = 1;
10101010
actions.RunProcess[@"cmd.exe /C C:\Project\.nuget\nuget.exe restore C:\Project\dirs.proj -DisableParallelProcessing"] = 0;
1011-
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\dirs.proj /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
1011+
actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && set Platform=&& type NUL && msbuild C:\\Project\\dirs.proj /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /P:Fu=Bar"] = 0;
10121012
actions.FileExists["csharp.log"] = true;
10131013
actions.FileExists[@"C:\Project\a\test.csproj"] = true;
10141014
actions.FileExists[@"C:\Project\dirs.proj"] = true;
@@ -1052,7 +1052,7 @@ public void TestDirsProjLinux()
10521052
{
10531053
actions.RunProcess[@"nuget restore C:\Project/dirs.proj -DisableParallelProcessing"] = 1;
10541054
actions.RunProcess[@"mono C:\Project/.nuget/nuget.exe restore C:\Project/dirs.proj -DisableParallelProcessing"] = 0;
1055-
actions.RunProcess[@"msbuild C:\Project/dirs.proj /p:UseSharedCompilation=false /t:rebuild /p:MvcBuildViews=true"] = 0;
1055+
actions.RunProcess[@"msbuild C:\Project/dirs.proj /t:rebuild"] = 0;
10561056
actions.FileExists["csharp.log"] = true;
10571057
actions.FileExists[@"C:\Project/a/test.csproj"] = true;
10581058
actions.FileExists[@"C:\Project/dirs.proj"] = true;

csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Collections.Generic;
66
using System.IO;
77
using Semmle.Util;
8-
using System.Text.RegularExpressions;
98
using Semmle.Autobuild.Shared;
109

1110
namespace Semmle.Autobuild.CSharp
@@ -81,9 +80,6 @@ private static BuildScript WithDotNet(Autobuilder builder, Func<string?, IDictio
8180
env = null;
8281
}
8382

84-
if (env is null)
85-
env = new Dictionary<string, string>();
86-
env.Add("UseSharedCompilation", "false");
8783
return f(installDir, env);
8884
});
8985
}
@@ -245,8 +241,7 @@ private static BuildScript GetBuildScript(Autobuilder builder, string? dotNetPat
245241
Argument("--no-incremental");
246242

247243
return
248-
script.Argument("/p:UseSharedCompilation=false").
249-
Argument(builder.Options.DotNetArguments).
244+
script.Argument(builder.Options.DotNetArguments).
250245
QuoteArgument(projOrSln).
251246
Script;
252247
}

csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,6 @@ BuildScript GetNugetRestoreScript() =>
9898
command.RunCommand(msBuild);
9999
command.QuoteArgument(projectOrSolution.FullPath);
100100

101-
command.Argument("/p:UseSharedCompilation=false");
102-
103101
var target = builder.Options.MsBuildTarget ?? "rebuild";
104102
var platform = builder.Options.MsBuildPlatform ?? (projectOrSolution is ISolution s1 ? s1.DefaultPlatformName : null);
105103
var configuration = builder.Options.MsBuildConfiguration ?? (projectOrSolution is ISolution s2 ? s2.DefaultConfigurationName : null);
@@ -109,7 +107,6 @@ BuildScript GetNugetRestoreScript() =>
109107
command.Argument(string.Format("/p:Platform=\"{0}\"", platform));
110108
if (configuration is not null)
111109
command.Argument(string.Format("/p:Configuration=\"{0}\"", configuration));
112-
command.Argument("/p:MvcBuildViews=true");
113110

114111
command.Argument(builder.Options.MsBuildArguments);
115112

csharp/extractor/Semmle.Extraction.CSharp.Driver/Driver.cs

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,6 @@ public static int Main(string[] args)
1313
{
1414
Extractor.SetInvariantCulture();
1515

16-
Console.WriteLine($"Semmle.Extraction.CSharp.Driver: called with {string.Join(", ", args)}");
17-
18-
if (args.Length > 0 && args[0] == "--dotnetexec")
19-
{
20-
var compilerRegEx = new Regex(@"csc\.exe|mcs\.exe|csc\.dll", RegexOptions.Compiled);
21-
for (var i = 1; i < args.Length; i++)
22-
{
23-
if (compilerRegEx.IsMatch(args[i]))
24-
{
25-
var argsList = new List<string>();
26-
argsList.Add("--compiler");
27-
argsList.Add(args[i]);
28-
if (i + 1 < args.Length)
29-
argsList.AddRange(args[(i + 1)..]);
30-
return (int)Extractor.Run(argsList.ToArray());
31-
}
32-
}
33-
34-
Console.WriteLine($"Semmle.Extraction.CSharp.Driver: not a compiler invocation");
35-
return 0;
36-
}
37-
3816
return (int)Extractor.Run(args);
3917
}
4018
}

csharp/ql/src/Stubs/make_stubs_nuget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def run_cmd(cmd, msg="Failed to run command"):
7777

7878
print("\n* Creating DB")
7979
run_cmd(['codeql', 'database', 'create', dbDir, '--language=csharp',
80-
'--command', 'dotnet build /t:rebuild /p:UseSharedCompilation=false ' + projectDirIn])
80+
'--command', 'dotnet build /t:rebuild ' + projectDirIn])
8181

8282
if not os.path.isdir(dbDir):
8383
print("Expected database directory " + dbDir + " not found.")

csharp/tools/linux64/compiler-tracing.spec

Lines changed: 0 additions & 14 deletions
This file was deleted.

csharp/tools/osx64/compiler-tracing.spec

Lines changed: 0 additions & 14 deletions
This file was deleted.

csharp/tools/tracing-config.lua

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
function RegisterExtractorPack(id)
2-
local extractor = GetPlatformToolsDirectory() ..
3-
'Semmle.Extraction.CSharp.Driver'
4-
if OperatingSystem == 'windows' then extractor = extractor .. '.exe' end
2+
function Exify(path)
3+
if OperatingSystem == 'windows' then return path .. '.exe' else return path end
4+
end
5+
6+
local extractor = Exify(GetPlatformToolsDirectory() .. 'Semmle.Extraction.CSharp.Driver')
57

68
function DotnetMatcherBuild(compilerName, compilerPath, compilerArguments,
79
_languageId)
@@ -48,10 +50,30 @@ function RegisterExtractorPack(id)
4850
return nil
4951
end
5052

53+
function MsBuildMatcher(compilerName, compilerPath, compilerArguments, _languageId)
54+
if MatchCompilerName('^' .. Exify('msbuild') .. '$', compilerName, compilerPath,
55+
compilerArguments) or
56+
MatchCompilerName('^' .. Exify('xbuild') .. '$', compilerName, compilerPath,
57+
compilerArguments) then
58+
return {
59+
order = ORDER_REPLACE,
60+
invocation = BuildExtractorInvocation(id, compilerPath,
61+
compilerPath,
62+
compilerArguments,
63+
nil, {
64+
'/p:UseSharedCompilation=false',
65+
'/p:MvcBuildViews=true'
66+
})
67+
68+
}
69+
end
70+
end
71+
5172
local windowsMatchers = {
5273
DotnetMatcherBuild,
74+
MsBuildMatcher,
5375
CreatePatternMatcher({ '^csc.*%.exe$' }, MatchCompilerName, extractor, {
54-
prepend = {'--compiler', '"${compiler}"' },
76+
prepend = { '--compiler', '"${compiler}"' },
5577
order = ORDER_BEFORE
5678
}),
5779
CreatePatternMatcher({ '^fakes.*%.exe$', 'moles.*%.exe' },
@@ -94,23 +116,9 @@ function RegisterExtractorPack(id)
94116
extractor, {
95117
prepend = { '--compiler', '"${compiler}"' },
96118
order = ORDER_BEFORE
97-
}), function(compilerName, compilerPath, compilerArguments, _languageId)
98-
if MatchCompilerName('^msbuild$', compilerName, compilerPath,
99-
compilerArguments) or
100-
MatchCompilerName('^xbuild$', compilerName, compilerPath,
101-
compilerArguments) then
102-
return {
103-
order = ORDER_REPLACE,
104-
invocation = BuildExtractorInvocation(id, compilerPath,
105-
compilerPath,
106-
compilerArguments,
107-
nil, {
108-
'/p:UseSharedCompilation=false'
109-
})
110-
111-
}
112-
end
113-
end, function(compilerName, compilerPath, compilerArguments, _languageId)
119+
}),
120+
MsBuildMatcher,
121+
function(compilerName, compilerPath, compilerArguments, _languageId)
114122
-- handle cases like `dotnet exec csc.dll <args>` and `mono(-sgen64) csc.exe <args>`
115123
if compilerName ~= 'dotnet' and not compilerName:match('^mono') then
116124
return nil

csharp/tools/win64/compiler-tracing.spec

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)