aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Walch <florian@fwalch.com>2015-06-06 12:36:59 +0300
committerFlorian Walch <florian@fwalch.com>2015-06-06 14:29:33 +0300
commit6609a545ad2f56e83af3dde06e66da6c3b9a747a (patch)
tree6cf8e15cad5e10d23973c8a30aba76e0db3e85eb
parent98053f0f9fc3405e48ba3a9089a29fd23b3b414c (diff)
downloadrneovim-6609a545ad2f56e83af3dde06e66da6c3b9a747a.tar.gz
rneovim-6609a545ad2f56e83af3dde06e66da6c3b9a747a.tar.bz2
rneovim-6609a545ad2f56e83af3dde06e66da6c3b9a747a.zip
CMake: Workaround for hanging helptags generation. #2801
Piping input into nvim causes the helptags generation to hang. For example, the following does not work: yes | nvim -c "helptags ." The helptags are generated during installation with a command similar to the one above, using CMake's execute_process to call nvim. As execute_process does not use an intermediate shell, the following will cause the installation to hang: yes | make install pacaur, an Arch Linux package helper, uses a similar command to install packages [1], and thus can currently not be used to install Neovim. This commit adds a workaround to GenerateHelptags.cmake to circumvent this problem. [1] https://github.com/rmarquis/pacaur/blob/22c00a3d05f6504b44dfbc2f3cbd6ab1291e3c9c/pacaur#L825
-rw-r--r--cmake/GenerateHelptags.cmake21
1 files changed, 14 insertions, 7 deletions
diff --git a/cmake/GenerateHelptags.cmake b/cmake/GenerateHelptags.cmake
index d4f4518b9b..bc50db2ca4 100644
--- a/cmake/GenerateHelptags.cmake
+++ b/cmake/GenerateHelptags.cmake
@@ -1,28 +1,35 @@
if(DEFINED ENV{DESTDIR})
file(TO_CMAKE_PATH
- "$ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/share/nvim/runtime/doc"
+ $ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/share/nvim/runtime/doc
HELPTAGS_WORKING_DIRECTORY)
else()
file(TO_CMAKE_PATH
- "${CMAKE_INSTALL_PREFIX}/share/nvim/runtime/doc"
+ ${CMAKE_INSTALL_PREFIX}/share/nvim/runtime/doc
HELPTAGS_WORKING_DIRECTORY)
endif()
message(STATUS "Generating helptags in ${HELPTAGS_WORKING_DIRECTORY}.")
-if(EXISTS "${HELPTAGS_WORKING_DIRECTORY}/")
+if(EXISTS ${HELPTAGS_WORKING_DIRECTORY}/)
message(STATUS "${HELPTAGS_WORKING_DIRECTORY} already exists")
- # if the doc directory already exists, helptags could fail due to duplicate
+ # If the doc directory already exists, helptags could fail due to duplicate
# tags. Tell the user to remove the directory and try again.
- set(TROUBLESHOOTING "\nRemove \"${HELPTAGS_WORKING_DIRECTORY}\" and try again")
+ set(TROUBLESHOOTING "\nRemove \"${HELPTAGS_WORKING_DIRECTORY}\" and try again.")
endif()
+# Workaround for hanging "yes | nvim -c 'helptags ++t .'"
+# and therefore hanging "yes | make install":
+# Set INPUT_FILE to an empty file, causing execute_process
+# to disregard other standard input (such as "yes |").
+set(EMPTY_FILE ${CMAKE_CURRENT_BINARY_DIR}/.GenerateHelptags)
+file(WRITE ${EMPTY_FILE} "")
execute_process(
- COMMAND "${CMAKE_CURRENT_BINARY_DIR}/bin/nvim"
+ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/nvim
-u NONE
-esX
-c "helptags ++t ."
-c quit
- WORKING_DIRECTORY "${HELPTAGS_WORKING_DIRECTORY}"
+ WORKING_DIRECTORY ${HELPTAGS_WORKING_DIRECTORY}
+ INPUT_FILE ${EMPTY_FILE}
OUTPUT_VARIABLE err
ERROR_VARIABLE err
RESULT_VARIABLE res)