From 250a7d0bbe6dd8e7d2e7cba4cc82a2d8cce37cf1 Mon Sep 17 00:00:00 2001 From: Rodney Dawes Date: Mon, 15 Nov 2021 10:47:54 -0500 Subject: [PATCH] Install dark icons via execute_process to use copy command In order to ensure the dark icons are copied over the light icons which are installed into the dark theme for BUG:444095, we need to execute the copy command ourselves rather than using CMake's internal copy mechanism used by the normal install command, so we use CODE mode of install to execute_process and print an appropriate status message. BUG: 445489 --- icons-dark/CMakeLists.txt | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/icons-dark/CMakeLists.txt b/icons-dark/CMakeLists.txt index d14bdba5..40590a8b 100644 --- a/icons-dark/CMakeLists.txt +++ b/icons-dark/CMakeLists.txt @@ -26,10 +26,36 @@ if(NOT WIN32) endif() if(NOT SKIP_INSTALL_ICONS) - install(DIRECTORY ${breeze_icon_dark_dirs} DESTINATION ${BREEZE_INSTALL_DIR}) + # In order to ensure the dark icons are copied over the light icons which + # are installed into the dark theme for BUG:444095, we need to execute the + # copy command ourselves rather than using CMake's internal copy mechanism + # used by the normal install command, so we use CODE mode of install to + # execute_process and print an appropriate status message. + # See https://bugs.kde.org/show_bug.cgi?id=445489 + set(COPY_CMD "cp -a") + set(XCOPY_ARGS "") + if(WIN32) + set(COPY_CMD "xcopy") + set(XCOPY_ARGS "/q /e /y") + endif(WIN32) + install(CODE "cmake_policy(VERSION 3.6) + foreach(CAT_DIR ${breeze_icon_dark_dirs}) + execute_process(COMMAND ${COPY_CMD} \${CAT_DIR} \$ENV{DESTDIR}${BREEZE_INSTALL_DIR} ${XCOPY_ARGS} ERROR_QUIET WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + endforeach() + file(GLOB_RECURSE ICON_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} LIST_DIRECTORIES false ${CMAKE_CURRENT_SOURCE_DIR}/*.svg) + foreach(ICON_FILE IN LISTS ICON_FILES) + message(STATUS \"Installing: \$ENV{DESTDIR}${BREEZE_INSTALL_DIR}/\${ICON_FILE}\") + endforeach()") install(FILES index.theme DESTINATION ${BREEZE_INSTALL_DIR}) if(WITH_ICON_GENERATION) - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated/ DESTINATION ${BREEZE_INSTALL_DIR}) + install(CODE "cmake_policy(VERSION 3.6) + foreach(GEN_DIR ${breeze_icon_dark_dirs}) + execute_process(COMMAND ${COPY_CMD} \${GEN_DIR} \$ENV{DESTDIR}${BREEZE_INSTALL_DIR} ${XCOPY_ARGS} ERROR_QUIET WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/generated) + endforeach() + file(GLOB_RECURSE ICON_FILES RELATIVE ${CMAKE_CURRENT_BINARY_DIR}/generated LIST_DIRECTORIES false ${CMAKE_CURRENT_BINARY_DIR}/generated/*.svg) + foreach(ICON_FILE IN LISTS ICON_FILES) + message(STATUS \"Installing: \$ENV{DESTDIR}${BREEZE_INSTALL_DIR}/\${ICON_FILE}\") + endforeach()") endif() endif() -- GitLab