Skip to content

Commit 4c02e31

Browse files
committed
Ensure generated uninstall script is always executable
1 parent b94590d commit 4c02e31

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

generate_uninstall/CMakeLists.txt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ if (WIN32)
4747
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}" DESTINATION "${UNINSTALL_PROG_DIR}" PERMISSIONS ${UNINSTALL_PERMISSIONS})
4848

4949
add_custom_target (uninstall
50-
COMMAND call "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}"
50+
COMMAND "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}"
5151
)
5252
else ()
5353
install (CODE "
@@ -68,6 +68,28 @@ else ()
6868
OUTPUT_FILE
6969
\"${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}\"
7070
)
71+
72+
# Ensure generated uninstall script has executable permissions.
73+
if (\"${CMAKE_VERSION}\" VERSION_GREATER_EQUAL \"3.19.0\")
74+
file(
75+
CHMOD \"${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}\"
76+
PERMISSIONS
77+
OWNER_READ OWNER_WRITE OWNER_EXECUTE
78+
GROUP_READ GROUP_EXECUTE
79+
WORLD_READ WORLD_EXECUTE
80+
)
81+
else ()
82+
# Workaround lack of file(CHMOD).
83+
file(
84+
COPY \"${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}\"
85+
DESTINATION \"${UNINSTALL_PROG}.d\"
86+
FILE_PERMISSIONS
87+
OWNER_READ OWNER_WRITE OWNER_EXECUTE
88+
GROUP_READ GROUP_EXECUTE
89+
WORLD_READ WORLD_EXECUTE
90+
)
91+
file(RENAME \"${UNINSTALL_PROG}.d/${UNINSTALL_PROG}\" \"${UNINSTALL_PROG}\")
92+
endif ()
7193
")
7294
install (FILES "${CMAKE_CURRENT_BINARY_DIR}/${UNINSTALL_PROG}" DESTINATION "${UNINSTALL_PROG_DIR}" PERMISSIONS ${UNINSTALL_PERMISSIONS})
7395

0 commit comments

Comments
 (0)