Skip to content

Commit 00668b5

Browse files
authored
Merge pull request #4188 from aibaars/csharp-buildless
C#: autobuild: fix buildless mode for CodeQL
2 parents 8e86d56 + babe69d commit 00668b5

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@ CSharpAutobuilder CreateAutoBuilder(bool isWindows,
345345
Actions.GetEnvironmentVariable[$"CODEQL_EXTRACTOR_{codeqlUpperLanguage}_SOURCE_ARCHIVE_DIR"] = "";
346346
Actions.GetEnvironmentVariable[$"CODEQL_EXTRACTOR_{codeqlUpperLanguage}_ROOT"] = $@"C:\codeql\{codeqlUpperLanguage.ToLowerInvariant()}";
347347
Actions.GetEnvironmentVariable["CODEQL_JAVA_HOME"] = @"C:\codeql\tools\java";
348+
Actions.GetEnvironmentVariable["CODEQL_PLATFORM"] = isWindows ? "win64" : "linux64";
348349
Actions.GetEnvironmentVariable["SEMMLE_DIST"] = @"C:\odasa";
349350
Actions.GetEnvironmentVariable["SEMMLE_JAVA_HOME"] = @"C:\odasa\tools\java";
350351
Actions.GetEnvironmentVariable["SEMMLE_PLATFORM_TOOLS"] = @"C:\odasa\tools";
@@ -497,7 +498,7 @@ public void TestVcVarsAllBatFiles()
497498
[Fact]
498499
public void TestLinuxBuildlessExtractionSuccess()
499500
{
500-
Actions.RunProcess[@"C:\odasa\tools/csharp/Semmle.Extraction.CSharp.Standalone --references:."] = 0;
501+
Actions.RunProcess[@"C:\codeql\csharp/tools/linux64/Semmle.Extraction.CSharp.Standalone --references:."] = 0;
501502
Actions.RunProcess[@"C:\codeql\tools\java/bin/java -jar C:\codeql\csharp/tools/extractor-asp.jar ."] = 0;
502503
Actions.RunProcess[@"C:\odasa/tools/odasa index --xml --extensions config csproj props xml"] = 0;
503504
Actions.FileExists["csharp.log"] = true;
@@ -513,7 +514,7 @@ public void TestLinuxBuildlessExtractionSuccess()
513514
[Fact]
514515
public void TestLinuxBuildlessExtractionFailed()
515516
{
516-
Actions.RunProcess[@"C:\odasa\tools/csharp/Semmle.Extraction.CSharp.Standalone --references:."] = 10;
517+
Actions.RunProcess[@"C:\codeql\csharp/tools/linux64/Semmle.Extraction.CSharp.Standalone --references:."] = 10;
517518
Actions.FileExists["csharp.log"] = true;
518519
Actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_TRAP_DIR"] = "";
519520
Actions.GetEnvironmentVariable["CODEQL_EXTRACTOR_CSHARP_SOURCE_ARCHIVE_DIR"] = "";
@@ -527,7 +528,7 @@ public void TestLinuxBuildlessExtractionFailed()
527528
[Fact]
528529
public void TestLinuxBuildlessExtractionSolution()
529530
{
530-
Actions.RunProcess[@"C:\odasa\tools/csharp/Semmle.Extraction.CSharp.Standalone foo.sln --references:."] = 0;
531+
Actions.RunProcess[@"C:\codeql\csharp/tools/linux64/Semmle.Extraction.CSharp.Standalone foo.sln --references:."] = 0;
531532
Actions.RunProcess[@"C:\codeql\tools\java/bin/java -jar C:\codeql\csharp/tools/extractor-asp.jar ."] = 0;
532533
Actions.RunProcess[@"C:\odasa/tools/odasa index --xml --extensions config csproj props xml"] = 0;
533534
Actions.FileExists["csharp.log"] = true;
@@ -835,7 +836,7 @@ public void TestSkipNugetMsBuild()
835836
[Fact]
836837
public void TestSkipNugetBuildless()
837838
{
838-
Actions.RunProcess[@"C:\odasa\tools/csharp/Semmle.Extraction.CSharp.Standalone foo.sln --references:. --skip-nuget"] = 0;
839+
Actions.RunProcess[@"C:\codeql\csharp/tools/linux64/Semmle.Extraction.CSharp.Standalone foo.sln --references:. --skip-nuget"] = 0;
839840
Actions.RunProcess[@"C:\codeql\tools\java/bin/java -jar C:\codeql\csharp/tools/extractor-asp.jar ."] = 0;
840841
Actions.RunProcess[@"C:\odasa/tools/odasa index --xml --extensions config csproj props xml"] = 0;
841842
Actions.FileExists["csharp.log"] = true;

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@ public BuildScript Analyse(Autobuilder builder, bool auto)
1111
{
1212
BuildScript GetCommand(string? solution)
1313
{
14-
if (builder.SemmlePlatformTools is null)
14+
string standalone;
15+
if (builder.CodeQLExtractorLangRoot is object && builder.CodeQlPlatform is object) {
16+
standalone = builder.Actions.PathCombine(builder.CodeQLExtractorLangRoot, "tools", builder.CodeQlPlatform, "Semmle.Extraction.CSharp.Standalone");
17+
} else if (builder.SemmlePlatformTools is object) {
18+
standalone = builder.Actions.PathCombine(builder.SemmlePlatformTools, "csharp", "Semmle.Extraction.CSharp.Standalone");
19+
} else {
1520
return BuildScript.Failure;
21+
}
1622

17-
var standalone = builder.Actions.PathCombine(builder.SemmlePlatformTools, "csharp", "Semmle.Extraction.CSharp.Standalone");
1823
var cmd = new CommandBuilder(builder.Actions);
1924
cmd.RunCommand(standalone);
2025

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ public Autobuilder(IBuildActions actions, AutobuildOptions options)
193193
SemmleDist = Actions.GetEnvironmentVariable("SEMMLE_DIST");
194194
SemmlePlatformTools = Actions.GetEnvironmentVariable("SEMMLE_PLATFORM_TOOLS");
195195

196+
CodeQlPlatform = Actions.GetEnvironmentVariable("CODEQL_PLATFORM");
197+
196198
JavaHome =
197199
Actions.GetEnvironmentVariable("CODEQL_JAVA_HOME") ??
198200
Actions.GetEnvironmentVariable("SEMMLE_JAVA_HOME") ??
@@ -271,7 +273,7 @@ protected BuildScript AutobuildFailure() =>
271273
/// <summary>
272274
/// Value of CODEQL_EXTRACTOR_<LANG>_ROOT environment variable.
273275
/// </summary>
274-
private string? CodeQLExtractorLangRoot { get; }
276+
public string? CodeQLExtractorLangRoot { get; }
275277

276278
/// <summary>
277279
/// Value of SEMMLE_DIST environment variable.
@@ -287,6 +289,11 @@ protected BuildScript AutobuildFailure() =>
287289
/// </summary>
288290
public string? SemmlePlatformTools { get; }
289291

292+
/// <summary>
293+
/// Value of CODEQL_PLATFORM environment variable.
294+
/// </summary>
295+
public string? CodeQlPlatform { get; }
296+
290297
/// <summary>
291298
/// The absolute path of the odasa executable.
292299
/// null if we are running in CodeQL.

0 commit comments

Comments
 (0)