From dd9fe494e28a8807f28cde79b74716af8e11c0df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6hm?= Date: Thu, 21 Jul 2022 17:15:51 +0200 Subject: [PATCH 1/3] Fix phasar research tool to enable container build --- varats/varats/tools/driver_build_setup.py | 2 +- varats/varats/tools/research_tools/phasar.py | 42 ++++++++++++++------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/varats/varats/tools/driver_build_setup.py b/varats/varats/tools/driver_build_setup.py index 796346c96..481eb70a5 100644 --- a/varats/varats/tools/driver_build_setup.py +++ b/varats/varats/tools/driver_build_setup.py @@ -61,7 +61,7 @@ def print_up_to_date_message(research_tool: ResearchTool[VaRACodeBase]) -> None: ) if not research_tool.is_up_to_date(): print( - f"{colors.LightYellow}VaRA is outdated! Newest major release " + f"{colors.LightYellow}{research_tool.name} is outdated! Newest major release " f"version is {colors.bold}{colors.LightBlue}" f"{highest_release_version}{colors.bold.reset}{colors.fg.reset}\n" ) diff --git a/varats/varats/tools/research_tools/phasar.py b/varats/varats/tools/research_tools/phasar.py index 1b547aeb0..73c744187 100644 --- a/varats/varats/tools/research_tools/phasar.py +++ b/varats/varats/tools/research_tools/phasar.py @@ -2,10 +2,13 @@ layout and implements automatic configuration and setup.""" import os import shutil +import tempfile import typing as tp from pathlib import Path +from benchbuild.utils.settings import get_number_of_jobs from plumbum import local +from PyQt5 import QtCore from PyQt5.QtCore import QProcess from varats.tools.research_tools.cmake_util import set_cmake_var @@ -23,7 +26,7 @@ ) from varats.utils.exceptions import ProcessTerminatedError from varats.utils.logger_util import log_without_linesep -from varats.utils.settings import save_config, vara_cfg +from varats.utils.settings import save_config, vara_cfg, bb_cfg if tp.TYPE_CHECKING: from varats.containers import containers # pylint: disable=W0611 @@ -151,6 +154,10 @@ def setup( self.code_base.checkout_phasar_version(use_dev_branch) self.code_base.setup_submodules() + def is_up_to_date(self) -> bool: + """Returns true if Phasar's major release version is up to date.""" + return True + def upgrade(self) -> None: """Upgrade the research tool to a newer version.""" self.code_base.pull() @@ -172,15 +179,37 @@ def build( ).path / "build" build_path /= build_type.build_folder(build_folder_suffix) + llvm_install_dir = build_path / "deps/llvm-14" # Setup configured build folder print(" - Setting up build folder.") if not os.path.exists(build_path): try: os.makedirs(build_path, exist_ok=True) + + with tempfile.TemporaryDirectory() as tmp_dir: + with ProcessManager.create_process( + "./utils/install-llvm.sh", [ + str(get_number_of_jobs(bb_cfg())), + str(tmp_dir), + str(llvm_install_dir), "llvmorg-14.0.6" + ], + workdir=self.source_location() / "phasar" + ) as proc: + proc.setProcessChannelMode(QProcess.MergedChannels) + proc.readyReadStandardOutput.connect( + lambda: run_process_with_output( + proc, log_without_linesep(print) + ) + ) + with ProcessManager.create_process( "cmake", ["-G", "Ninja", "../.."], workdir=build_path ) as proc: + env = QtCore.QProcessEnvironment.systemEnvironment() + env.insert("CC", str(llvm_install_dir / "bin/clang")) + env.insert("CXX", str(llvm_install_dir / "bin/clang++")) + proc.setProcessEnvironment(env) proc.setProcessChannelMode(QProcess.MergedChannels) proc.readyReadStandardOutput.connect( lambda: run_process_with_output( @@ -229,17 +258,6 @@ def verify_build( ) -> bool: return True - def container_add_build_layer( - self, image_context: 'containers.BaseImageCreationContext' - ) -> None: - """ - Add layers for building this research tool to the given container. - - Args: - image_context: the base image creation context - """ - raise NotImplementedError - def container_install_tool( self, image_context: 'containers.BaseImageCreationContext' ) -> None: From 521377076a3b57769c072125b5e60e4295d43185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6hm?= Date: Mon, 25 Jul 2022 10:11:05 +0200 Subject: [PATCH 2/3] Fix line too long --- varats/varats/tools/driver_build_setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/varats/varats/tools/driver_build_setup.py b/varats/varats/tools/driver_build_setup.py index 481eb70a5..0ec5ead90 100644 --- a/varats/varats/tools/driver_build_setup.py +++ b/varats/varats/tools/driver_build_setup.py @@ -61,8 +61,8 @@ def print_up_to_date_message(research_tool: ResearchTool[VaRACodeBase]) -> None: ) if not research_tool.is_up_to_date(): print( - f"{colors.LightYellow}{research_tool.name} is outdated! Newest major release " - f"version is {colors.bold}{colors.LightBlue}" + f"{colors.LightYellow}{research_tool.name} is outdated! " + f"Newest major release version is {colors.bold}{colors.LightBlue}" f"{highest_release_version}{colors.bold.reset}{colors.fg.reset}\n" ) From e4e879fa383611383bfcb56daed724e93887e74a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6hm?= Date: Sat, 18 Mar 2023 10:10:56 +0100 Subject: [PATCH 3/3] Don't install llvm14 manually We use llvm-14 in the container images anyway and for non-container builds the user should be responsible for supplying the correct llvm version. --- varats/varats/tools/research_tools/phasar.py | 27 +------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/varats/varats/tools/research_tools/phasar.py b/varats/varats/tools/research_tools/phasar.py index 644d0a8ff..167b43a21 100644 --- a/varats/varats/tools/research_tools/phasar.py +++ b/varats/varats/tools/research_tools/phasar.py @@ -2,13 +2,10 @@ layout and implements automatic configuration and setup.""" import os import shutil -import tempfile import typing as tp from pathlib import Path -from benchbuild.utils.settings import get_number_of_jobs from plumbum import local -from PyQt5 import QtCore from PyQt5.QtCore import QProcess from varats.tools.research_tools.cmake_util import set_cmake_var @@ -26,7 +23,7 @@ ) from varats.utils.exceptions import ProcessTerminatedError from varats.utils.logger_util import log_without_linesep -from varats.utils.settings import save_config, vara_cfg, bb_cfg +from varats.utils.settings import save_config, vara_cfg if tp.TYPE_CHECKING: from varats.containers import containers # pylint: disable=W0611 @@ -179,37 +176,15 @@ def build( ).path / "build" build_path /= build_type.build_folder(build_folder_suffix) - llvm_install_dir = build_path / "deps/llvm-14" # Setup configured build folder print(" - Setting up build folder.") if not os.path.exists(build_path): try: os.makedirs(build_path, exist_ok=True) - - with tempfile.TemporaryDirectory() as tmp_dir: - with ProcessManager.create_process( - "./utils/install-llvm.sh", [ - str(get_number_of_jobs(bb_cfg())), - str(tmp_dir), - str(llvm_install_dir), "llvmorg-14.0.6" - ], - workdir=self.source_location() / "phasar" - ) as proc: - proc.setProcessChannelMode(QProcess.MergedChannels) - proc.readyReadStandardOutput.connect( - lambda: run_process_with_output( - proc, log_without_linesep(print) - ) - ) - with ProcessManager.create_process( "cmake", ["-G", "Ninja", "../.."], workdir=build_path ) as proc: - env = QtCore.QProcessEnvironment.systemEnvironment() - env.insert("CC", str(llvm_install_dir / "bin/clang")) - env.insert("CXX", str(llvm_install_dir / "bin/clang++")) - proc.setProcessEnvironment(env) proc.setProcessChannelMode(QProcess.MergedChannels) proc.readyReadStandardOutput.connect( lambda: run_process_with_output(