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
45 lines
1.4 KiB
CMake
45 lines
1.4 KiB
CMake
# Copyright (c) Advanced Micro Devices, Inc.
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
# Apply a patch idempotently.
|
|
#
|
|
# CMake's ExternalProject regenerates `*-patch-info.txt` on every reconfigure,
|
|
# which makes the patch step appear out-of-date and re-runs it. Vanilla
|
|
# `patch -p1` errors when its target is already patched, so subsequent
|
|
# reconfigures fail. Wrap the patch invocation with a reverse-dry-run probe
|
|
# so an already-applied patch is treated as success.
|
|
#
|
|
# Usage (from PATCH_COMMAND):
|
|
# ${CMAKE_COMMAND}
|
|
# -DSRC=<SOURCE_DIR>
|
|
# -DPATCH=<absolute path to patch file>
|
|
# -DPATCH_EXE=${PATCH_EXECUTABLE}
|
|
# -P ${CMAKE_CURRENT_LIST_DIR}/apply_patch_idempotent.cmake
|
|
|
|
foreach(_arg SRC PATCH PATCH_EXE)
|
|
if(NOT DEFINED ${_arg} OR "${${_arg}}" STREQUAL "")
|
|
message(FATAL_ERROR "apply_patch_idempotent: -D${_arg}=<value> is required")
|
|
endif()
|
|
endforeach()
|
|
|
|
execute_process(
|
|
COMMAND ${PATCH_EXE} --dry-run --reverse --silent --force -p1 -d ${SRC} -i ${PATCH}
|
|
RESULT_VARIABLE _reverse_check
|
|
OUTPUT_QUIET
|
|
ERROR_QUIET
|
|
)
|
|
|
|
if(_reverse_check EQUAL 0)
|
|
message(STATUS "Patch already applied, skipping: ${PATCH}")
|
|
return()
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${PATCH_EXE} -p1 -d ${SRC} -i ${PATCH}
|
|
RESULT_VARIABLE _apply_result
|
|
)
|
|
|
|
if(NOT _apply_result EQUAL 0)
|
|
message(FATAL_ERROR "Failed to apply patch ${PATCH} (exit ${_apply_result})")
|
|
endif()
|