Files

53 lines
1.3 KiB
Python
Raw Permalink Normal View History

from __future__ import annotations
from e3.anod.loader import AnodSpecRepository
from e3.anod.context import AnodContext
from e3.anod.sandbox import SandBox
from e3.os.process import Run
import logging
import os
import sys
def check_tool(tool: str) -> str:
"""Check tool version and return its version.
The function will force exit if the tool is not found.
:param tool: tool name
:type tool: str
:return: the tool version
:rtype: str
"""
try:
p = Run([tool, "--version"])
version = p.out.splitlines()[0]
logging.info("%s version: %s", tool, version)
return version
except Exception:
logging.critical("cannot find %s", tool)
sys.exit(1)
def check_common_tools() -> None:
# The following variables are used to force recompilation
# in case of some tool change.
gcc_version = check_tool("gcc")
os.environ["OPENUXAS_COMPILER_VERSION"] = gcc_version
cmake_version = check_tool("cmake")
os.environ["OPENUXAS_CMAKE_VERSION"] = cmake_version
check_tool("pkg-config")
def create_anod_context(spec_dir: str) -> AnodContext:
return AnodContext(AnodSpecRepository(spec_dir))
def create_anod_sandbox(sbx_dir: str, spec_dir: str) -> SandBox:
sbx = SandBox()
sbx.root_dir = sbx_dir
sbx.specs_dir = spec_dir
return sbx