From bc5e27818545767f7dddc19e90efc0cde9d3d2ba Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 11:39:15 +0200 Subject: [PATCH 01/44] change log file names --- mpsd-software-environment.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index d550f5f..abcf143 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -31,15 +31,16 @@ for given system architecture and MPSD software stack version.\n The toolchains are built using the bash script spack_setup.sh, and the results are logged. """ +call_date_iso = datetime.datetime.now().replace(microsecond=0).isoformat() config_vars = { + # kept inside the mpsd_release folder "cmd_log_file": "install.log", - "build_log_file": ( - "logs/mpsd_spack_ver_toolchains_" - f"{datetime.datetime.now().replace(microsecond=0).isoformat()}.log" - ), + # Placeholder installer log file name, placed at mpsd_microarch/logs + "installer_log_file": f"mpsdrelease_microarch_{call_date_iso}.log", + # Placeholder build log file name, placed at mpsd_microarch/logs + "build_log_file": f"mpsdrelease_microarch_{call_date_iso}_specifictoolchain.log", "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", - # TODO: modify toolchains,mpsd_spack_ver when the variable is available "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", } -- GitLab From 91d270e2dbd008cd7701cc12e9a4ed43d4d02502 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 12:00:17 +0200 Subject: [PATCH 02/44] move the logfile creation into main --- mpsd-software-environment.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index abcf143..d044fc7 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -572,8 +572,7 @@ def install_environment( # Set required variables release_base_dir = script_dir / mpsd_release - os.environ.get("MPSD_OS", "UNKNOWN_OS") - mpsd_microarch = os.environ.get("MPSD_MICROARCH", "UNKNOWN_MICROARCH") + toolchain_dir = release_base_dir / mpsd_microarch toolchain_dir.mkdir(parents=True, exist_ok=True) spack_setup_script = release_base_dir / "spack-environments" / "spack_setup.sh" @@ -614,11 +613,7 @@ def install_environment( # _mpsd_spack_ver_ with mpsd_release logging.info(f"Installing toolchain {toolchain} to {toolchain_dir}") - install_log_file = ( - config_vars["build_log_file"] - .replace("mpsd_spack_ver_", f"{mpsd_release}_") - .replace("_toolchains_", f"_{toolchain}_") - ) + # log the command setup_log_cmd( mpsd_release, @@ -736,7 +731,16 @@ def main(): # Carry out the action args = parser.parse_args() + # Get machine configs + os.environ.get("MPSD_OS", "UNKNOWN_OS") + os.environ.get("MPSD_MICROARCH", "UNKNOWN_MICROARCH") # parse logging first + # decide the log_file_name + ( + config_vars["build_log_file"] + .replace("mpsd_spack_ver_", f"{mpsd_release}_") + .replace("_toolchains_", f"_{toolchain}_") + ) set_up_logging(args.loglevel) # target dir is the place where this script exists. the -- GitLab From dc6d027571189cc76e268670aca95081ad7833fd Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 13:41:50 +0200 Subject: [PATCH 03/44] add cmd to logfile name --- mpsd-software-environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index d044fc7..14c0e72 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -36,9 +36,9 @@ config_vars = { # kept inside the mpsd_release folder "cmd_log_file": "install.log", # Placeholder installer log file name, placed at mpsd_microarch/logs - "installer_log_file": f"mpsdrelease_microarch_{call_date_iso}.log", + "installer_log_file": f"mpsdrelease_microarch_{call_date_iso}_cmd.log", # Placeholder build log file name, placed at mpsd_microarch/logs - "build_log_file": f"mpsdrelease_microarch_{call_date_iso}_specifictoolchain.log", + "build_log_file": f"mpsdrelease_microarch_{call_date_iso}_specifictoolchain_install.log", "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", -- GitLab From d00a28261bf093adc2b6295e845c11516d55254b Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 15:50:01 +0200 Subject: [PATCH 04/44] create create_log_file_names function --- mpsd-software-environment.py | 63 ++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 14c0e72..89d36e0 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -12,6 +12,7 @@ import time from pathlib import Path from typing import List, Tuple, Union import re +from string import Template # If 'rich' is available ("pip install rich" or "apt-get install python3-rich"), # then use coloured output, otherwise proceed as before @@ -36,15 +37,73 @@ config_vars = { # kept inside the mpsd_release folder "cmd_log_file": "install.log", # Placeholder installer log file name, placed at mpsd_microarch/logs - "installer_log_file": f"mpsdrelease_microarch_{call_date_iso}_cmd.log", + "installer_log_template": Template( + "${mpsd_release}_${mpsd_microarch}_${date}_{action}.log" + ), # Placeholder build log file name, placed at mpsd_microarch/logs - "build_log_file": f"mpsdrelease_microarch_{call_date_iso}_specifictoolchain_install.log", + "build_log_template": Template( + "${mpsd_release}_${mpsd_microarch}_${date}_${toolchain}_{action}.log" + ), "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", } +def create_log_file_names( + mpsd_release: str, + mpsd_microarch: str, + action: str, + date: str = call_date_iso, + toolchain: str = None, +) -> Tuple[str, str]: + """Create log file names. + + This function creates the log file names for the installer and + the build log files. + The installer log file is created + from the output of this script except + the toolchain build log that is handled by the spack_setup.sh script. + The build log `tee`'s the output of the spack_setup.sh script to the log file. + The log file names are created using the + template strings defined in config_vars. + + Parameters + ---------- + mpsd_release : str + MPSD software stack version + mpsd_microarch : str + system architecture + date : str + date of the call ins iso format + action : str + action performed (install,remove,reinstall,prepare,status) + only install and remove are valid for build log file. + toolchain : str + toolchain name (only for build log file) + returns : tuple + tuple containing the strings of installer and build log file names + """ + installer_log_file = config_vars["installer_log_template"].substitute( + mpsd_release=mpsd_release, + mpsd_microarch=mpsd_microarch, + date=date, + action=action, + ) + if toolchain and action in ["install", "remove"]: + build_log_file = config_vars["build_log_template"].substitute( + mpsd_release=mpsd_release, + mpsd_microarch=mpsd_microarch, + date=date, + action=action, + toolchain=toolchain, + ) + else: + build_log_file = None + logging.warning("Incorrect action or toolchain name.") + return installer_log_file, build_log_file + + def log_metadata(key: str, value: str) -> None: """Log metadata to the log file. -- GitLab From f940a41a2f65761a36c42c55a982d2fe372a8265 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 16:07:37 +0200 Subject: [PATCH 05/44] add test_create_log_file_names --- mpsd-software-environment.py | 4 ++-- tests.py | 45 ++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 89d36e0..569d3a5 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -38,11 +38,11 @@ config_vars = { "cmd_log_file": "install.log", # Placeholder installer log file name, placed at mpsd_microarch/logs "installer_log_template": Template( - "${mpsd_release}_${mpsd_microarch}_${date}_{action}.log" + "${mpsd_release}_${mpsd_microarch}_${date}_${action}.log" ), # Placeholder build log file name, placed at mpsd_microarch/logs "build_log_template": Template( - "${mpsd_release}_${mpsd_microarch}_${date}_${toolchain}_{action}.log" + "${mpsd_release}_${mpsd_microarch}_${date}_${toolchain}_${action}.log" ), "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", diff --git a/tests.py b/tests.py index c7103b4..9fa9897 100644 --- a/tests.py +++ b/tests.py @@ -6,6 +6,8 @@ import shutil import subprocess from pathlib import Path import logging +import datetime + import pytest mod = importlib.import_module("mpsd-software-environment") @@ -353,6 +355,49 @@ def test_metadata_logging(tmp_path): assert len(read_dict) == len(keys) +def test_create_log_file_names(): + """Test that the log file names are created correctly.""" + create_log_file_names = mod.create_log_file_names + mpsd_release = "dev-23a" + mpsd_microarch = "sandybridge" + date = datetime.datetime.now().replace(microsecond=0).isoformat() + action = "install" + toolchain = "foss2021a" + # test for correct action and toolchain + installer_log_file, build_log_file = create_log_file_names( + mpsd_microarch=mpsd_microarch, + mpsd_release=mpsd_release, + date=date, + action=action, + toolchain=toolchain, + ) + assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_{action}.log" + assert ( + build_log_file + == f"{mpsd_release}_{mpsd_microarch}_{date}_{toolchain}_{action}.log" + ) + # test no build log file for incorrect action + installer_log_file, build_log_file = create_log_file_names( + mpsd_microarch=mpsd_microarch, + mpsd_release=mpsd_release, + date=date, + action="status", + toolchain=toolchain, + ) + assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_status.log" + assert build_log_file == None + # test no build log file for incorrect toolchain + installer_log_file, build_log_file = create_log_file_names( + mpsd_microarch=mpsd_microarch, + mpsd_release=mpsd_release, + date=date, + action="reinstall", + toolchain=None, + ) + assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_reinstall.log" + assert build_log_file == None + + def test_interface(tmp_path): """Test other things (not implemented yet).""" pass -- GitLab From d99dbd725e2f24b65b06117c52c09aa5202f73b7 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Tue, 6 Jun 2023 17:13:28 +0200 Subject: [PATCH 06/44] firest attempt at relocation of variables --- mpsd-software-environment.py | 19 +++++++++++-------- tests.py | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 569d3a5..be87124 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -792,19 +792,22 @@ def main(): # Get machine configs os.environ.get("MPSD_OS", "UNKNOWN_OS") - os.environ.get("MPSD_MICROARCH", "UNKNOWN_MICROARCH") + mpsd_microarch = os.environ.get("MPSD_MICROARCH", "UNKNOWN_MICROARCH") + # release `dev` in script_dir/dev-23a + script_dir = Path(os.path.dirname(os.path.realpath(__file__))) + mpsd_release = args.release # parse logging first # decide the log_file_name - ( - config_vars["build_log_file"] - .replace("mpsd_spack_ver_", f"{mpsd_release}_") - .replace("_toolchains_", f"_{toolchain}_") + installer_log_name, build_log_name = create_log_file_names( + mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=args.action + ) + installer_log_file = ( + script_dir / mpsd_release / mpsd_microarch / "logs" / installer_log_name ) - set_up_logging(args.loglevel) + + set_up_logging(args.loglevel, installer_log_file) # target dir is the place where this script exists. the - # release `dev` in script_dir/dev-23a - script_dir = Path(os.path.dirname(os.path.realpath(__file__))) # Check the command and run related function if args.action == "remove": diff --git a/tests.py b/tests.py index 9fa9897..d2a35f2 100644 --- a/tests.py +++ b/tests.py @@ -385,7 +385,7 @@ def test_create_log_file_names(): toolchain=toolchain, ) assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_status.log" - assert build_log_file == None + assert build_log_file is None # test no build log file for incorrect toolchain installer_log_file, build_log_file = create_log_file_names( mpsd_microarch=mpsd_microarch, @@ -395,7 +395,7 @@ def test_create_log_file_names(): toolchain=None, ) assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_reinstall.log" - assert build_log_file == None + assert build_log_file is None def test_interface(tmp_path): -- GitLab From ab76370390b51b6fc16f3bb8b0de9ffd4e09e20d Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 11:25:01 +0200 Subject: [PATCH 07/44] create log_folder for non info only commands --- mpsd-software-environment.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index be87124..22d3120 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -792,8 +792,8 @@ def main(): # Get machine configs os.environ.get("MPSD_OS", "UNKNOWN_OS") - mpsd_microarch = os.environ.get("MPSD_MICROARCH", "UNKNOWN_MICROARCH") - # release `dev` in script_dir/dev-23a + mpsd_microarch = get_native_microarchitecture() + # target dir is the place where this script exists. the script_dir = Path(os.path.dirname(os.path.realpath(__file__))) mpsd_release = args.release # parse logging first @@ -801,13 +801,18 @@ def main(): installer_log_name, build_log_name = create_log_file_names( mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=args.action ) - installer_log_file = ( - script_dir / mpsd_release / mpsd_microarch / "logs" / installer_log_name - ) + log_folder = script_dir / mpsd_release / mpsd_microarch / "logs" + # if the log_folder dosent exist, dont log this message if + # the command is a info-only command + if not os.path.exists(log_folder): + if args.action not in ["status", "available"]: + os.makedirs(log_folder) + installer_log_file = log_folder / installer_log_name + else: + installer_log_file = None set_up_logging(args.loglevel, installer_log_file) - # target dir is the place where this script exists. the # Check the command and run related function if args.action == "remove": -- GitLab From 9ff1450978c5133b40865d46dd134e28cf4fb6fa Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 11:42:55 +0200 Subject: [PATCH 08/44] first attempt at complet log file refactor --- mpsd-software-environment.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 22d3120..ce28676 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -82,7 +82,7 @@ def create_log_file_names( toolchain : str toolchain name (only for build log file) returns : tuple - tuple containing the strings of installer and build log file names + tuple containing installer_log_file, build_log_file, file names """ installer_log_file = config_vars["installer_log_template"].substitute( mpsd_release=mpsd_release, @@ -631,7 +631,7 @@ def install_environment( # Set required variables release_base_dir = script_dir / mpsd_release - + mpsd_microarch = get_native_microarchitecture() toolchain_dir = release_base_dir / mpsd_microarch toolchain_dir.mkdir(parents=True, exist_ok=True) spack_setup_script = release_base_dir / "spack-environments" / "spack_setup.sh" @@ -667,9 +667,11 @@ def install_environment( if not os.path.exists("logs"): os.mkdir("logs") for toolchain in toolchains: - # Set the install log file name to config_vars["install_log_file"] - # and replace _toolchains_ with the toolchain name and - # _mpsd_spack_ver_ with mpsd_release + # Set the install log file name from create_log_file_names + _, build_log_file_name = create_log_file_names( + mpsd_release, mpsd_microarch, "install", toolchain=toolchain + ) + build_log_file = toolchain_dir / "logs" / build_log_file_name logging.info(f"Installing toolchain {toolchain} to {toolchain_dir}") @@ -677,7 +679,7 @@ def install_environment( setup_log_cmd( mpsd_release, script_dir, - msg=f"installing {toolchain} and logging at {install_log_file}", + msg=f"installing {toolchain} and logging at {build_log_file}", ) setup_log_cmd( mpsd_release, @@ -689,7 +691,7 @@ def install_environment( ) run( f"bash {spack_setup_script} {' '.join(install_flags)} {toolchain} 2>&1 " - f"| tee -a {install_log_file} ", + f"| tee -a {build_log_file} ", shell=True, check=True, ) @@ -813,7 +815,6 @@ def main(): set_up_logging(args.loglevel, installer_log_file) - # Check the command and run related function if args.action == "remove": remove_environment(args.release, args.toolchains, script_dir) -- GitLab From 747a57d6f0e4492a222865799be4d63d0ee25731 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 11:45:22 +0200 Subject: [PATCH 09/44] fix wrong log location --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index ce28676..095cc39 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -671,7 +671,7 @@ def install_environment( _, build_log_file_name = create_log_file_names( mpsd_release, mpsd_microarch, "install", toolchain=toolchain ) - build_log_file = toolchain_dir / "logs" / build_log_file_name + build_log_file = release_base_dir / "logs" / build_log_file_name logging.info(f"Installing toolchain {toolchain} to {toolchain_dir}") -- GitLab From 4bf382d0105d79a65710f2260bd632ccfdd791ff Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 12:54:32 +0200 Subject: [PATCH 10/44] fix tests and make log file if they dont exists --- mpsd-software-environment.py | 6 +++++- tests.py | 12 ++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 095cc39..d1d3f01 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -671,7 +671,11 @@ def install_environment( _, build_log_file_name = create_log_file_names( mpsd_release, mpsd_microarch, "install", toolchain=toolchain ) - build_log_file = release_base_dir / "logs" / build_log_file_name + build_log_folder = release_base_dir / "logs" + build_log_file = build_log_folder / build_log_file_name + # if logs folder dosent exist, create it + if not os.path.exists(build_log_folder): + os.makedirs(build_log_folder) logging.info(f"Installing toolchain {toolchain} to {toolchain_dir}") diff --git a/tests.py b/tests.py index d2a35f2..1669042 100644 --- a/tests.py +++ b/tests.py @@ -227,7 +227,7 @@ def test_install_environment_zlib(): script_dir.mkdir(exist_ok=True, parents=True) mpsd_release_to_test = "dev-23a" toolchain_to_test = "global_generic" - mpsd_microarch = os.getenv("MPSD_MICROARCH", "UNKNOWN_MICROARCH") + mpsd_microarch = mod.get_native_microarchitecture() release_base_dir = script_dir / mpsd_release_to_test create_mock_git_repository(target_directory=script_dir, create_directory=False) mod.prepare_environment(mpsd_release=mpsd_release_to_test, script_dir=(script_dir)) @@ -280,9 +280,10 @@ def test_install_environment_zlib(): # release_base_dir/mpsd_microarch # print("Debug here ") # time.sleep(10) + build_log = list( - (release_base_dir / mpsd_microarch / "logs").glob( - f"{mpsd_release_to_test}_{toolchain_to_test}_*.log" + (release_base_dir / "logs").glob( + f"{mpsd_release_to_test}_{mpsd_microarch}_*_install.log" ) ) assert len(build_log) > 0 @@ -292,7 +293,7 @@ def test_install_environment_zlib(): with open(build_log, "r") as f: lines = f.read() assert "##### Installation finished" in lines - build_log_file_name = os.path.basename(build_log) + os.path.basename(build_log) # assert that install log files exists assert os.path.exists(release_base_dir / "install.log") @@ -302,8 +303,7 @@ def test_install_environment_zlib(): with open(release_base_dir / "install.log", "r") as f: lines = f.read() assert ( - f"installing {toolchain_to_test} and logging at logs/{build_log_file_name}" - in lines + f"installing {toolchain_to_test} and logging at {str(build_log)}" in lines ) # assert that the module files are created correctly assert os.path.exists(release_base_dir / mpsd_microarch) -- GitLab From cf0f8dd65e8ba2e9b98596ac5f28c4ee9e9d1eb9 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 14:36:47 +0200 Subject: [PATCH 11/44] swap path check and command check while deciding the inst_log name --- mpsd-software-environment.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index b984f67..2353a5e 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -899,12 +899,12 @@ def main(): log_folder = script_dir / mpsd_release / mpsd_microarch / "logs" # if the log_folder dosent exist, dont log this message if # the command is a info-only command - if not os.path.exists(log_folder): - if args.action not in ["status", "available"]: + if args.action not in ["status", "available"]: + if not os.path.exists(log_folder): os.makedirs(log_folder) - installer_log_file = log_folder / installer_log_name - else: - installer_log_file = None + installer_log_file = log_folder / installer_log_name + else: + installer_log_file = None set_up_logging(args.loglevel, installer_log_file) -- GitLab From 4cb3d1c7d8591b527f878592324c72d8f8ef6838 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 14:40:51 +0200 Subject: [PATCH 12/44] add new test to run installer twice This is to ensure that running the same command twice dosent lead to unexpected behaviour --- tests.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests.py b/tests.py index 1669042..5ca3035 100644 --- a/tests.py +++ b/tests.py @@ -268,6 +268,8 @@ def test_install_environment_zlib(): ) with open(setup_file, "w") as f: f.write(lines) + + # install global_generic toolchain mod.install_environment( mpsd_release=mpsd_release_to_test, @@ -316,6 +318,24 @@ def test_install_environment_zlib(): assert "zlib" in lines + # install again to ensure that + # commands that skip creation of folders when + # they are already present works as expected + mod.install_environment( + mpsd_release=mpsd_release_to_test, + toolchains=[toolchain_to_test], + script_dir=script_dir, + enable_build_cache=False, + ) + build_log = list( + (release_base_dir / "logs").glob( + f"{mpsd_release_to_test}_{mpsd_microarch}_*_install.log" + ) + ) + assert len(build_log) > 1 + + + def test_metadata_logging(tmp_path): """Test that metadata is logged and read correctly.""" # Test that the metadata is logged correctly -- GitLab From fd0bee457b11d5eddd35dc700a7dac93f8bcd34c Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 14:46:32 +0200 Subject: [PATCH 13/44] update the date to ensure two log files are created when testing --- tests.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests.py b/tests.py index 5ca3035..1fd13cd 100644 --- a/tests.py +++ b/tests.py @@ -321,6 +321,8 @@ def test_install_environment_zlib(): # install again to ensure that # commands that skip creation of folders when # they are already present works as expected + # reload the module to ensure that date changes + importlib.reload(mod) mod.install_environment( mpsd_release=mpsd_release_to_test, toolchains=[toolchain_to_test], -- GitLab From 451ef739ed7be6c0a0446303d2b16131c3a5f438 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 15:03:42 +0200 Subject: [PATCH 14/44] refactor the installer log filename generation into a seperate function --- mpsd-software-environment.py | 42 ++++++++++++++++++++---------------- tests.py | 7 ++---- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 2353a5e..496466a 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -151,6 +151,29 @@ def read_metadata_from_logfile(logfile: Union[str, Path]) -> dict: } +def get_installer_log_file(args: argparse.Namespace, script_dir: str) -> str: + """Get installer log file name.""" + # Get machine configs + os.environ.get("MPSD_OS", "UNKNOWN_OS") + mpsd_microarch = get_native_microarchitecture() + mpsd_release = args.release + # parse logging first + # decide the log_file_name + installer_log_name, build_log_name = create_log_file_names( + mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=args.action + ) + log_folder = script_dir / mpsd_release / mpsd_microarch / "logs" + # if the log_folder dosent exist, dont log this message if + # the command is a info-only command + if args.action not in ["status", "available"]: + if not os.path.exists(log_folder): + os.makedirs(log_folder) + installer_log_file = log_folder / installer_log_name + else: + installer_log_file = None + return installer_log_file + + def set_up_logging(loglevel="warning", filename=None): """Set up logging. @@ -885,26 +908,9 @@ def main(): # Carry out the action args = parser.parse_args() - # Get machine configs - os.environ.get("MPSD_OS", "UNKNOWN_OS") - mpsd_microarch = get_native_microarchitecture() # target dir is the place where this script exists. the script_dir = Path(os.path.dirname(os.path.realpath(__file__))) - mpsd_release = args.release - # parse logging first - # decide the log_file_name - installer_log_name, build_log_name = create_log_file_names( - mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=args.action - ) - log_folder = script_dir / mpsd_release / mpsd_microarch / "logs" - # if the log_folder dosent exist, dont log this message if - # the command is a info-only command - if args.action not in ["status", "available"]: - if not os.path.exists(log_folder): - os.makedirs(log_folder) - installer_log_file = log_folder / installer_log_name - else: - installer_log_file = None + installer_log_file = get_installer_log_file(args, script_dir) set_up_logging(args.loglevel, installer_log_file) diff --git a/tests.py b/tests.py index 1fd13cd..fb43939 100644 --- a/tests.py +++ b/tests.py @@ -269,7 +269,6 @@ def test_install_environment_zlib(): with open(setup_file, "w") as f: f.write(lines) - # install global_generic toolchain mod.install_environment( mpsd_release=mpsd_release_to_test, @@ -317,9 +316,8 @@ def test_install_environment_zlib(): lines = f.read() assert "zlib" in lines - - # install again to ensure that - # commands that skip creation of folders when + # install again to ensure that + # commands that skip creation of folders when # they are already present works as expected # reload the module to ensure that date changes importlib.reload(mod) @@ -337,7 +335,6 @@ def test_install_environment_zlib(): assert len(build_log) > 1 - def test_metadata_logging(tmp_path): """Test that metadata is logged and read correctly.""" # Test that the metadata is logged correctly -- GitLab From a45ebdd1fafeb09fbcd6cf03698809262132810b Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 15:25:23 +0200 Subject: [PATCH 15/44] remove redundant line --- mpsd-software-environment.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 496466a..5a78c28 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -910,9 +910,8 @@ def main(): # target dir is the place where this script exists. the script_dir = Path(os.path.dirname(os.path.realpath(__file__))) - installer_log_file = get_installer_log_file(args, script_dir) - set_up_logging(args.loglevel, installer_log_file) + set_up_logging(args.loglevel, get_installer_log_file(args, script_dir)) # Check the command and run related function if args.action == "remove": -- GitLab From 0ade577b29d319cc631a60265871e9ff3e654cc6 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 15:56:33 +0200 Subject: [PATCH 16/44] fix installer log file path and tests --- mpsd-software-environment.py | 13 +++++++------ tests.py | 6 +++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 5a78c28..94b41b9 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -151,21 +151,20 @@ def read_metadata_from_logfile(logfile: Union[str, Path]) -> dict: } -def get_installer_log_file(args: argparse.Namespace, script_dir: str) -> str: +def get_installer_log_file(mpsd_release: str, cmd: str, script_dir: str) -> str: """Get installer log file name.""" # Get machine configs os.environ.get("MPSD_OS", "UNKNOWN_OS") mpsd_microarch = get_native_microarchitecture() - mpsd_release = args.release # parse logging first # decide the log_file_name installer_log_name, build_log_name = create_log_file_names( - mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=args.action + mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=cmd ) - log_folder = script_dir / mpsd_release / mpsd_microarch / "logs" + log_folder = script_dir / mpsd_release / "logs" # if the log_folder dosent exist, dont log this message if # the command is a info-only command - if args.action not in ["status", "available"]: + if cmd not in ["status", "available"]: if not os.path.exists(log_folder): os.makedirs(log_folder) installer_log_file = log_folder / installer_log_name @@ -911,7 +910,9 @@ def main(): # target dir is the place where this script exists. the script_dir = Path(os.path.dirname(os.path.realpath(__file__))) - set_up_logging(args.loglevel, get_installer_log_file(args, script_dir)) + set_up_logging( + args.loglevel, get_installer_log_file(args.release, args.action, script_dir) + ) # Check the command and run related function if args.action == "remove": diff --git a/tests.py b/tests.py index fb43939..0860417 100644 --- a/tests.py +++ b/tests.py @@ -270,6 +270,10 @@ def test_install_environment_zlib(): f.write(lines) # install global_generic toolchain + mod.set_up_logging( + "WARNING", + mod.get_installer_log_file(mpsd_release_to_test, "install", script_dir), + ) mod.install_environment( mpsd_release=mpsd_release_to_test, toolchains=[toolchain_to_test], @@ -332,7 +336,7 @@ def test_install_environment_zlib(): f"{mpsd_release_to_test}_{mpsd_microarch}_*_install.log" ) ) - assert len(build_log) > 1 + assert len(build_log) > 2 def test_metadata_logging(tmp_path): -- GitLab From 9ff86f1af651c7ee586936435edc75888d6eb8c3 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Wed, 7 Jun 2023 16:01:52 +0200 Subject: [PATCH 17/44] make tests more precise --- tests.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests.py b/tests.py index 0860417..3ebc8d4 100644 --- a/tests.py +++ b/tests.py @@ -291,7 +291,7 @@ def test_install_environment_zlib(): f"{mpsd_release_to_test}_{mpsd_microarch}_*_install.log" ) ) - assert len(build_log) > 0 + assert len(build_log) == 2 # take the most recent build log build_log = sorted(build_log)[0] # check that the build log contains statement ##### Installation finished @@ -325,6 +325,10 @@ def test_install_environment_zlib(): # they are already present works as expected # reload the module to ensure that date changes importlib.reload(mod) + mod.set_up_logging( + "WARNING", + mod.get_installer_log_file(mpsd_release_to_test, "install", script_dir), + ) mod.install_environment( mpsd_release=mpsd_release_to_test, toolchains=[toolchain_to_test], @@ -336,7 +340,7 @@ def test_install_environment_zlib(): f"{mpsd_release_to_test}_{mpsd_microarch}_*_install.log" ) ) - assert len(build_log) > 2 + assert len(build_log) == 4 def test_metadata_logging(tmp_path): -- GitLab From 9409f26e69dc42b2c1bb01939b7e1c7e27e9780c Mon Sep 17 00:00:00 2001 From: Hans Fangohr <hans.fangohr@mpsd.mpg.de> Date: Wed, 7 Jun 2023 17:01:14 +0200 Subject: [PATCH 18/44] bugfix --- mpsd-software-environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 94b41b9..f85b521 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -800,8 +800,8 @@ def install_environment( mpsd_release, script_dir, msg=( - f"CMD: bash {spack_setup_script} {' '.join(install_flags)}" - "{toolchain}" + f"CMD: bash {spack_setup_script} {' '.join(install_flags)} " + f"{toolchain}" ), ) run( -- GitLab From 8dcd350dfab94421dccdc6a5b61d821a8915974b Mon Sep 17 00:00:00 2001 From: Hans Fangohr <hans.fangohr@mpsd.mpg.de> Date: Wed, 7 Jun 2023 17:23:27 +0200 Subject: [PATCH 19/44] bugfix (space was missing) --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index f85b521..0d4ca90 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -308,7 +308,7 @@ def set_up_logging(loglevel="warning", filename=None): # short message # logging.debug( - f"Logging has been setup, loglevel={loglevel.upper()}" + f"Logging has been setup, loglevel={loglevel.upper()} " + f"{filename=} {rich_available=}" ) -- GitLab From a07cb0f898797227c466653b628afa2c952fc5a4 Mon Sep 17 00:00:00 2001 From: Hans Fangohr <hans.fangohr@mpsd.mpg.de> Date: Wed, 7 Jun 2023 18:44:21 +0200 Subject: [PATCH 20/44] bugfix - suppress duplicate log messages --- mpsd-software-environment.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 0d4ca90..73c61b9 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -270,7 +270,12 @@ def set_up_logging(loglevel="warning", filename=None): shell_handler.setFormatter(shell_formatter) # use the log_level_numeric to decide how much logging is sent to shell shell_handler.setLevel(log_level_numeric) - logger.addHandler(shell_handler) + + # Here we set the handlers of the RootLogger to be just the one we want. + # The reason is that the logging module will add a <StreamHandler <stderr> + # (NOTSET)> handler if logging.info/logging.debug/... is used before we + # come across this line. And we do not want that additional handler. + logger.handlers = [shell_handler] # if filename provided, write log messages to that file, too. if filename: -- GitLab From a359f15a9b73e77bac262d0fdff5130b79c72c4d Mon Sep 17 00:00:00 2001 From: Hans Fangohr <hans.fangohr@mpsd.mpg.de> Date: Wed, 7 Jun 2023 20:05:02 +0200 Subject: [PATCH 21/44] black --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 73c61b9..e965107 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -270,7 +270,7 @@ def set_up_logging(loglevel="warning", filename=None): shell_handler.setFormatter(shell_formatter) # use the log_level_numeric to decide how much logging is sent to shell shell_handler.setLevel(log_level_numeric) - + # Here we set the handlers of the RootLogger to be just the one we want. # The reason is that the logging module will add a <StreamHandler <stderr> # (NOTSET)> handler if logging.info/logging.debug/... is used before we -- GitLab From 4ea831bf19accb9379f36f73b3a6620fca275204 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 10:45:03 +0200 Subject: [PATCH 22/44] avoid : in log names --- mpsd-software-environment.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index e965107..8039431 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -32,7 +32,9 @@ for given system architecture and MPSD software stack version.\n The toolchains are built using the bash script spack_setup.sh, and the results are logged. """ -call_date_iso = datetime.datetime.now().replace(microsecond=0).isoformat() +call_date_iso = ( + datetime.datetime.now().replace(microsecond=0).isoformat().replace(":", "-") +) config_vars = { # kept inside the mpsd_release folder "cmd_log_file": "install.log", -- GitLab From f8a14cba63490982293787babc9e9dcb73871324 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 10:49:20 +0200 Subject: [PATCH 23/44] prefix APEX in the installer log --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 8039431..ab12d51 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -40,7 +40,7 @@ config_vars = { "cmd_log_file": "install.log", # Placeholder installer log file name, placed at mpsd_microarch/logs "installer_log_template": Template( - "${mpsd_release}_${mpsd_microarch}_${date}_${action}.log" + "${mpsd_release}_${mpsd_microarch}_${date}_APEX_${action}.log" ), # Placeholder build log file name, placed at mpsd_microarch/logs "build_log_template": Template( -- GitLab From cf1d44a604f343b11dec6255c8d975109202d3b3 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 10:49:31 +0200 Subject: [PATCH 24/44] prefix BUILD in the build logs --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index ab12d51..28d276d 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -44,7 +44,7 @@ config_vars = { ), # Placeholder build log file name, placed at mpsd_microarch/logs "build_log_template": Template( - "${mpsd_release}_${mpsd_microarch}_${date}_${toolchain}_${action}.log" + "${mpsd_release}_${mpsd_microarch}_${date}_BUILD_${toolchain}_${action}.log" ), "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", -- GitLab From e890b61243a0eabff64fe703c21b504543398bf4 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 10:50:26 +0200 Subject: [PATCH 25/44] change toplevel log file to script_execution_summary.log --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 28d276d..5ed317e 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -37,7 +37,7 @@ call_date_iso = ( ) config_vars = { # kept inside the mpsd_release folder - "cmd_log_file": "install.log", + "cmd_log_file": "script_execution_summary.log", # Placeholder installer log file name, placed at mpsd_microarch/logs "installer_log_template": Template( "${mpsd_release}_${mpsd_microarch}_${date}_APEX_${action}.log" -- GitLab From 8589196c21730855e03b4c2f45760cbb51782078 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 10:54:35 +0200 Subject: [PATCH 26/44] update tests to incorporate new cmd_log_file --- tests.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tests.py b/tests.py index 3ebc8d4..9276189 100644 --- a/tests.py +++ b/tests.py @@ -164,13 +164,13 @@ def test_setup_log_cmd(tmp_path): Check that logs/install-software-environment.log is updated when the module is run """ - log_file = "install.log" + cmd_log_file = mod.config_vars['cmd_log_file'] script_dir = tmp_path / "test_prepare_env" mpsd_release_to_test = "dev-23a" release_base_dir = script_dir / mpsd_release_to_test - if os.path.exists(release_base_dir / log_file): - initial_bytes = os.path.getsize(log_file) + if os.path.exists(release_base_dir / cmd_log_file): + initial_bytes = os.path.getsize(cmd_log_file) else: initial_bytes = 0 @@ -179,11 +179,11 @@ def test_setup_log_cmd(tmp_path): mod.prepare_environment(mpsd_release=mpsd_release_to_test, script_dir=(script_dir)) # check that logs/install-software-environment.log is updated - assert os.path.exists(release_base_dir / log_file) - assert os.path.getsize(release_base_dir / log_file) > initial_bytes + assert os.path.exists(release_base_dir / cmd_log_file) + assert os.path.getsize(release_base_dir / cmd_log_file) > initial_bytes # Check that the log file has "Spack environments branch: dev-23a " in the last line - with open(release_base_dir / log_file, "r") as f: + with open(release_base_dir / cmd_log_file, "r") as f: last_line = f.readlines()[-1] assert "Spack environments branch: dev-23a " in last_line @@ -227,6 +227,7 @@ def test_install_environment_zlib(): script_dir.mkdir(exist_ok=True, parents=True) mpsd_release_to_test = "dev-23a" toolchain_to_test = "global_generic" + cmd_log_file = mod.config_vars['cmd_log_file'] mpsd_microarch = mod.get_native_microarchitecture() release_base_dir = script_dir / mpsd_release_to_test create_mock_git_repository(target_directory=script_dir, create_directory=False) @@ -301,11 +302,11 @@ def test_install_environment_zlib(): os.path.basename(build_log) # assert that install log files exists - assert os.path.exists(release_base_dir / "install.log") + assert os.path.exists(release_base_dir / cmd_log_file) # assert that the build log is written to the install log file os.path.basename(build_log) - with open(release_base_dir / "install.log", "r") as f: + with open(release_base_dir / cmd_log_file, "r") as f: lines = f.read() assert ( f"installing {toolchain_to_test} and logging at {str(build_log)}" in lines -- GitLab From 1bb7595c6cf549a832110178933a96fc41e6b17b Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:08:13 +0200 Subject: [PATCH 27/44] correct the picking of build log in tests --- tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests.py b/tests.py index 9276189..fb2103f 100644 --- a/tests.py +++ b/tests.py @@ -294,7 +294,7 @@ def test_install_environment_zlib(): ) assert len(build_log) == 2 # take the most recent build log - build_log = sorted(build_log)[0] + build_log = sorted(build_log)[1] # check that the build log contains statement ##### Installation finished with open(build_log, "r") as f: lines = f.read() -- GitLab From 8a7371af1b2897237ebf86e38f422570ce893560 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:09:51 +0200 Subject: [PATCH 28/44] skip bad tests --- tests.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests.py b/tests.py index fb2103f..6a890d5 100644 --- a/tests.py +++ b/tests.py @@ -164,7 +164,7 @@ def test_setup_log_cmd(tmp_path): Check that logs/install-software-environment.log is updated when the module is run """ - cmd_log_file = mod.config_vars['cmd_log_file'] + cmd_log_file = mod.config_vars["cmd_log_file"] script_dir = tmp_path / "test_prepare_env" mpsd_release_to_test = "dev-23a" @@ -227,7 +227,7 @@ def test_install_environment_zlib(): script_dir.mkdir(exist_ok=True, parents=True) mpsd_release_to_test = "dev-23a" toolchain_to_test = "global_generic" - cmd_log_file = mod.config_vars['cmd_log_file'] + cmd_log_file = mod.config_vars["cmd_log_file"] mpsd_microarch = mod.get_native_microarchitecture() release_base_dir = script_dir / mpsd_release_to_test create_mock_git_repository(target_directory=script_dir, create_directory=False) @@ -383,8 +383,12 @@ def test_metadata_logging(tmp_path): assert len(read_dict) == len(keys) +@pytest.mark.skip( + reason="This function is redundant in the next version of the script." +) def test_create_log_file_names(): """Test that the log file names are created correctly.""" + pass create_log_file_names = mod.create_log_file_names mpsd_release = "dev-23a" mpsd_microarch = "sandybridge" -- GitLab From 5834398cb53ba677193f483f4b9a4f3c9783cf51 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:15:23 +0200 Subject: [PATCH 29/44] clarify that get_installer_log_file gets name --- mpsd-software-environment.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 5ed317e..6ff170d 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -153,7 +153,7 @@ def read_metadata_from_logfile(logfile: Union[str, Path]) -> dict: } -def get_installer_log_file(mpsd_release: str, cmd: str, script_dir: str) -> str: +def get_installer_log_file_name(mpsd_release: str, cmd: str, script_dir: str) -> str: """Get installer log file name.""" # Get machine configs os.environ.get("MPSD_OS", "UNKNOWN_OS") @@ -918,7 +918,8 @@ def main(): script_dir = Path(os.path.dirname(os.path.realpath(__file__))) set_up_logging( - args.loglevel, get_installer_log_file(args.release, args.action, script_dir) + args.loglevel, + get_installer_log_file_name(args.release, args.action, script_dir), ) # Check the command and run related function -- GitLab From 1b53a4ffd2726c73ce7698c39a425ac00289a89b Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:17:31 +0200 Subject: [PATCH 30/44] fix tests --- tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.py b/tests.py index 6a890d5..906d979 100644 --- a/tests.py +++ b/tests.py @@ -273,7 +273,7 @@ def test_install_environment_zlib(): # install global_generic toolchain mod.set_up_logging( "WARNING", - mod.get_installer_log_file(mpsd_release_to_test, "install", script_dir), + mod.get_installer_log_file_name(mpsd_release_to_test, "install", script_dir), ) mod.install_environment( mpsd_release=mpsd_release_to_test, @@ -328,7 +328,7 @@ def test_install_environment_zlib(): importlib.reload(mod) mod.set_up_logging( "WARNING", - mod.get_installer_log_file(mpsd_release_to_test, "install", script_dir), + mod.get_installer_log_file_name(mpsd_release_to_test, "install", script_dir), ) mod.install_environment( mpsd_release=mpsd_release_to_test, -- GitLab From f0fb27accc5c0a1b9168084fa86ad94fd7b41e74 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:20:03 +0200 Subject: [PATCH 31/44] fix filename in set_up_logging --- mpsd-software-environment.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 6ff170d..f0fa3ab 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -175,7 +175,7 @@ def get_installer_log_file_name(mpsd_release: str, cmd: str, script_dir: str) -> return installer_log_file -def set_up_logging(loglevel="warning", filename=None): +def set_up_logging(loglevel="warning", file_path=None): """Set up logging. This function sets up the logging configuration for the script. @@ -190,7 +190,7 @@ def set_up_logging(loglevel="warning", filename=None): - warning (default): only print statements if something is unexpected - info (show more detailed progress) - debug (show very detailed output) - filename : str + file_path : str - filename to save logging messages into If loglevel is 'debug', save line numbers in log messages. @@ -280,8 +280,8 @@ def set_up_logging(loglevel="warning", filename=None): logger.handlers = [shell_handler] # if filename provided, write log messages to that file, too. - if filename: - file_handler = logging.FileHandler(filename) + if file_path: + file_handler = logging.FileHandler(file_path) # if we have a file, we write all information in there. # We could change the level, for example restrict to only DEBUG and above with # file_handler.setLevel(logging.DEBUG) @@ -305,9 +305,9 @@ def set_up_logging(loglevel="warning", filename=None): print_log.addHandler(ch) # if filename provided, write output of print_log to that file, too - if filename: + if file_path: # create, format and add file handler - fh = logging.FileHandler(filename) + fh = logging.FileHandler(file_path) fh.setFormatter(formatter) print_log.addHandler(fh) @@ -316,7 +316,7 @@ def set_up_logging(loglevel="warning", filename=None): # logging.debug( f"Logging has been setup, loglevel={loglevel.upper()} " - + f"{filename=} {rich_available=}" + + f"{file_path=} {rich_available=}" ) -- GitLab From b0cb4728afd07a2ceb2adc4822f3e341894615d6 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:22:20 +0200 Subject: [PATCH 32/44] fix typo it should be get_installer_log_file_path --- tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.py b/tests.py index 906d979..fa924dc 100644 --- a/tests.py +++ b/tests.py @@ -273,7 +273,7 @@ def test_install_environment_zlib(): # install global_generic toolchain mod.set_up_logging( "WARNING", - mod.get_installer_log_file_name(mpsd_release_to_test, "install", script_dir), + mod.get_installer_log_file_path(mpsd_release_to_test, "install", script_dir), ) mod.install_environment( mpsd_release=mpsd_release_to_test, @@ -328,7 +328,7 @@ def test_install_environment_zlib(): importlib.reload(mod) mod.set_up_logging( "WARNING", - mod.get_installer_log_file_name(mpsd_release_to_test, "install", script_dir), + mod.get_installer_log_file_path(mpsd_release_to_test, "install", script_dir), ) mod.install_environment( mpsd_release=mpsd_release_to_test, -- GitLab From 74694e62008593c45513bab5a403f1e06084810d Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:22:39 +0200 Subject: [PATCH 33/44] fix typo : get_installer_log_file_path --- mpsd-software-environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index f0fa3ab..e0264de 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -153,7 +153,7 @@ def read_metadata_from_logfile(logfile: Union[str, Path]) -> dict: } -def get_installer_log_file_name(mpsd_release: str, cmd: str, script_dir: str) -> str: +def get_installer_log_file_path(mpsd_release: str, cmd: str, script_dir: str) -> str: """Get installer log file name.""" # Get machine configs os.environ.get("MPSD_OS", "UNKNOWN_OS") @@ -919,7 +919,7 @@ def main(): set_up_logging( args.loglevel, - get_installer_log_file_name(args.release, args.action, script_dir), + get_installer_log_file_path(args.release, args.action, script_dir), ) # Check the command and run related function -- GitLab From 499b03f3f2d677c440e2c8d3d871c7e588423b91 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:23:02 +0200 Subject: [PATCH 34/44] update doc string --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index e0264de..d9ae099 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -154,7 +154,7 @@ def read_metadata_from_logfile(logfile: Union[str, Path]) -> dict: def get_installer_log_file_path(mpsd_release: str, cmd: str, script_dir: str) -> str: - """Get installer log file name.""" + """Get installer log file path.""" # Get machine configs os.environ.get("MPSD_OS", "UNKNOWN_OS") mpsd_microarch = get_native_microarchitecture() -- GitLab From 7d09f26cfb779a4c52a7590158586eae747b2bea Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:29:46 +0200 Subject: [PATCH 35/44] fix build_log_path in install_environment --- mpsd-software-environment.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index d9ae099..10be2df 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -790,7 +790,7 @@ def install_environment( mpsd_release, mpsd_microarch, "install", toolchain=toolchain ) build_log_folder = release_base_dir / "logs" - build_log_file = build_log_folder / build_log_file_name + build_log_path = build_log_folder / build_log_file_name # if logs folder dosent exist, create it if not os.path.exists(build_log_folder): os.makedirs(build_log_folder) @@ -801,7 +801,7 @@ def install_environment( setup_log_cmd( mpsd_release, script_dir, - msg=f"installing {toolchain} and logging at {build_log_file}", + msg=f"installing {toolchain} and logging at {build_log_path}", ) setup_log_cmd( mpsd_release, @@ -813,7 +813,7 @@ def install_environment( ) run( f"bash {spack_setup_script} {' '.join(install_flags)} {toolchain} 2>&1 " - f"| tee -a {build_log_file} ", + f"| tee -a {build_log_path} ", shell=True, check=True, ) -- GitLab From cebc78aac3fec78dc14f600ae5203113d7380a15 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 11:30:45 +0200 Subject: [PATCH 36/44] fix tests --- tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.py b/tests.py index fa924dc..01be0fd 100644 --- a/tests.py +++ b/tests.py @@ -14,7 +14,7 @@ mod = importlib.import_module("mpsd-software-environment") # set loglevel to debug - useful for understanding problems. # (if the tests pass, pytest doesn't show any output) -mod.set_up_logging(loglevel="debug", filename="tests.log") +mod.set_up_logging(loglevel="debug", file_path="tests.log") logging.debug(f"We have set up logging from {__file__}") @@ -349,7 +349,7 @@ def test_metadata_logging(tmp_path): # Test that the metadata is logged correctly filename = tmp_path / "test-metadata.log" print(f"Writing to {filename}") - mod.set_up_logging(loglevel="debug", filename=filename) + mod.set_up_logging(loglevel="debug", file_path=filename) # our test data keys = ["important_key", "important_key2"] -- GitLab From 4c752b1e95ee5d6bf223359f5811d26308a7d645 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 12:08:10 +0200 Subject: [PATCH 37/44] restructure create_log_file_names --- mpsd-software-environment.py | 49 ++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 10be2df..c34c9e3 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -51,24 +51,23 @@ config_vars = { "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", } - def create_log_file_names( mpsd_release: str, mpsd_microarch: str, action: str, date: str = call_date_iso, toolchain: str = None, -) -> Tuple[str, str]: +) -> str: """Create log file names. - This function creates the log file names for the installer and + This function creates the log file names for either the installer or the build log files. - The installer log file is created - from the output of this script except - the toolchain build log that is handled by the spack_setup.sh script. - The build log `tee`'s the output of the spack_setup.sh script to the log file. - The log file names are created using the - template strings defined in config_vars. + + If a toolchain is given, then the build log file name is created. + if no toolchain is given, then the installer log file name is created. + The insaller log file hosts the logs of the installer script, while + the build log file hosts the logs of the build process as generated by the + spack_setup.sh script. Parameters ---------- @@ -83,28 +82,28 @@ def create_log_file_names( only install and remove are valid for build log file. toolchain : str toolchain name (only for build log file) - returns : tuple - tuple containing installer_log_file, build_log_file, file names + + Returns + ------- + str + log file name + installer_log_file_name or build_log_file_name depending on the + parameters given. """ - installer_log_file = config_vars["installer_log_template"].substitute( - mpsd_release=mpsd_release, - mpsd_microarch=mpsd_microarch, - date=date, - action=action, - ) - if toolchain and action in ["install", "remove"]: - build_log_file = config_vars["build_log_template"].substitute( - mpsd_release=mpsd_release, + if toolchain: + # if toolchain is given, then we build the build_log_file_name + if action in ["install", "remove"]: + log_template = config_vars["build_log_template"] + else: + # if toolchain is not given, then we build the installer_log_file_name + log_template = config_vars["installer_log_template"] + + return log_template.substitute( mpsd_microarch=mpsd_microarch, date=date, action=action, toolchain=toolchain, ) - else: - build_log_file = None - logging.warning("Incorrect action or toolchain name.") - return installer_log_file, build_log_file - def log_metadata(key: str, value: str) -> None: """Log metadata to the log file. -- GitLab From 7e8f39a3db2e49726fce43b447783c8f8377f72a Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 12:11:18 +0200 Subject: [PATCH 38/44] update usage of the function --- mpsd-software-environment.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index c34c9e3..7925e7b 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -159,7 +159,7 @@ def get_installer_log_file_path(mpsd_release: str, cmd: str, script_dir: str) -> mpsd_microarch = get_native_microarchitecture() # parse logging first # decide the log_file_name - installer_log_name, build_log_name = create_log_file_names( + installer_log_name = create_log_file_names( mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, action=cmd ) log_folder = script_dir / mpsd_release / "logs" @@ -785,7 +785,7 @@ def install_environment( os.mkdir("logs") for toolchain in toolchains: # Set the install log file name from create_log_file_names - _, build_log_file_name = create_log_file_names( + build_log_file_name = create_log_file_names( mpsd_release, mpsd_microarch, "install", toolchain=toolchain ) build_log_folder = release_base_dir / "logs" -- GitLab From 790ea004a54b6206c6a5400baee432b9ff6d7733 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 12:15:45 +0200 Subject: [PATCH 39/44] return none for wrong action --- mpsd-software-environment.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 7925e7b..c208654 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -94,6 +94,8 @@ def create_log_file_names( # if toolchain is given, then we build the build_log_file_name if action in ["install", "remove"]: log_template = config_vars["build_log_template"] + else: + return None else: # if toolchain is not given, then we build the installer_log_file_name log_template = config_vars["installer_log_template"] -- GitLab From 5145b063744a85f6d0f86debe3c99874174346df Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 13:12:25 +0200 Subject: [PATCH 40/44] fix typo and tests --- mpsd-software-environment.py | 1 + tests.py | 37 ++++++++++++++++-------------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index c208654..6fcba2b 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -101,6 +101,7 @@ def create_log_file_names( log_template = config_vars["installer_log_template"] return log_template.substitute( + mpsd_release=mpsd_release, mpsd_microarch=mpsd_microarch, date=date, action=action, diff --git a/tests.py b/tests.py index 01be0fd..f364eb2 100644 --- a/tests.py +++ b/tests.py @@ -383,51 +383,46 @@ def test_metadata_logging(tmp_path): assert len(read_dict) == len(keys) -@pytest.mark.skip( - reason="This function is redundant in the next version of the script." -) + def test_create_log_file_names(): """Test that the log file names are created correctly.""" - pass create_log_file_names = mod.create_log_file_names mpsd_release = "dev-23a" mpsd_microarch = "sandybridge" date = datetime.datetime.now().replace(microsecond=0).isoformat() action = "install" toolchain = "foss2021a" - # test for correct action and toolchain - installer_log_file, build_log_file = create_log_file_names( + # test build_log_file_name generation + build_log_file_name = create_log_file_names( mpsd_microarch=mpsd_microarch, mpsd_release=mpsd_release, date=date, action=action, toolchain=toolchain, ) - assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_{action}.log" assert ( - build_log_file - == f"{mpsd_release}_{mpsd_microarch}_{date}_{toolchain}_{action}.log" + build_log_file_name + == f"{mpsd_release}_{mpsd_microarch}_{date}_BUILD_{toolchain}_{action}.log" ) - # test no build log file for incorrect action - installer_log_file, build_log_file = create_log_file_names( + installer_log_file_name = create_log_file_names( mpsd_microarch=mpsd_microarch, mpsd_release=mpsd_release, date=date, - action="status", - toolchain=toolchain, + action=action, ) - assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_status.log" - assert build_log_file is None - # test no build log file for incorrect toolchain - installer_log_file, build_log_file = create_log_file_names( + assert ( + installer_log_file_name + == f"{mpsd_release}_{mpsd_microarch}_{date}_APEX_{action}.log" + ) + # test no build log file for incorrect action + build_log_file_name = create_log_file_names( mpsd_microarch=mpsd_microarch, mpsd_release=mpsd_release, date=date, - action="reinstall", - toolchain=None, + action="status", + toolchain=toolchain, ) - assert installer_log_file == f"{mpsd_release}_{mpsd_microarch}_{date}_reinstall.log" - assert build_log_file is None + assert build_log_file_name is None def test_interface(tmp_path): -- GitLab From c4609953d0c8df9adf0fa80000c9e91c3195dbe7 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 13:14:02 +0200 Subject: [PATCH 41/44] black --- mpsd-software-environment.py | 16 +++++++++------- tests.py | 1 - 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 6fcba2b..e84963e 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -51,6 +51,7 @@ config_vars = { "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", } + def create_log_file_names( mpsd_release: str, mpsd_microarch: str, @@ -82,7 +83,7 @@ def create_log_file_names( only install and remove are valid for build log file. toolchain : str toolchain name (only for build log file) - + Returns ------- str @@ -101,12 +102,13 @@ def create_log_file_names( log_template = config_vars["installer_log_template"] return log_template.substitute( - mpsd_release=mpsd_release, - mpsd_microarch=mpsd_microarch, - date=date, - action=action, - toolchain=toolchain, - ) + mpsd_release=mpsd_release, + mpsd_microarch=mpsd_microarch, + date=date, + action=action, + toolchain=toolchain, + ) + def log_metadata(key: str, value: str) -> None: """Log metadata to the log file. diff --git a/tests.py b/tests.py index f364eb2..c284591 100644 --- a/tests.py +++ b/tests.py @@ -383,7 +383,6 @@ def test_metadata_logging(tmp_path): assert len(read_dict) == len(keys) - def test_create_log_file_names(): """Test that the log file names are created correctly.""" create_log_file_names = mod.create_log_file_names -- GitLab From 9d5fdffa884922eff643edebd01c1a336074136a Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 13:47:11 +0200 Subject: [PATCH 42/44] fix typo --- mpsd-software-environment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index e84963e..f337892 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -66,7 +66,7 @@ def create_log_file_names( If a toolchain is given, then the build log file name is created. if no toolchain is given, then the installer log file name is created. - The insaller log file hosts the logs of the installer script, while + The installer log file hosts the logs of the installer script, while the build log file hosts the logs of the build process as generated by the spack_setup.sh script. -- GitLab From c3b62aab6f22da548fb97c7c101afff486cd4589 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 13:52:10 +0200 Subject: [PATCH 43/44] expand the returns to included the case for None --- mpsd-software-environment.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index f337892..4fcd65f 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -58,7 +58,7 @@ def create_log_file_names( action: str, date: str = call_date_iso, toolchain: str = None, -) -> str: +) -> Union[str, None]: """Create log file names. This function creates the log file names for either the installer or @@ -86,10 +86,12 @@ def create_log_file_names( Returns ------- - str + str or None log file name installer_log_file_name or build_log_file_name depending on the parameters given. + If the action is not one that changes the files on disk ( info only actions) + then None is returned. """ if toolchain: # if toolchain is given, then we build the build_log_file_name -- GitLab From 5d1f51af6c3bf679f770a4e7c1fae09ba81fc925 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 8 Jun 2023 14:16:50 +0200 Subject: [PATCH 44/44] simplify create_log_file_names using fsrings --- mpsd-software-environment.py | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 4fcd65f..3f6b33f 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -12,7 +12,6 @@ import time from pathlib import Path from typing import List, Tuple, Union import re -from string import Template # If 'rich' is available ("pip install rich" or "apt-get install python3-rich"), # then use coloured output, otherwise proceed as before @@ -38,14 +37,7 @@ call_date_iso = ( config_vars = { # kept inside the mpsd_release folder "cmd_log_file": "script_execution_summary.log", - # Placeholder installer log file name, placed at mpsd_microarch/logs - "installer_log_template": Template( - "${mpsd_release}_${mpsd_microarch}_${date}_APEX_${action}.log" - ), - # Placeholder build log file name, placed at mpsd_microarch/logs - "build_log_template": Template( - "${mpsd_release}_${mpsd_microarch}_${date}_BUILD_${toolchain}_${action}.log" - ), + # Metadata tags "metadata_tag_open": "!<meta>", "metadata_tag_close": "</meta>!", "spack_environments_repo": "https://gitlab.gwdg.de/mpsd-cs/spack-environments.git", @@ -96,20 +88,16 @@ def create_log_file_names( if toolchain: # if toolchain is given, then we build the build_log_file_name if action in ["install", "remove"]: - log_template = config_vars["build_log_template"] + log_file_name = ( + f"{mpsd_release}_{mpsd_microarch}_{date}_BUILD_{toolchain}_{action}.log" + ) else: return None else: # if toolchain is not given, then we build the installer_log_file_name - log_template = config_vars["installer_log_template"] - - return log_template.substitute( - mpsd_release=mpsd_release, - mpsd_microarch=mpsd_microarch, - date=date, - action=action, - toolchain=toolchain, - ) + log_file_name = f"{mpsd_release}_{mpsd_microarch}_{date}_APEX_{action}.log" + + return log_file_name def log_metadata(key: str, value: str) -> None: -- GitLab