Merge pull request #1213 from virtualritz/dev

Fixed FindDocutils.cmake for broken rst2html case.
This commit is contained in:
David G Yu 2021-02-04 14:55:40 -08:00 committed by GitHub
commit 4425a4707d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -32,60 +32,70 @@
find_package(PackageHandleStandardArgs)
find_program( RST2HTML_EXECUTABLE
NAMES
rst2html.py
find_program( RST2HTML_EXECUTABLE
NAMES
rst2html.py
rst2html
DOC
"The Python Docutils reStructuredText HTML converter"
DOC
"The Python Docutils reStructuredText to HTML converter"
)
if (RST2HTML_EXECUTABLE)
set(DOCUTILS_FOUND "YES")
# Note we only check for a python interpreter and use it for the command
# Note we only check for a python interpreter and use it for the command
# on Windows. It would be cleaner if we could agree that this is the
# right way to do it for all platforms, or find a way that works for all
# platforms uniformly.
if (WIN32)
find_package(PythonInterp)
if (NOT PYTHON_EXECUTABLE)
message(FATAL_ERROR "Could not find python interpreter, which is required for Docutils")
message(FATAL_ERROR "Could not find Python interpreter, which is required for Docutils")
endif()
execute_process(COMMAND ${PYTHON_EXECUTABLE} ${RST2HTML_EXECUTABLE} --version OUTPUT_VARIABLE VERSION_STRING )
else()
execute_process(COMMAND ${RST2HTML_EXECUTABLE} --version OUTPUT_VARIABLE VERSION_STRING )
endif()
# find the version
# ex : rst2html (Docutils 0.6 [release], Python 2.6.6, on linux2)
string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" VERSION_TOKENS "${VERSION_STRING}")
# isolate the 3rd. word in the string
list (GET VERSION_TOKENS 2 VERSION_STRING)
# remove white space
string(REGEX REPLACE "[ \t]+$" "" VERSION_STRING ${VERSION_STRING})
string(REGEX REPLACE "^[ \t]+" "" VERSION_STRING ${VERSION_STRING})
set(DOCUTILS_VERSION ${VERSION_STRING})
# The above code may fail to find a version. Which will make the REGEX
# REPLACE below fail and break the build. So we check for an empty
# VERSION_STRING.
if ("${VERSION_STRING}" STREQUAL "")
set(DOCUTILS_FOUND "NO")
else()
set(DOCUTILS_FOUND "YES")
# find the version
# ex : rst2html (Docutils 0.6 [release], Python 2.6.6, on linux2)
string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" VERSION_TOKENS "${VERSION_STRING}")
# isolate the 3rd. word in the string
list (GET VERSION_TOKENS 2 VERSION_STRING)
# remove white space
string(REGEX REPLACE "[ \t]+$" "" VERSION_STRING ${VERSION_STRING})
string(REGEX REPLACE "^[ \t]+" "" VERSION_STRING ${VERSION_STRING})
set(DOCUTILS_VERSION ${VERSION_STRING})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Docutils
REQUIRED_VARS
RST2HTML_EXECUTABLE
VERSION_VAR
DOCUTILS_VERSION
)
mark_as_advanced(
RST2HTML_EXECUTABLE
)
endif()
else()
set(DOCUTILS_FOUND "NO")
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Docutils
REQUIRED_VARS
RST2HTML_EXECUTABLE
VERSION_VAR
DOCUTILS_VERSION
)
mark_as_advanced(
RST2HTML_EXECUTABLE
)