CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
125 lines
5.2 KiB
Python
125 lines
5.2 KiB
Python
import glob
|
|
import sys
|
|
import os
|
|
import re
|
|
|
|
if len(sys.argv) > 1:
|
|
build_folder = sys.argv[1]
|
|
install_folder = sys.argv[2]
|
|
# print(f"In relative_paths.py [1]: build folder: {build_folder}")
|
|
# print(f"In relative_paths.py [2]: install folder: {install_folder}")
|
|
else:
|
|
print(
|
|
f"Args not provided. Please provide arg1-build folder-catch_tests, arg2-install folder"
|
|
)
|
|
exit(1)
|
|
|
|
install_folder = os.path.abspath(install_folder)
|
|
install_catch_tests = os.path.join(install_folder, "catch_tests")
|
|
install_script = os.path.join(install_catch_tests, "script")
|
|
|
|
modified_msg = """
|
|
# File has been updated by hip-tests/catch folder for portability
|
|
"""
|
|
ctest_current_str = """
|
|
file(REAL_PATH ${CMAKE_CURRENT_LIST_FILE} FULL_FILE_PATH)
|
|
get_filename_component(CTEST_CURRENT_DIR ${FULL_FILE_PATH} DIRECTORY)
|
|
file(REAL_PATH ${CTEST_CURRENT_DIR}/.. EXE_PATH)
|
|
"""
|
|
if os.name == "posix":
|
|
library_path_str = """
|
|
set(LIB_PATH ${EXE_PATH}/../../../lib)
|
|
file(GLOB HIP_LIBS "${LIB_PATH}/libamdhip64*")
|
|
if(HIP_LIBS)
|
|
set(LIB_PATH ${LIB_PATH} ${LIB_PATH}/rocm_sysdeps/lib)
|
|
else()
|
|
set(LIB_PATH "/opt/rocm/lib")
|
|
endif()
|
|
"""
|
|
ctest_current_str += library_path_str
|
|
|
|
inc_cmake_pattern = "_include.cmake"
|
|
ctesttest_pattern = "CTestTestfile.cmake"
|
|
|
|
|
|
def make_test_files_portable(filenames):
|
|
"""
|
|
changes the absolute paths with relative paths
|
|
filenames - list of files to perform the workaround
|
|
"""
|
|
for filename in filenames:
|
|
try:
|
|
filename = os.path.abspath(filename)
|
|
# Read the entire content of the file
|
|
with open(filename, "r", encoding="utf-8") as file:
|
|
file_content = file.read()
|
|
# print(f"**Done reading now parsing", filename)
|
|
# 1 replace abs path with filename. Make relative
|
|
old_text = os.path.dirname(os.path.abspath(filename))
|
|
abs_dir_path = os.path.join(old_text, "")
|
|
old_text = abs_dir_path.replace("\\", "/")
|
|
if modified_msg not in file_content:
|
|
file_content = modified_msg + file_content
|
|
# Perform the replacement
|
|
modified_content = file_content.replace(old_text, "")
|
|
if inc_cmake_pattern in filename:
|
|
# 2 get folder path relative to the current *_include.cmake
|
|
if r"file(REAL_PATH" not in modified_content:
|
|
modified_content = ctest_current_str + modified_content
|
|
# 3 CTEST_FILE to have parameterized relative file
|
|
test_cmake_pattern = r"\[==\[(\w+-[a-f0-9]+_tests.cmake)\]==\]"
|
|
replace_test_pattern = r"${CTEST_CURRENT_DIR}/\1"
|
|
modified_content = re.sub(
|
|
test_cmake_pattern, replace_test_pattern, modified_content
|
|
)
|
|
# 4 script to use CatchAddTests.cmake from build rather than src
|
|
add_test_pattern = r'include\(".*CatchAddTests\.cmake"\)'
|
|
replace_add_test_pattern = (
|
|
'include("${CTEST_CURRENT_DIR}/CatchAddTests.cmake")'
|
|
)
|
|
modified_content = re.sub(
|
|
add_test_pattern, replace_add_test_pattern, modified_content
|
|
)
|
|
# 5 use exe from previous folder
|
|
exe_pattern = r"TEST_EXECUTABLE\s+\[==\[(.*?)\]==\]"
|
|
replace_exe_pattern = r"TEST_EXECUTABLE ${EXE_PATH}/\1"
|
|
modified_content = re.sub(
|
|
exe_pattern, replace_exe_pattern, modified_content
|
|
)
|
|
# 6 include _ctest.cmake file with path
|
|
ctest_test_pattern = r'include\("(.*?_tests\.cmake)"\)'
|
|
replace_ctest_pattern = r'include("${CTEST_CURRENT_DIR}/\1")'
|
|
modified_content = re.sub(
|
|
ctest_test_pattern, replace_ctest_pattern, modified_content
|
|
)
|
|
# 7 use script folder as cwd
|
|
cwd_pattern = r"TEST_WORKING_DIR\s+\[==\[(.*?)\]==\]"
|
|
replace_cwd_pattern = r"TEST_WORKING_DIR ${EXE_PATH}"
|
|
modified_content = re.sub(
|
|
cwd_pattern, replace_cwd_pattern, modified_content
|
|
)
|
|
# 8 modify ld_library_path
|
|
if os.name == "posix":
|
|
lib_path_pattern = r"TEST_DL_PATHS\s+\[==\[(.*?)\]==\]"
|
|
replace_lib_path_pattern = r"TEST_DL_PATHS ${LIB_PATH}"
|
|
modified_content = re.sub(
|
|
lib_path_pattern, replace_lib_path_pattern, modified_content
|
|
)
|
|
|
|
filename = os.path.basename(filename)
|
|
install_path = os.path.join(install_script, filename)
|
|
# Write the modified content back to the file
|
|
with open(install_path, "w", encoding="utf-8") as file:
|
|
file.write(modified_content)
|
|
# print(f"**Done parsing now writing into", install_path)
|
|
except IOError as e:
|
|
print(f"Error: '{e}'")
|
|
sys.exit({e})
|
|
except Exception as e:
|
|
print(f"An error occurred: {e}")
|
|
sys.exit({e})
|
|
|
|
|
|
inccmake_files = glob.glob(build_folder + "/**/*" + inc_cmake_pattern, recursive=True)
|
|
make_test_files_portable(inccmake_files)
|