mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 21:30:01 -05:00
BundleUtilities: do not run install_name_tool on scripts
Use the same approach as commit 08be74bfd7 (GetPrerequisites: Fix
handling of executable scripts, 2018-12-16, v3.14.0-rc1~206^2).
This commit is contained in:
@@ -894,11 +894,16 @@ function(fixup_bundle_item resolved_embedded_item exepath dirs)
|
|||||||
# to install_name_tool:
|
# to install_name_tool:
|
||||||
#
|
#
|
||||||
if(changes)
|
if(changes)
|
||||||
set(cmd ${CMAKE_INSTALL_NAME_TOOL} ${changes} "${resolved_embedded_item}")
|
# Check for a script by extension (.bat,.sh,...) or if the file starts with "#!" (shebang)
|
||||||
execute_process(COMMAND ${cmd} RESULT_VARIABLE install_name_tool_result)
|
file(READ ${resolved_embedded_item} file_contents LIMIT 5)
|
||||||
if(NOT install_name_tool_result EQUAL 0)
|
if(NOT "${resolved_embedded_item}" MATCHES "\\.(bat|c?sh|bash|ksh|cmd)$" AND
|
||||||
string(REPLACE ";" "' '" msg "'${cmd}'")
|
NOT file_contents MATCHES "^#!")
|
||||||
message(FATAL_ERROR "Command failed:\n ${msg}")
|
set(cmd ${CMAKE_INSTALL_NAME_TOOL} ${changes} "${resolved_embedded_item}")
|
||||||
|
execute_process(COMMAND ${cmd} RESULT_VARIABLE install_name_tool_result)
|
||||||
|
if(NOT install_name_tool_result EQUAL 0)
|
||||||
|
string(REPLACE ";" "' '" msg "'${cmd}'")
|
||||||
|
message(FATAL_ERROR "Command failed:\n ${msg}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
include(BundleUtilities)
|
||||||
|
|
||||||
|
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
||||||
|
|
||||||
|
function(check_script script)
|
||||||
|
fixup_bundle_item(${script} ${script} "" "")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Should not throw any errors
|
||||||
|
# Shell script
|
||||||
|
set(script_sh_EMBEDDED_ITEM ${CMAKE_CURRENT_LIST_DIR}/test.app/script.sh)
|
||||||
|
check_script(${CMAKE_CURRENT_LIST_DIR}/test.app/script.sh)
|
||||||
|
# Batch script
|
||||||
|
set(script_bat_EMBEDDED_ITEM ${CMAKE_CURRENT_LIST_DIR}/test.app/script.bat)
|
||||||
|
check_script(${CMAKE_CURRENT_LIST_DIR}/test.app/script.bat)
|
||||||
|
# Shell script without extension
|
||||||
|
set(script_EMBEDDED_ITEM ${CMAKE_CURRENT_LIST_DIR}/test.app/script)
|
||||||
|
check_script(${CMAKE_CURRENT_LIST_DIR}/test.app/script)
|
||||||
@@ -9,3 +9,4 @@ run_cmake(CMP0080-WARN)
|
|||||||
run_cmake_command(CMP0080-COMMAND-OLD ${CMAKE_COMMAND} -DCMP0080_VALUE:STRING=OLD -P ${RunCMake_SOURCE_DIR}/CMP0080-COMMAND.cmake)
|
run_cmake_command(CMP0080-COMMAND-OLD ${CMAKE_COMMAND} -DCMP0080_VALUE:STRING=OLD -P ${RunCMake_SOURCE_DIR}/CMP0080-COMMAND.cmake)
|
||||||
run_cmake_command(CMP0080-COMMAND-NEW ${CMAKE_COMMAND} -DCMP0080_VALUE:STRING=NEW -P ${RunCMake_SOURCE_DIR}/CMP0080-COMMAND.cmake)
|
run_cmake_command(CMP0080-COMMAND-NEW ${CMAKE_COMMAND} -DCMP0080_VALUE:STRING=NEW -P ${RunCMake_SOURCE_DIR}/CMP0080-COMMAND.cmake)
|
||||||
run_cmake_command(CMP0080-COMMAND-WARN ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/CMP0080-COMMAND.cmake)
|
run_cmake_command(CMP0080-COMMAND-WARN ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/CMP0080-COMMAND.cmake)
|
||||||
|
run_cmake_command(ExecutableScripts ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/ExecutableScripts.cmake)
|
||||||
|
|||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Hello World"
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
echo "Hello world"
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Hello World"
|
||||||
Reference in New Issue
Block a user