From 91d3d212289aac76d3756e9a1c7f41c49077c2d6 Mon Sep 17 00:00:00 2001 From: Mika Laitio Date: Wed, 22 Oct 2025 10:19:53 -0700 Subject: [PATCH] Improve os-specifix cmd phase override - allow override the generic "CMD__BUILD" phase commands for all phase commands for linux and windows. (CMD_BUILD, CMD_BUILD_LINUX, CMD_BUILD_WINDOWS...) Signed-off-by: Mika Laitio --- apps/deps_common.cfg | 9 +++++- lib_python/app_builder.py | 52 +++++++++++++++++++---------------- lib_python/rcb_constants.py | 3 ++ lib_python/repo_management.py | 10 +++++-- 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/apps/deps_common.cfg b/apps/deps_common.cfg index d426a4a..e99ef51 100644 --- a/apps/deps_common.cfg +++ b/apps/deps_common.cfg @@ -4,7 +4,14 @@ APP_NAME=deps_common CMD_EXEC_DIR=${RCB_APP_BUILD_DIR} CMD_INSTALL = pip install pybind11 "cmake<4.0" ninja matplotlib pandas huggingface_hub -CMD_POST_INSTALL=echo "export ROCM_HOME=${ROCM_HOME}" > ${ROCM_HOME}/bin/init_env_rocm.sh + +CMD_POST_INSTALL_LINUX=echo "export ROCM_HOME=${ROCM_HOME}" > ${ROCM_HOME}/bin/init_env_rocm.sh echo "export PATH=\${ROCM_HOME}/bin:\${ROCM_HOME}/lib/llvm/bin:\${PATH}" >> ${ROCM_HOME}/bin/init_env_rocm.sh echo "export LD_LIBRARY_PATH=\${ROCM_HOME}/lib:\${ROCM_HOME}/lib/llvm/lib" >> ${ROCM_HOME}/bin/init_env_rocm.sh echo "export TRITON_HIP_LLD_PATH=\${ROCM_HOME}/lib/llvm/bin/ld.lld" >> ${ROCM_HOME}/bin/init_env_rocm.sh + +CMD_POST_INSTALL_WINDOWS=setlocal + echo set "ROCM_HOME=$ROCM_HOME" >> $ROCM_HOME\bin\init_env_rocm.bat + echo set "PATH=$ROCM_HOME\bin;$ROCM_HOME\lib\llvm\bin;$ROCM_HOME\lib;$ROCM_HOME\lib\llvm\lib;$PATH" >> $ROCM_HOME\bin\init_env_rocm.bat + echo set "TRITON_HIP_LLD_PATH=$ROCM_HOME\lib\llvm\bin\ld.lld" >> $ROCM_HOME\bin\init_env_rocm.bat + endlocal diff --git a/lib_python/app_builder.py b/lib_python/app_builder.py index 160b9a5..dfdc6d1 100755 --- a/lib_python/app_builder.py +++ b/lib_python/app_builder.py @@ -100,6 +100,20 @@ def _get_app_info_boolean_value(self, config_key): return ret + #return either os specific or generic version of command depending which is available. + #if both versions of command exist in app-config file, then the os-specific is selected. + def _get_cmd_phase_allowing_os_override(self, cmd_generic): + if self.is_posix: + cmd_os = cmd_generic + rcb_const.RCB__APP_CFG__CMD_PHASE_EXTENSION_LINUX + else: + cmd_os = cmd_generic + rcb_const.RCB__APP_CFG__CMD_PHASE_EXTENSION_WINDOWS + if self.has_option(rcb_const.RCB__APP_CFG__SECTION_APP_INFO, cmd_os): + ret = self._get_app_info_config_value(cmd_os) + else: + ret = self._get_app_info_config_value(cmd_generic) + return ret + + def __init__( self, rock_builder_root_dir, @@ -180,12 +194,12 @@ def __init__( else: prop_name = rcb_const.RCB__APP_CFG__KEY__PROP_IS_BUILD_ENABLED_WINDOWS if self.has_option(rcb_const.RCB__APP_CFG__SECTION_APP_INFO, prop_name): - self.enable_on_os = self._get_app_info_config_value(prop_name) + self.enable_on_os = self._get_app_info_boolean_value(prop_name) else: # check only if OS specific property version is not used prop_name = rcb_const.RCB__APP_CFG__KEY__PROP_IS_BUILD_ENABLED if self.has_option(rcb_const.RCB__APP_CFG__SECTION_APP_INFO, prop_name): - self.enable_on_os = self._get_app_info_config_value(prop_name) + self.enable_on_os = self._get_app_info_boolean_value(prop_name) else: self.enable_on_os = True @@ -216,28 +230,18 @@ def __init__( self.env_setup_cmd.extend(temp_env_list) else: self.env_setup_cmd = temp_env_list - self.CMD_INIT = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_INIT) - self.CMD_CLEAN = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_CLEAN) - self.CMD_HIPIFY = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_HIPIFY) - self.CMD_PRE_CONFIG = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_PRE_CONFIG) - self.CMD_CONFIG = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_CONFIG) - self.CMD_POST_CONFIG = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_POST_CONFIG) - - # here we want to check if specific CMD_BUILD_LINUX or CMD_BUILD_WINDOWS option is set - # otherwise we use generic "CMD_BUILD" option - if self.is_posix: - if self.has_option(rcb_const.RCB__APP_CFG__SECTION_APP_INFO, rcb_const.RCB__APP_CFG__KEY__CMD_BUILD_LINUX): - self.CMD_BUILD = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_BUILD_LINUX) - else: - self.CMD_BUILD = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_BUILD) - else: - if self.has_option(rcb_const.RCB__APP_CFG__SECTION_APP_INFO, rcb_const.RCB__APP_CFG__KEY__CMD_BUILD_WINDOWS): - self.CMD_BUILD = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_BUILD_WINDOWS) - else: - self.CMD_BUILD = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_BUILD) - self.CMD_CMAKE_CONFIG = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_CMAKE_CONFIG) - self.CMD_INSTALL = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_INSTALL) - self.CMD_POST_INSTALL = self._get_app_info_config_value(rcb_const.RCB__APP_CFG__KEY__CMD_POST_INSTALL) + # here we want to check if specific CMD_XXX_LINUX or CMD_XXX_WINDOWS option is set + # otherwise we use generic "CMD_XXX" option + self.CMD_INIT = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_INIT) + self.CMD_CLEAN = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_CLEAN) + self.CMD_HIPIFY = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_HIPIFY) + self.CMD_PRE_CONFIG = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_PRE_CONFIG) + self.CMD_CONFIG = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_CONFIG) + self.CMD_POST_CONFIG = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_POST_CONFIG) + self.CMD_BUILD = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_BUILD) + self.CMD_CMAKE_CONFIG = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_CMAKE_CONFIG) + self.CMD_INSTALL = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_INSTALL) + self.CMD_POST_INSTALL = self._get_cmd_phase_allowing_os_override(rcb_const.RCB__APP_CFG__KEY__CMD_POST_INSTALL) self.app_root_dir_path = Path(rock_builder_root_dir) self.app_src_dir_path = app_src_dir diff --git a/lib_python/rcb_constants.py b/lib_python/rcb_constants.py index 060f3a8..8783f61 100644 --- a/lib_python/rcb_constants.py +++ b/lib_python/rcb_constants.py @@ -58,6 +58,9 @@ RCB__APP_CFG__KEY__CMD_EXEC_DIR = "CMD_EXEC_DIR" +RCB__APP_CFG__CMD_PHASE_EXTENSION_LINUX = "_LINUX" +RCB__APP_CFG__CMD_PHASE_EXTENSION_WINDOWS = "_WINDOWS" + RCB__APP_CFG__KEY__CMD_INIT = "CMD_INIT" RCB__APP_CFG__KEY__CMD_CLEAN = "CMD_CLEAN" RCB__APP_CFG__KEY__CMD_CHECKOUT = "CMD_CHECKOUT" diff --git a/lib_python/repo_management.py b/lib_python/repo_management.py index e3a212f..043062e 100644 --- a/lib_python/repo_management.py +++ b/lib_python/repo_management.py @@ -189,7 +189,10 @@ def _handle_RCB_CALLBACK__INSTALL_PYTHON_WHEEL(self, CMD_INSTALL): ret = False return ret - def _handle_command_exec(self, exec_phase_name, exec_cmd, cmd_exec_dir): + def _handle_command_exec(self, + exec_phase_name, + exec_cmd, + cmd_exec_dir): ret = True if exec_cmd: exec_cmd = os.path.expandvars(exec_cmd) @@ -758,7 +761,10 @@ def do_cmake_install(self): return ret def do_post_install(self, CMD_POST_INSTALL): - return self._exec_subprocess_cmd(CMD_POST_INSTALL, self.app_exec_dir) + ret = self._handle_command_exec("post_install", + CMD_POST_INSTALL, + self.app_exec_dir) + return ret def do_save_patches(self): ret = True