Ещё штуки
All checks were successful
Build and Push Docker Images / build (src/LiquidCode.Tester.Gateway/Dockerfile, git.nullptr.top/liquidcode/liquidcode-tester-gateway-roman, gateway) (push) Successful in 51s
Build and Push Docker Images / build (src/LiquidCode.Tester.Worker/Dockerfile, git.nullptr.top/liquidcode/liquidcode-tester-worker-roman, worker) (push) Successful in 1m4s
All checks were successful
Build and Push Docker Images / build (src/LiquidCode.Tester.Gateway/Dockerfile, git.nullptr.top/liquidcode/liquidcode-tester-gateway-roman, gateway) (push) Successful in 51s
Build and Push Docker Images / build (src/LiquidCode.Tester.Worker/Dockerfile, git.nullptr.top/liquidcode/liquidcode-tester-worker-roman, worker) (push) Successful in 1m4s
This commit is contained in:
@@ -5,6 +5,7 @@ using System.Linq;
|
||||
using LiquidCode.Tester.Worker.Services.Isolate;
|
||||
using LiquidCode.Tester.Worker.Models;
|
||||
|
||||
/// <summary>
|
||||
namespace LiquidCode.Tester.Worker.Services;
|
||||
|
||||
/// <summary>
|
||||
@@ -113,12 +114,7 @@ public class CppCompilationServiceIsolate : ICompilationService
|
||||
|
||||
// Build compiler arguments
|
||||
var arguments = new List<string>(compilerFlags);
|
||||
var directoryBindings = new List<DirectoryBinding>
|
||||
{
|
||||
new DirectoryBinding { HostPath = "/usr/include", SandboxPath = "/usr/include", ReadOnly = true },
|
||||
new DirectoryBinding { HostPath = "/usr/lib", SandboxPath = "/usr/lib", ReadOnly = true },
|
||||
new DirectoryBinding { HostPath = "/lib", SandboxPath = "/lib", ReadOnly = true }
|
||||
};
|
||||
var includeCounter = 0;
|
||||
|
||||
// Add include directories
|
||||
if (includeDirectories != null)
|
||||
@@ -135,13 +131,10 @@ public class CppCompilationServiceIsolate : ICompilationService
|
||||
|
||||
if (Directory.Exists(resolvedIncludeDir))
|
||||
{
|
||||
arguments.Add($"-I{resolvedIncludeDir}");
|
||||
directoryBindings.Add(new DirectoryBinding
|
||||
{
|
||||
HostPath = resolvedIncludeDir,
|
||||
SandboxPath = resolvedIncludeDir,
|
||||
ReadOnly = true
|
||||
});
|
||||
includeCounter++;
|
||||
var targetIncludeDir = Path.Combine(boxDir, $"include_{includeCounter}");
|
||||
CopyDirectory(resolvedIncludeDir, targetIncludeDir);
|
||||
arguments.Add($"-I/box/include_{includeCounter}");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -182,7 +175,12 @@ public class CppCompilationServiceIsolate : ICompilationService
|
||||
EnableNetwork = false,
|
||||
StderrFile = stderrFilePath,
|
||||
WorkingDirectory = "/box",
|
||||
DirectoryBindings = directoryBindings
|
||||
DirectoryBindings = new List<DirectoryBinding>
|
||||
{
|
||||
new DirectoryBinding { HostPath = "/usr/include", SandboxPath = "/usr/include", ReadOnly = true },
|
||||
new DirectoryBinding { HostPath = "/usr/lib", SandboxPath = "/usr/lib", ReadOnly = true },
|
||||
new DirectoryBinding { HostPath = "/lib", SandboxPath = "/lib", ReadOnly = true }
|
||||
}
|
||||
});
|
||||
|
||||
// Read compiler output
|
||||
@@ -275,6 +273,29 @@ public class CppCompilationServiceIsolate : ICompilationService
|
||||
}
|
||||
}
|
||||
|
||||
private static void CopyDirectory(string sourceDirectory, string destinationDirectory)
|
||||
{
|
||||
var sourceRoot = Path.GetFullPath(sourceDirectory);
|
||||
var destinationRoot = Path.GetFullPath(destinationDirectory);
|
||||
|
||||
Directory.CreateDirectory(destinationRoot);
|
||||
|
||||
foreach (var directory in Directory.EnumerateDirectories(sourceRoot, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
var relativePath = Path.GetRelativePath(sourceRoot, directory);
|
||||
var targetDir = Path.Combine(destinationRoot, relativePath);
|
||||
Directory.CreateDirectory(targetDir);
|
||||
}
|
||||
|
||||
foreach (var file in Directory.EnumerateFiles(sourceRoot, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
var relativePath = Path.GetRelativePath(sourceRoot, file);
|
||||
var targetFile = Path.Combine(destinationRoot, relativePath);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(targetFile)!);
|
||||
File.Copy(file, targetFile, overwrite: true);
|
||||
}
|
||||
}
|
||||
|
||||
private (string compiler, List<string> compilerFlags) ResolveVersion(string? version)
|
||||
{
|
||||
var defaultCompiler = _configuration["Cpp:Compiler"] ?? "g++";
|
||||
|
||||
Reference in New Issue
Block a user