gnucash-docs maint: Ensure our documentation is also found when gnucash is run in KDE
Geert Janssens
gjanssens at code.gnucash.org
Thu Oct 20 05:31:53 EDT 2022
Updated via https://github.com/Gnucash/gnucash-docs/commit/51374741 (commit)
from https://github.com/Gnucash/gnucash-docs/commit/cb0c0a41 (commit)
commit 513747413efc4732f5ae824ccc84316169b1523f
Author: Geert Janssens <geert at kobaltwit.be>
Date: Thu Oct 20 11:25:19 2022 +0200
Ensure our documentation is also found when gnucash is run in KDE
Turns out KDE is not adhering to the xdg spec after all.
It has support for the old ghelp mechanism, but when using
the help: prefix, it falls back to an internal protocol.
In that case the requested document is searched for in
<prefix>/share/doc/HTML/<lang>.
Extra caveat - the English documentation is searched for
in a directory 'en' instead of 'C'.
This is not a problem in yelp, only in khelpcenter. Unfortunately
khelpcenter is the default application to process help: prefixes
in a Kde plasma desktop, hence the workaround.
diff --git a/cmake/AddXdgHelpTarget.cmake b/cmake/AddXdgHelpTarget.cmake
index efbe20f2..f0c800f2 100644
--- a/cmake/AddXdgHelpTarget.cmake
+++ b/cmake/AddXdgHelpTarget.cmake
@@ -10,7 +10,16 @@
function (add_xdghelp_target docname lang entities figures)
- set(BUILD_DIR "${DATADIR_BUILD}/help/${lang}/${docname}")
+ set(BUILD_DIR_BASE "${DATADIR_BUILD}/help/${lang}")
+ set(BUILD_DIR "${BUILD_DIR_BASE}/${docname}")
+
+ # Define location where KDE's help system looks for <doc>
+ # when invoked with help:<doc>
+ set(kde_lang ${lang})
+ if (lang STREQUAL "C")
+ set(kde_lang "en")
+ endif()
+ set(BUILD_DIR_KDE_BASE "${DATADIR_BUILD}/doc/HTML")
set(source_files "")
foreach(xml_file ${entities} index.docbook)
@@ -33,6 +42,10 @@ function (add_xdghelp_target docname lang entities figures)
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_DIR}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_DIR}/figures"
+
+ # Add links to make our documentation visible for KDE's help system
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${BUILD_DIR_KDE_BASE}"
+ COMMAND ${CMAKE_COMMAND} -E create_symlink "${BUILD_DIR_BASE}" "${BUILD_DIR_KDE_BASE}/${kde_lang}"
COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/xdghelptrigger")
@@ -66,10 +79,19 @@ function (add_xdghelp_target docname lang entities figures)
add_dependencies(${docname}-xdghelp "${lang}-${docname}-xdghelp")
+ set(doc_install_dir_base "${CMAKE_INSTALL_DATADIR}/help/${lang}")
+ set(doc_install_dir "${doc_install_dir_base}/${docname}")
install(FILES ${source_files}
- DESTINATION "${CMAKE_INSTALL_DATADIR}/help/${lang}/${docname}"
+ DESTINATION "${doc_install_dir}"
COMPONENT "xdghelp")
install(FILES ${figures}
- DESTINATION "${CMAKE_INSTALL_DATADIR}/help/${lang}/${docname}/figures"
+ DESTINATION "${doc_install_dir}/figures"
+ COMPONENT "xdghelp")
+
+ # Add links to make our documentation visible for KDE's help system
+ set(doc_install_dir_kde_base "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/doc/HTML")
+ install(CODE "execute_process (COMMAND ${CMAKE_COMMAND} -E make_directory \"${doc_install_dir_kde_base}\")"
+ COMPONENT "xdghelp")
+ install(CODE "execute_process (COMMAND ${CMAKE_COMMAND} -E create_symlink \"../../../${doc_install_dir_base}\" \"${doc_install_dir_kde_base}/${kde_lang}\")"
COMPONENT "xdghelp")
endfunction()
Summary of changes:
cmake/AddXdgHelpTarget.cmake | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
More information about the gnucash-changes
mailing list