-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5486 from rouault/cmake_uninstall
CMake: improve 'uninstall' target to uninstall bash completion scripts and python bindings; test in CI (fixes #1446)
- Loading branch information
Showing
4 changed files
with
59 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,50 @@ | ||
if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") | ||
message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") | ||
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") | ||
# install_manifest.txt is created in the top build tree, not the project one | ||
if (NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") | ||
message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_BINARY_DIR@/install_manifest.txt\"") | ||
endif() | ||
|
||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) | ||
string(REGEX REPLACE "\n" ";" files "${files}") | ||
list(REVERSE files) | ||
foreach (file ${files}) | ||
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") | ||
if (EXISTS "$ENV{DESTDIR}${file}") | ||
execute_process( | ||
COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" | ||
OUTPUT_VARIABLE rm_out | ||
RESULT_VARIABLE rm_retval | ||
) | ||
if(NOT ${rm_retval} EQUAL 0) | ||
message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") | ||
endif (NOT ${rm_retval} EQUAL 0) | ||
else (EXISTS "$ENV{DESTDIR}${file}") | ||
message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") | ||
endif (EXISTS "$ENV{DESTDIR}${file}") | ||
endforeach(file) | ||
set(uninstall_file_list "@CMAKE_BINARY_DIR@/install_manifest.txt") | ||
if(EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest_extra.txt") | ||
list(APPEND uninstall_file_list "@CMAKE_CURRENT_BINARY_DIR@/install_manifest_extra.txt") | ||
endif() | ||
if(EXISTS "@CMAKE_CURRENT_BINARY_DIR@/swig/python/record.txt") | ||
list(APPEND uninstall_file_list "@CMAKE_CURRENT_BINARY_DIR@/swig/python/record.txt") | ||
endif() | ||
|
||
foreach (manifest_file IN ITEMS ${uninstall_file_list}) | ||
file(READ "${manifest_file}" files) | ||
string(REGEX REPLACE "\n$" "" files "${files}") | ||
string(REGEX REPLACE "\n" ";" files "${files}") | ||
list(REVERSE files) | ||
foreach (file ${files}) | ||
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") | ||
if (IS_DIRECTORY "$ENV{DESTDIR}${file}") | ||
# Only remove csharp related directories, which are the only ones | ||
# to get in the install_manifest, to avoid doing too dangerous | ||
# removals. | ||
if("${file}" MATCHES "csharp") | ||
execute_process( | ||
COMMAND @CMAKE_COMMAND@ -E remove_directory "$ENV{DESTDIR}${file}" | ||
OUTPUT_VARIABLE rm_out | ||
RESULT_VARIABLE rm_retval | ||
) | ||
if(NOT ${rm_retval} EQUAL 0) | ||
message(STATUS "Problem when removing directory \"$ENV{DESTDIR}${file}\"") | ||
endif() | ||
else() | ||
message(STATUS "Keeping directory \"$ENV{DESTDIR}${file}\".") | ||
endif() | ||
elseif (EXISTS "$ENV{DESTDIR}${file}") | ||
execute_process( | ||
COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" | ||
OUTPUT_VARIABLE rm_out | ||
RESULT_VARIABLE rm_retval | ||
) | ||
if(NOT ${rm_retval} EQUAL 0) | ||
message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") | ||
endif (NOT ${rm_retval} EQUAL 0) | ||
else () | ||
message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") | ||
endif () | ||
endforeach(file) | ||
endforeach() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters