From efe1527e28ca45d2217d874364a1197de6ec156d Mon Sep 17 00:00:00 2001 From: Sebastian Neubauer Date: Fri, 22 Jul 2022 11:31:20 +0200 Subject: [PATCH] [CMake] Copy folder without permissions Copying the folder keeps the original permissions by default. This creates problems when the source folder is read-only, e.g. in a packaging environment. Then, the copied folder in the build directory is read-only as well. Later on, other files are copied into that directory (in the build tree), failing when the directory is read-only. Fix that problem by copying the folder without keeping the original permissions. Follow-up to D130254. Differential Revision: https://reviews.llvm.org/D130338 --- clang/cmake/modules/CMakeLists.txt | 3 ++- llvm/cmake/modules/CMakeLists.txt | 3 +++ mlir/cmake/modules/CMakeLists.txt | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/clang/cmake/modules/CMakeLists.txt b/clang/cmake/modules/CMakeLists.txt index c6afdab..5d41661 100644 --- a/clang/cmake/modules/CMakeLists.txt +++ b/clang/cmake/modules/CMakeLists.txt @@ -32,7 +32,8 @@ set(CLANG_CONFIG_LLVM_CMAKE_DIR) # For compatibility with projects that include(ClangConfig) # via CMAKE_MODULE_PATH, place API modules next to it. -# Copy without source permissions because the source could be read-only +# Copy without source permissions because the source could be read-only, +# but we need to write into the copied folder. file(COPY . DESTINATION ${clang_cmake_builddir} NO_SOURCE_PERMISSIONS diff --git a/llvm/cmake/modules/CMakeLists.txt b/llvm/cmake/modules/CMakeLists.txt index 42bf5bc..d4453f2 100644 --- a/llvm/cmake/modules/CMakeLists.txt +++ b/llvm/cmake/modules/CMakeLists.txt @@ -99,9 +99,12 @@ set(llvm_config_include_buildtree_only_exports) # For compatibility with projects that include(LLVMConfig) # via CMAKE_MODULE_PATH, place API modules next to it. +# Copy without source permissions because the source could be read-only, +# but we need to write into the copied folder. # This should be removed in the future. file(COPY . DESTINATION ${llvm_cmake_builddir} + NO_SOURCE_PERMISSIONS FILES_MATCHING PATTERN *.cmake PATTERN CMakeFiles EXCLUDE ) diff --git a/mlir/cmake/modules/CMakeLists.txt b/mlir/cmake/modules/CMakeLists.txt index c2407c0..1397055 100644 --- a/mlir/cmake/modules/CMakeLists.txt +++ b/mlir/cmake/modules/CMakeLists.txt @@ -42,9 +42,12 @@ set(MLIR_CONFIG_INCLUDE_DIRS) # For compatibility with projects that include(MLIRConfig) # via CMAKE_MODULE_PATH, place API modules next to it. +# Copy without source permissions because the source could be read-only, +# but we need to write into the copied folder. # This should be removed in the future. file(COPY . DESTINATION ${mlir_cmake_builddir} + NO_SOURCE_PERMISSIONS FILES_MATCHING PATTERN *.cmake PATTERN CMakeFiles EXCLUDE ) -- 2.7.4