Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

Commit 9bf2aea1 authored by eckhart's avatar eckhart
Browse files

- stub for a compilation-server-module extended

parent 353390e2
...@@ -123,6 +123,17 @@ CONFIG_PRESET['static_analysis'] = "none" ...@@ -123,6 +123,17 @@ CONFIG_PRESET['static_analysis'] = "none"
CONFIG_PRESET['add_grammar_source_to_parser_docstring'] = False CONFIG_PRESET['add_grammar_source_to_parser_docstring'] = False
########################################################################
#
# compiler server configuration
#
########################################################################
# Maximum allowed source code size in bytes
# Default value: 16 MB
CONFIG_PRESET['max_source_size'] = 16 * 1024 * 1024
######################################################################## ########################################################################
# #
# testing framework configuration # testing framework configuration
......
...@@ -78,7 +78,6 @@ def compile_src(source, log_dir=''): ...@@ -78,7 +78,6 @@ def compile_src(source, log_dir=''):
""" """
with logging(log_dir): with logging(log_dir):
compiler = get_compiler() compiler = get_compiler()
cname = compiler.__class__.__name__
result_tuple = compile_source(source, get_preprocessor(), result_tuple = compile_source(source, get_preprocessor(),
get_grammar(), get_grammar(),
get_transformer(), compiler) get_transformer(), compiler)
......
...@@ -36,10 +36,33 @@ of module `server`, i.e. the compilation-modules, to decide. ...@@ -36,10 +36,33 @@ of module `server`, i.e. the compilation-modules, to decide.
import asyncio import asyncio
from typing import Callable, Any
from DHParser.preprocess import BEGIN_TOKEN, END_TOKEN, TOKEN_DELIMITER
from DHParser.toolkit import get_config_value
# TODO: implement compilation-server! # TODO: implement compilation-server!
SERVER_ERROR = "COMPILER-SERVER-ERROR"
CompileFunc = Callable[[str, str], Any] # compiler_src(source: str, log_dir: str) -> Any
class CompilerServer:
def __init__(self, compiler: CompileFunc):
self.compiler = compiler
self.max_source_size = get_config_value('max_source_size')
def handle_compilation_request(self, reader, writer):
data = await reader.read(self.max_source_size + 1)
if len(data) > self.max_source_size:
writer.write(BEGIN_TOKEN + SERVER_ERROR + TOKEN_DELIMITER +
"Source code to large! Only %iMB allowed." %
(self.max_source_size // (1024**2)) + END_TOKEN)
else:
pass # TODO: to be continued
await writer.drain()
writer.close()
async def handle_echo(reader, writer): async def handle_echo(reader, writer):
# TODO: Add deliver/answer-challenge-mechanism here to verify the source # TODO: Add deliver/answer-challenge-mechanism here to verify the source
......
...@@ -115,6 +115,7 @@ ArithmeticSimple_AST_transformation_table = { ...@@ -115,6 +115,7 @@ ArithmeticSimple_AST_transformation_table = {
def ArithmeticSimpleTransform() -> TransformationFunc: def ArithmeticSimpleTransform() -> TransformationFunc:
return partial(traverse, processing_table=ArithmeticSimple_AST_transformation_table.copy()) return partial(traverse, processing_table=ArithmeticSimple_AST_transformation_table.copy())
def get_transformer() -> TransformationFunc: def get_transformer() -> TransformationFunc:
try: try:
transformer = GLOBALS.ArithmeticSimple_00000001_transformer_singleton transformer = GLOBALS.ArithmeticSimple_00000001_transformer_singleton
...@@ -177,13 +178,14 @@ def compile_src(source, log_dir=''): ...@@ -177,13 +178,14 @@ def compile_src(source, log_dir=''):
""" """
with logging(log_dir): with logging(log_dir):
compiler = get_compiler() compiler = get_compiler()
cname = compiler.__class__.__name__
result_tuple = compile_source(source, get_preprocessor(), result_tuple = compile_source(source, get_preprocessor(),
get_grammar(), get_grammar(),
get_transformer(), compiler) get_transformer(), compiler)
return result_tuple return result_tuple
if __name__ == "__main__": if __name__ == "__main__":
# recompile grammar if needed # recompile grammar if needed
grammar_path = os.path.abspath(__file__).replace('Compiler.py', '.ebnf') grammar_path = os.path.abspath(__file__).replace('Compiler.py', '.ebnf')
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment